OSDN Git Service

*** empty log message ***
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 May 1992 17:49:09 +0000 (17:49 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 May 1992 17:49:09 +0000 (17:49 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@906 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/dbxout.c
gcc/integrate.c

index 3e0de04..38bbd22 100644 (file)
@@ -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;
index 0faf079..cde43fa 100644 (file)
@@ -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: