[Bug tree-optimization/83695] [8 Regression] ICE on valid code at -O3: Segmentation fault
amker at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 9 17:39:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83695
--- Comment #4 from amker at gcc dot gnu.org ---
Given 3-level loop nest: <outer:Loop_1, Loop_2, Loop_3:inner>, the ICE happens
when estimate_numbers_of_iterations called for the outermost Loop_1. The
function tries to infer niter information from all stmts inside the loop. In
this case, the scev_info for variables defined in innermost loop is not updated
in previous interchange.
If I deliberately call estimate_numbers_of_iterations for all loops in nest
before actual interchange, the ICE will be gone. But I am not sure if this is
the only case outdated scev info in inner loops is used.
A full fix would be introducing additional interface cleaning up cached scev
information for variables defined in LOOP from scalar_evolution_info. And call
the interface for interchanged loops. Given interchange executed for only
limited times, I guess that won't be too expensive?
I am testing a patch following the latter method.
More information about the Gcc-bugs
mailing list