mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 09:10:48 +08:00
re PR debug/69077 (omnetpp ICEs with -flto -g)
2016-01-12 Richard Biener <rguenther@suse.de> PR lto/69077 lto/ * lto-symtab.c (lto_symtab_prevailing_virtual_decl): Properly merge TREE_ADDRESSABLE and DECL_POSSIBLY_INLINED flags. * g++.dg/lto/pr69077_0.C: New testcase. * g++.dg/lto/pr69077_1.C: Likewise. From-SVN: r232272
This commit is contained in:
parent
8b1bbf9cd7
commit
3c4e91c903
@ -1,3 +1,9 @@
|
||||
2016-01-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR lto/69077
|
||||
* lto-symtab.c (lto_symtab_prevailing_virtual_decl): Properly
|
||||
merge TREE_ADDRESSABLE and DECL_POSSIBLY_INLINED flags.
|
||||
|
||||
2016-01-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Update copyright years.
|
||||
|
@ -997,6 +997,18 @@ lto_symtab_prevailing_virtual_decl (tree decl)
|
||||
n = n->next_sharing_asm_name;
|
||||
if (n)
|
||||
{
|
||||
/* Merge decl state in both directions, we may still end up using
|
||||
the other decl. */
|
||||
TREE_ADDRESSABLE (n->decl) |= TREE_ADDRESSABLE (decl);
|
||||
TREE_ADDRESSABLE (decl) |= TREE_ADDRESSABLE (n->decl);
|
||||
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||
{
|
||||
/* Merge decl state in both directions, we may still end up using
|
||||
the other decl. */
|
||||
DECL_POSSIBLY_INLINED (n->decl) |= DECL_POSSIBLY_INLINED (decl);
|
||||
DECL_POSSIBLY_INLINED (decl) |= DECL_POSSIBLY_INLINED (n->decl);
|
||||
}
|
||||
lto_symtab_prevail_decl (n->decl, decl);
|
||||
decl = n->decl;
|
||||
}
|
||||
|
@ -1,3 +1,9 @@
|
||||
2016-01-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR lto/69077
|
||||
* g++.dg/lto/pr69077_0.C: New testcase.
|
||||
* g++.dg/lto/pr69077_1.C: Likewise.
|
||||
|
||||
2016-01-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/69175
|
||||
|
14
gcc/testsuite/g++.dg/lto/pr69077_0.C
Normal file
14
gcc/testsuite/g++.dg/lto/pr69077_0.C
Normal file
@ -0,0 +1,14 @@
|
||||
// { dg-lto-do link }
|
||||
// { dg-lto-options { { -O3 -g -flto } } }
|
||||
// { dg-extra-ld-options "-r -nostdlib" }
|
||||
|
||||
struct cStdDev
|
||||
{
|
||||
long ns;
|
||||
virtual double mean() const { return ns; }
|
||||
};
|
||||
|
||||
struct cWeightedStdDev : public cStdDev {
|
||||
virtual int netPack();
|
||||
};
|
||||
int cWeightedStdDev::netPack() { }
|
15
gcc/testsuite/g++.dg/lto/pr69077_1.C
Normal file
15
gcc/testsuite/g++.dg/lto/pr69077_1.C
Normal file
@ -0,0 +1,15 @@
|
||||
struct cStdDev
|
||||
{
|
||||
long ns;
|
||||
virtual double mean() const { return ns; }
|
||||
};
|
||||
|
||||
struct sf
|
||||
{
|
||||
void recordScalar(double value);
|
||||
cStdDev eedStats;
|
||||
virtual void finish();
|
||||
};
|
||||
void sf::finish() {
|
||||
recordScalar(eedStats.mean());
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user