diff options
author | jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-03-21 12:59:35 +0000 |
---|---|---|
committer | jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-03-21 12:59:35 +0000 |
commit | fa4052b343d0013312ab14f0b67ed171c88579fc (patch) | |
tree | 9a7d70708594301be7def95ae86b5e51f4577ef8 /gcc/testsuite/g++.dg/ipa | |
parent | 95d0bdb9b19503fcd85591b7bca82a0e32413c09 (diff) | |
download | gcc-fa4052b343d0013312ab14f0b67ed171c88579fc.tar.gz |
2014-03-21 Martin Jambor <mjambor@suse.cz>
PR ipa/59176
* cgraph.h (symtab_node): New flag body_removed.
* ipa.c (symtab_remove_unreachable_nodes): Set body_removed flag
when removing bodies.
* symtab.c (dump_symtab_base): Dump body_removed flag.
* cgraph.c (verify_edge_corresponds_to_fndecl): Skip nodes which
had their bodies removed.
testsuite/
* g++.dg/torture/pr59176.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208748 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg/ipa')
-rw-r--r-- | gcc/testsuite/g++.dg/ipa/pr59176.C | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ipa/pr59176.C b/gcc/testsuite/g++.dg/ipa/pr59176.C new file mode 100644 index 00000000000..d576bc3ba5a --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr59176.C @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +template <class> class A { +protected: + void m_fn2(); + ~A() { m_fn2(); } + virtual void m_fn1(); +}; + +class D : A<int> {}; +template <class Key> void A<Key>::m_fn2() { + m_fn1(); + m_fn1(); + m_fn1(); +} + +#pragma interface +class B { + D m_cellsAlreadyProcessed; + D m_cellsNotToProcess; + +public: + virtual ~B() {} + void m_fn1(); +}; + +class C { + unsigned long m_fn1(); + B m_fn2(); + unsigned long m_fn3(); +}; +unsigned long C::m_fn1() { +CellHierarchy: + m_fn2().m_fn1(); +} + +unsigned long C::m_fn3() { +CellHierarchy: + m_fn2().m_fn1(); +} |