OSDN Git Service

PR other/37265
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Sep 2008 23:57:41 +0000 (23:57 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Sep 2008 23:57:41 +0000 (23:57 +0000)
* dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
splay tree lookup.
(dw2_output_indirect_constant_1): Use unstripped name in symbol
reference.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140183 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dwarf2asm.c

index bc784a6..7178941 100644 (file)
@@ -1,3 +1,11 @@
+2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR other/37265
+       * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
+       splay tree lookup.
+       (dw2_output_indirect_constant_1): Use unstripped name in symbol
+       reference.
+
 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
 
        * doc/invoke.texi (ARM Options): Correct errors in discussion 
index 9ae9420..e490b34 100644 (file)
@@ -807,7 +807,7 @@ rtx
 dw2_force_const_mem (rtx x, bool is_public)
 {
   splay_tree_node node;
-  const char *str;
+  const char *key;
   tree decl;
 
   if (! indirect_pool)
@@ -817,13 +817,14 @@ dw2_force_const_mem (rtx x, bool is_public)
 
   gcc_assert (GET_CODE (x) == SYMBOL_REF);
 
-  str = targetm.strip_name_encoding (XSTR (x, 0));
-  node = splay_tree_lookup (indirect_pool, (splay_tree_key) str);
+  key = XSTR (x, 0);
+  node = splay_tree_lookup (indirect_pool, (splay_tree_key) key);
   if (node)
     decl = (tree) node->value;
   else
     {
       tree id;
+      const char *str = targetm.strip_name_encoding (key);
 
       if (is_public && USE_LINKONCE_INDIRECT)
        {
@@ -856,7 +857,7 @@ dw2_force_const_mem (rtx x, bool is_public)
       if (id)
        TREE_SYMBOL_REFERENCED (id) = 1;
 
-      splay_tree_insert (indirect_pool, (splay_tree_key) str,
+      splay_tree_insert (indirect_pool, (splay_tree_key) key,
                         (splay_tree_value) decl);
     }
 
@@ -877,6 +878,7 @@ dw2_output_indirect_constant_1 (splay_tree_node node,
   sym = (const char *) node->key;
   decl = (tree) node->value;
   sym_ref = gen_rtx_SYMBOL_REF (Pmode, sym);
+  sym = targetm.strip_name_encoding (sym);
   if (TREE_PUBLIC (decl) && USE_LINKONCE_INDIRECT)
     fprintf (asm_out_file, "\t.hidden %sDW.ref.%s\n", user_label_prefix, sym);
   assemble_variable (decl, 1, 1, 1);