aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-05-05 10:49:09 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-05-05 10:49:09 -0700
commitf543676f57d8e673581b79409b706c377064ff59 (patch)
tree6472c8597e2f11fc8af317b3e16ebdd6c283a7e7
parent6f90e075cd97143f441aa787926250a780482fe0 (diff)
downloadgcc-f543676f57d8e673581b79409b706c377064ff59.zip
gcc-f543676f57d8e673581b79409b706c377064ff59.tar.gz
gcc-f543676f57d8e673581b79409b706c377064ff59.tar.bz2
*** empty log message ***
From-SVN: r906
-rw-r--r--gcc/dbxout.c2
-rw-r--r--gcc/integrate.c19
2 files changed, 20 insertions, 1 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 3e0de04..38bbd22 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -1519,7 +1519,7 @@ dbxout_symbol (decl, local)
{
current_sym_addr = XEXP (DECL_RTL (decl), 0);
- letter = TREE_PERMANENT (decl) ? 'S' : 'V';
+ letter = decl_function_context (decl) ? 'V' : 'S';
if (!DECL_INITIAL (decl))
current_sym_code = N_LCSYM;
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 0faf079..cde43fa 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1875,7 +1875,26 @@ copy_rtx_and_substitute (orig, map)
case PC:
case CC0:
case CONST_INT:
+ return orig;
+
case SYMBOL_REF:
+ /* Symbols which represent the address of a label stored in the constant
+ pool must be modified to point to a constant pool entry for the
+ remapped label. Otherwise, symbols are returned unchanged. */
+ if (CONSTANT_POOL_ADDRESS_P (orig))
+ {
+ rtx constant = get_pool_constant (orig);
+ if (GET_CODE (constant) == LABEL_REF)
+ {
+ copy = rtx_alloc (LABEL_REF);
+ PUT_MODE (copy, mode);
+ XEXP (copy, 0)
+ = map->label_map[CODE_LABEL_NUMBER (XEXP (constant, 0))];
+ LABEL_OUTSIDE_LOOP_P (copy) = LABEL_OUTSIDE_LOOP_P (orig);
+ copy = force_const_mem (Pmode, copy);
+ return XEXP (copy, 0);
+ }
+ }
return orig;
case CONST_DOUBLE: