aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-11-08 14:57:47 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2018-11-08 14:57:47 +0000
commit67124cb62dd566664aa53183821957fa97b27e54 (patch)
tree9cd4ec578ca89d0ce79be9d3528d1b03b49e0144 /gcc
parent212755ff9137bcd3975e02f4936c96bdb7eaf709 (diff)
downloadgcc-67124cb62dd566664aa53183821957fa97b27e54.zip
gcc-67124cb62dd566664aa53183821957fa97b27e54.tar.gz
gcc-67124cb62dd566664aa53183821957fa97b27e54.tar.bz2
re PR middle-end/87916 (ICE in dwarf2out_abstract_function, at dwarf2out.c:22479 since r264943)
PR middle-end/87916 * cgraphclones.c (duplicate_thunk_for_node): Also set DECL_IGNORED_P. From-SVN: r265916
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cgraphclones.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/other/pr87916.C45
4 files changed, 58 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 46efe5d..c83df0b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR middle-end/87916
+ * cgraphclones.c (duplicate_thunk_for_node): Also set DECL_IGNORED_P.
+
2018-11-08 David Malcolm <dmalcolm@redhat.com>
* cgraph.c: Include "selftest.h".
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index e17959c..0fbc7a9 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -321,6 +321,10 @@ duplicate_thunk_for_node (cgraph_node *thunk, cgraph_node *node)
"artificial_thunk");
SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
+ /* We need to force DECL_IGNORED_P because the new thunk is created after
+ early debug was run. */
+ DECL_IGNORED_P (new_decl) = 1;
+
new_thunk = cgraph_node::create (new_decl);
set_new_clone_decl_and_node_flags (new_thunk);
new_thunk->definition = true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f6c36f3..63019e1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2018-11-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/other/pr87916.C: New test.
+
2018-11-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/87929
diff --git a/gcc/testsuite/g++.dg/other/pr87916.C b/gcc/testsuite/g++.dg/other/pr87916.C
new file mode 100644
index 0000000..5c69478
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/pr87916.C
@@ -0,0 +1,45 @@
+// PR middle-end/87916
+// Testcase by Martin Liška <marxin@gcc.gnu.org>
+
+// { dg-do compile }
+// { dg-options "-O2 -g" }
+// { dg-additional-options "-fPIC" { target fpic } }
+
+struct a {
+ virtual ~a();
+};
+template <typename b> class c {
+public:
+ class d {
+ public:
+ d(c);
+ b *operator->();
+ };
+};
+int e, f;
+class g {
+public:
+ class h {
+ public:
+ virtual void j(g &, int &, bool) = 0;
+ };
+ c<h> k();
+ int *l();
+ int *m();
+};
+int *g::l() try {
+ for (c<h>::d i(k());;)
+ i->j(*this, e, true);
+} catch (int) {
+ return 0;
+}
+int *g::m() try {
+ for (c<h>::d i(k());;)
+ i->j(*this, f, false);
+} catch (int) {
+ return 0;
+}
+struct n : a, g::h {
+ void o();
+ void j(g &, int &, bool) { o(); }
+};