SuccessChanges

Summary

  1. Revert f0c2a5a "[LV] Generalize conditions for sinking instrs for first (details)
Commit eaff3004019f97c64c88ab76da6b25106b659b30 by hans
Revert f0c2a5a "[LV] Generalize conditions for sinking instrs for first
order recurrences."
It broke Chromium, causing "Instruction does not dominate all uses!"
errors. See
https://bugs.chromium.org/p/chromium/issues/detail?id=1022297#c1 for a
reproducer.
> If the recurrence PHI node has a single user, we can sink any
> instruction without side effects, given that all users are dominated
by
> the instruction computing the incoming value of the next iteration
> ('Previous'). We can sink instructions that may cause traps, because
> that only causes the trap to occur later, but not on any new paths.
>
> With the relaxed check, we also have to make sure that we do not have
a
> direct cycle (meaning PHI user == 'Previous), which indicates a
> reduction relation, which potentially gets missed by
> ReductionDescriptor.
>
> As follow-ups, we can also sink stores, iff they do not alias with
> other instructions we move them across and we could also support
sinking
> chains of instructions and multiple users of the PHI.
>
> Fixes PR43398.
>
> Reviewers: hsaito, dcaballe, Ayal, rengolin
>
> Reviewed By: Ayal
>
> Differential Revision: https://reviews.llvm.org/D69228
The file was modifiedllvm/lib/Analysis/IVDescriptors.cpp
The file was removedllvm/test/Transforms/LoopVectorize/first-order-recurrence-complex.ll