aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-02-08 11:00:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-02-08 11:00:26 +0000
commit0375167b6c15a60dc2b974b2654a8ff1dbe7160a (patch)
tree81c148d9e2f62306dffd098afe34e256d86ec31e /gcc/testsuite
parent85d768f349087f3766ff84054ec7b3403c52ac7a (diff)
downloadgcc-0375167b6c15a60dc2b974b2654a8ff1dbe7160a.zip
gcc-0375167b6c15a60dc2b974b2654a8ff1dbe7160a.tar.gz
gcc-0375167b6c15a60dc2b974b2654a8ff1dbe7160a.tar.bz2
re PR rtl-optimization/56181 (ICE in verify_loop_structure, at cfgloop.c:1581 with -ftracer)
2013-02-08 Richard Biener <rguenther@suse.de> PR middle-end/56181 * cfgloop.h (flow_loops_find): Adjust. (bb_loop_header_p): Declare. * cfgloop.c (bb_loop_header_p): New function split out from ... (flow_loops_find): ... here. Adjust function signature, support incremental loop structure update. (verify_loop_structure): Cleanup. Verify a loop is a loop. * cfgloopmanip.c (fix_loop_structure): Move ... * loop-init.c (fix_loop_structure): ... here. (apply_loop_flags): Split out from ... (loop_optimizer_init): ... here. (fix_loop_structure): Use apply_loop_flags. Use flow_loops_find in incremental mode, only remove dead loops here. * gcc.dg/torture/pr56181.c: New testcase. From-SVN: r195879
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr56181.c25
2 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c12303d..2dcd876 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56181
+ * gcc.dg/torture/pr56181.c: New testcase.
+
2013-02-08 Georg-Johann Lay <avr@gjlay.de>
PR target/54222
diff --git a/gcc/testsuite/gcc.dg/torture/pr56181.c b/gcc/testsuite/gcc.dg/torture/pr56181.c
new file mode 100644
index 0000000..c382b29
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr56181.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-ftracer" } */
+
+int a, b;
+
+void f(void)
+{
+ if(a++)
+ {
+ for(a = 0; a < 1;)
+ {
+ for(b = 0; b < 1; b++)
+ {
+ while(a++ < 0);
+lbl:
+ ;
+ }
+
+ if(a)
+ goto lbl;
+ }
+
+ goto lbl;
+ }
+}