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
This commit is contained in:
Jakub Jelinek 2008-09-02 12:33:46 +02:00 committed by Jakub Jelinek
parent 900e887f6d
commit 1aeaf0f764
4 changed files with 40 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2008-09-02 Jakub Jelinek <jakub@redhat.com>
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.
2008-09-01 Paul Brook <paul@codesourcery.com>
* doc/invoke.texi: Document -mword-relocations.

View File

@ -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;
}

View File

@ -1,3 +1,8 @@
2008-09-02 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/37095
* g++.dg/inherit/thunk9.C: New test.
2008-09-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/37228

View File

@ -0,0 +1,14 @@
// PR tree-optimization/37095
// { dg-options "-O" }
struct A
{
virtual A *foo ();
};
struct B : virtual A
{
virtual B *foo () { return 0; }
};
B b;