aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2016-11-25 10:49:19 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2016-11-25 10:49:19 +0100
commit54e606f0b1c03b03538a467d4af3e43b201c05d7 (patch)
tree3b1a2809aaf126f4e40aafdb39a8c973ffecc23d /gcc
parent2dbe91cff11ddb92c27ca79c49c111941205c91f (diff)
downloadgcc-54e606f0b1c03b03538a467d4af3e43b201c05d7.zip
gcc-54e606f0b1c03b03538a467d4af3e43b201c05d7.tar.gz
gcc-54e606f0b1c03b03538a467d4af3e43b201c05d7.tar.bz2
[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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/passes.def1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/pr70965.C21
4 files changed, 32 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0878c30..1b18a47 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/passes.def b/gcc/passes.def
index 2a470a7..b730009 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e710e4b..a345e9c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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>
diff --git a/gcc/testsuite/g++.dg/pr70965.C b/gcc/testsuite/g++.dg/pr70965.C
new file mode 100644
index 0000000..d8a2c35
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr70965.C
@@ -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); }