OSDN Git Service

If a symbol ref is in the constant pool, use the pool's version of the symbol instead.
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Jan 2002 06:52:57 +0000 (06:52 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Jan 2002 06:52:57 +0000 (06:52 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48625 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dbxout.c

index cfff169..ad31deb 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-08  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * dbxout.c (dbxout_symbol_location): If a symbol ref is in the
+       constant pool, use the pool's version of the symbol instead.
+
 2002-01-07  Richard Henderson  <rth@redhat.com>
 
        * regrename.c (find_oldest_value_reg): Ignore the value chain if
index 2ee877d..00a1582 100644 (file)
@@ -2164,6 +2164,20 @@ dbxout_symbol_location (decl, type, suffix, home)
            current_sym_code = DBX_STATIC_CONST_VAR_CODE;
          else
            {
+             /* Some ports can transform a symbol ref into a label ref,
+                because the symbol ref is too far away and has to be
+                dumped into a constant pool.  Alternatively, the symbol
+                in the constant pool might be referenced by a different
+                symbol.  */
+             if (GET_CODE (current_sym_addr) == SYMBOL_REF
+                 && CONSTANT_POOL_ADDRESS_P (current_sym_addr))
+               {
+                 rtx tmp = get_pool_constant (current_sym_addr);
+
+                 if (GET_CODE (tmp) == SYMBOL_REF)
+                   current_sym_addr = tmp;
+               }
+  
              /* Ultrix `as' seems to need this.  */
 #ifdef DBX_STATIC_STAB_DATA_SECTION
              data_section ();