You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[LICM][MustExec] Make must-exec logic for IV condition commutative
MustExec has special logic to determine whether the first loop
iteration will always be executed, by simplifying the IV comparison
with the start value. Currently, this code assumes that the IV is
on the LHS of the comparison, but this is not guaranteed. Make sure
it handles the commuted variant as well.
The changed PhaseOrdering test previously performed peeling to
make the loads dereferenceable -- as a side effect, this also
reduced the exit count by one, avoiding the awkward <= MAX case.
Now we know up-front the the loads are dereferenceable and can
be simply hoisted. As such, we retain the original exit count
and now have to handle it by widening the exit count calculation to
i128. This is a regression, but at least it preserves the
vectorization, which was the original goal. I'm not sure what else
can be done about that test.
0 commit comments