[Bug tree-optimization/79575] [7 Regression] ICE in mark_stmt_if_obviously_necessary, at tree-ssa-dce.c:270
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 20 17:50:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79575
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2017-02-20
CC| |jakub at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, what happens is that vect_transform_loop calls
6811 epilogue = vect_do_peeling (loop_vinfo, niters, nitersm1,
&niters_vector, th,
6812 check_profitability, niters_no_overflow);
which creates the epilogue loop, and then we on that epilogue loop call
vect_transform_loop which calls vect_do_peeling again. That looks very weird,
I'd have expected that there shouldn't be any further peeling on the epilogue.
The patch posted on 2016-11-24 had some early return if the current loop is the
masked one, but that hasn't been applied.
Or, if the peeling of the epilogue loop is needed, we need to be more careful
on where the guard condition is inserted, because right now it is inserted into
the same guard_bb that an earlier condition has been added for the original
loop (which is why we end up with control stmts inside of bb).
More information about the Gcc-bugs
mailing list