[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