[Bug tree-optimization/88148] [9 Regression] ICE in tree_nop_conversion_p at gcc/tree.c:12550 since r264273
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 22 10:47:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88148
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the issue is that VN done after unrolling removes SSA defs that are still
referenced from loop->nb_iterations. CFG cleanup makes sure to update
it when doing replace_uses_by (which is a quite expensive operation!).
VN doesn't do anything like that. For regions, when we are in loop-closed SSA
form we would know which loops to eventually update. When we are not
in loop-closed SSA the affected loops are all downstream ones (blowing
away the region-VN complexity guarantees). niter "uses" do not count towards
SSA uses.
We cannot easily substitute into loop info during eliminate_cleanup since
we need to substitute available names. We could in theory substitute into
loop info during the main VN walk where we perform region elimination
when we visit a loop header. But we'd have to eliminate a GENERIC tree
here... There is already a helper besides substitute_in_loop_info, namely
the specific simplify_replace_tree which we could outfit with a valueization
hook rather than a 1:1 name/value pair.
Let me see if I can cook up sth like that.
More information about the Gcc-bugs
mailing list