diff options
author | Richard Biener <rguenther@suse.de> | 2013-02-08 11:00:26 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-02-08 11:00:26 +0000 |
commit | 0375167b6c15a60dc2b974b2654a8ff1dbe7160a (patch) | |
tree | 81c148d9e2f62306dffd098afe34e256d86ec31e /gcc/testsuite | |
parent | 85d768f349087f3766ff84054ec7b3403c52ac7a (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr56181.c | 25 |
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;
+ }
+}
|