diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-09-02 12:33:46 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-09-02 12:33:46 +0200 |
commit | 1aeaf0f764b0be261e12be19f8b73977440994cb (patch) | |
tree | 429456a11bd954fe29706c1e6896e3981d44fd2a /gcc/cgraph.c | |
parent | 900e887f6d2dd21c118f5de7cbcf3d56173a02a7 (diff) | |
download | gcc-1aeaf0f764b0be261e12be19f8b73977440994cb.zip gcc-1aeaf0f764b0be261e12be19f8b73977440994cb.tar.gz gcc-1aeaf0f764b0be261e12be19f8b73977440994cb.tar.bz2 |
re PR tree-optimization/37095 (Trouble with covariant return)
PR tree-optimization/37095
* cgraph.c (cgraph_node): When creating new cgraph node after
assembler_name_hash has been populated, record it in the hash
table.
* g++.dg/inherit/thunk9.C: New test.
From-SVN: r139887
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index fdc156d..54d5fad 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -453,7 +453,21 @@ cgraph_node (tree decl) node->origin->nested = node; node->master_clone = node; } - + if (assembler_name_hash) + { + void **aslot; + tree name = DECL_ASSEMBLER_NAME (decl); + + aslot = htab_find_slot_with_hash (assembler_name_hash, name, + decl_assembler_name_hash (name), + INSERT); + /* We can have multiple declarations with same assembler name. For C++ + it is __builtin_strlen and strlen, for instance. Do we need to + record them all? Original implementation marked just first one + so lets hope for the best. */ + if (*aslot == NULL) + *aslot = node; + } return node; } |