[all-commits] [llvm/llvm-project] eaff30: Revert f0c2a5a "[LV] Generalize conditions for sin...
Hans via All-commits
all-commits at lists.llvm.org
Thu Nov 7 02:05:08 PST 2019
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: eaff3004019f97c64c88ab76da6b25106b659b30
https://github.com/llvm/llvm-project/commit/eaff3004019f97c64c88ab76da6b25106b659b30
Author: Hans Wennborg <hans at chromium.org>
Date: 2019-11-07 (Thu, 07 Nov 2019)
Changed paths:
M llvm/lib/Analysis/IVDescriptors.cpp
R llvm/test/Transforms/LoopVectorize/first-order-recurrence-complex.ll
Log Message:
-----------
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
More information about the All-commits
mailing list