Summary: | [3.3 Regression] error in flow_loops_find when -funroll-loops active | ||
---|---|---|---|
Product: | gcc | Reporter: | Remi Mommsen <Remigius.Mommsen> |
Component: | rtl-optimization | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gcc-bugs, jh, rth |
Priority: | P2 | Keywords: | ice-on-valid-code |
Version: | 3.3 | ||
Target Milestone: | 3.3.3 | ||
Host: | powerpc-apple-darwin6.6 | Target: | |
Build: | powerpc-apple-darwin6.6 | Known to work: | |
Known to fail: | Last reconfirmed: | 2003-07-18 21:21:33 |
Description
Remi Mommsen
2003-07-10 21:16:54 UTC
The unroller has been rewritten for 3.4 and I cannot reproduce it on the mainline (20030708) but then the unroller is still useless on the mainline for the PowerPC. I had ment to mark this as 3.3 only as I could not reproduce this on the mainline. I can confirm this in 3.3.1 (20030714). I have not checked other versions yet. I just tried it in 3.2.3, it compiled just fine so this is a regression. The regression in PR 11496 was introduced or exposed by this patch: --- gcc/gcc/ChangeLog --- Wed Jul 18 18:46:30 CEST 2001 Richard Henderson <rth@cygnus.com> Jan Hubicka <jh@suse.cz> * flow.c (redirect_edge_and_branch): Bail out on complex edges. (try_optimize_cfg): Do not remove tail recursive labels before sibcall. * jump.c (mark_jump_label): Do not forward branches. The regression hunt took place on i686-pc-linux-gnu using a native compiler (the bug isn't specific to powerpc) to compile the submitter's test case with "-O2 -funroll-loops". Postponed until GCC 3.3.3. The regression reported in PR 11496 still exists on the 3.3-branch, but its test case passes for mainline starting with this patch: 2003-03-08 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> * gcse.c (bypass_block, bypass_conditional_jumps): Do not create irreducible loops. * loop-unroll.c (unroll_loop_runtime_iterations): Update irreducible loops info correctly. Roger Sayle asked me to run this regression hunt, which took place on i686-pc-linux-gnu using the same test as the hunt that found the breakage, to determine whether a fix can be ported to the branch. Very many thanks to Janice for identifing the patch to the 3.3 branch that appears to have resolved this issue: 2003-10-03 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> PR/11883 * cfgloop.c (flow_loops_find): Fix handling of abnormal edges. Given that PR optimization/11883 was also an ICE in flow_loops_find, it looks like this problem was a duplicate, and was correctly fixed by Zdenek's change. Given I'm currently unable to reproduce this failure against either the current 3.3 branch or mainline (though I can with gcc 3.3.1), I'm closing this PR as fixed resolved. Many thanks again to Zdenek and Janice. |