[PR 70965] Schedule extra rebuild_cgraph_edges

2016-11-25  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/70965
	* passes.def (pass_build_ssa_passes): Add pass_rebuild_cgraph_edges.

gcc/testsuite/
	* g++.dg/pr70965.C: New test.

From-SVN: r242867
This commit is contained in:
Martin Jambor 2016-11-25 10:49:19 +01:00 committed by Martin Jambor
parent 2dbe91cff1
commit 54e606f0b1
4 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2016-11-25 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/70965
* passes.def (pass_build_ssa_passes): Add pass_rebuild_cgraph_edges.
2016-11-24 James Greenahlgh <james.greenhalgh@arm.com>
PR target/78509

View File

@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_build_ssa_passes);
PUSH_INSERT_PASSES_WITHIN (pass_build_ssa_passes)
NEXT_PASS (pass_fixup_cfg);
NEXT_PASS (pass_rebuild_cgraph_edges);
NEXT_PASS (pass_build_ssa);
NEXT_PASS (pass_warn_nonnull_compare);
NEXT_PASS (pass_ubsan);

View File

@ -1,3 +1,8 @@
2016-11-25 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/70965
* g++.dg/pr70965.C: New test.
2016-11-25 Jakub Jelinek <jakub@redhat.com>
Andreas Schwab <schwab@linux-m68k.org>

View File

@ -0,0 +1,21 @@
/* { dg-do compile } */
/* { dg-options "-O2 -std=c++11" } */
struct A {};
struct B {};
struct C { using p = int *; template <typename> using ra = A; };
struct J : C { template <typename> struct K { typedef C::ra<int> o; }; };
template <typename> struct D
{
struct H : J::K<int>::o { H (J::p, A) : J::K<int>::o () {} };
H d;
D (const char *, const A &x = A ()) : d (0, x) {}
};
extern template class D<char>;
enum L { M };
struct F { virtual char *foo (); };
template <class> struct I : B { static int foo (int) {} };
struct G { typedef I<int> t; };
void foo (int) { G::t::foo (0); }
void bar (const D<char> &, const D<int> &, int, L);
void baz () try { foo (0); } catch (F &e) { bar (e.foo (), "", 0, M); }