aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2006-05-20 22:35:02 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2006-05-20 15:35:02 -0700
commit7e2fe9d8a171c50b39b985fb0f9d9721f4f42656 (patch)
tree9ae8d54e49e1bd1ea366d26f5cfdeb46a7893f20
parent0323103130bfbabe742046a857737ae6bcc5dc4c (diff)
downloadgcc-7e2fe9d8a171c50b39b985fb0f9d9721f4f42656.zip
gcc-7e2fe9d8a171c50b39b985fb0f9d9721f4f42656.tar.gz
gcc-7e2fe9d8a171c50b39b985fb0f9d9721f4f42656.tar.bz2
re PR middle-end/25776 (ICE in cgraph after error at -O1 and above)
2006-05-20 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/25776 * cgraphunit.c (cgraph_optimize): Don't run ipa passes if error or sorry count is non zero. 2006-05-20 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/25776 * g++.dg/other/error11.C: New test. From-SVN: r113941
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraphunit.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/other/error11.C17
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7deb475..f05e632 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-20 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR middle-end/25776
+ * cgraphunit.c (cgraph_optimize): Don't run ipa passes if error
+ or sorry count is non zero.
+
2006-05-20 Andreas Schwab <schwab@suse.de>
* config/pa/pa-linux.h (STRING_ASM_OP): Prepend and append a tab.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 5ff4fff..44b3d4f 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1410,7 +1410,11 @@ cgraph_optimize (void)
fprintf (cgraph_dump_file, "Marked ");
dump_cgraph (cgraph_dump_file);
}
- ipa_passes ();
+
+ /* Don't run the IPA passes if there was any error or sorry messages. */
+ if (errorcount == 0 && sorrycount == 0)
+ ipa_passes ();
+
/* This pass remove bodies of extern inline functions we never inlined.
Do this later so other IPA passes see what is really going on. */
cgraph_remove_unreachable_nodes (false, dump_file);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 10b3a7d..d558ee2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-20 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR middle-end/25776
+ * g++.dg/other/error11.C: New test.
+
2006-05-20 Richard Sandiford <richard@codesourcery.com>
* gcc.target/mips/pr26765.c: Add -w to options.
diff --git a/gcc/testsuite/g++.dg/other/error11.C b/gcc/testsuite/g++.dg/other/error11.C
new file mode 100644
index 0000000..d8a641c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/error11.C
@@ -0,0 +1,17 @@
+/* { dg-options "-O1" } */
+struct A
+{
+ ERROR; /* { dg-error "ERROR" } */
+ ~A();
+};
+
+struct B
+{
+ virtual ~B();
+};
+
+struct C : B, A {};
+
+struct D : C {};
+
+D d;