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 for a
> If the recurrence PHI node has a single user, we can sink any
> instruction without side effects, given that all users are dominated
> 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
> 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
> chains of instructions and multiple users of the PHI.
> Fixes PR43398.
> Reviewers: hsaito, dcaballe, Ayal, rengolin
> Reviewed By: Ayal
> Differential Revision:
The file was modifiedllvm/lib/Analysis/IVDescriptors.cpp
The file was removedllvm/test/Transforms/LoopVectorize/first-order-recurrence-complex.ll