[Bug tree-optimization/87465] [8/9 Regression] Loop removal regression
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Oct 1 09:08:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87465
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-09-29
Target Milestone|9.0 |8.3
Ever confirmed|0 |1
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Agreed. Note we do have such brute-forcing but only quite limited with
loop_niter_by_eval ().
Note that with -funroll-loops (or -O3) we peel the innermost loop
but then
Not unrolling loop 1: number of branches on hot path in the unrolled sequence
reaches --param max-peel-branches limit.
But I have a simple fix for the testcase...
Index: gcc/tree-ssa-loop-ivcanon.c
===================================================================
--- gcc/tree-ssa-loop-ivcanon.c (revision 264734)
+++ gcc/tree-ssa-loop-ivcanon.c (working copy)
@@ -368,8 +368,8 @@ tree_estimate_loop_size (struct loop *lo
size->non_call_stmts_on_hot_path++;
if (((gimple_code (stmt) == GIMPLE_COND
&& (!constant_after_peeling (gimple_cond_lhs (stmt), stmt,
loop)
- || constant_after_peeling (gimple_cond_rhs (stmt), stmt,
- loop)))
+ || !constant_after_peeling (gimple_cond_rhs (stmt), stmt,
+ loop)))
|| (gimple_code (stmt) == GIMPLE_SWITCH
&& !constant_after_peeling (gimple_switch_index (
as_a <gswitch *> (stmt)),
More information about the Gcc-bugs
mailing list