diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2008-09-09 23:57:41 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2008-09-09 23:57:41 +0000 |
commit | a26495282ef7adf3dd8ee3f5fc18149883e52e68 (patch) | |
tree | 78c9d9a49b46d8a9f3fe052907848735b90187cf | |
parent | 05665c0620a279b1558d4b6a4ae2e45b80d8cf15 (diff) | |
download | gcc-a26495282ef7adf3dd8ee3f5fc18149883e52e68.zip gcc-a26495282ef7adf3dd8ee3f5fc18149883e52e68.tar.gz gcc-a26495282ef7adf3dd8ee3f5fc18149883e52e68.tar.bz2 |
re PR other/37265 (mt_allocator.cc:646: ICE: in gt_ggc_m_S, at ggc-page.c:1281)
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.
From-SVN: r140183
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/dwarf2asm.c | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc784a6..7178941 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index 9ae9420..e490b34 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -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); |