Files
Roman Shirokiy 42f7ad099a [LV] Fix PR36983. For a given recurrence, fix all phis in exit block
There could be more than one PHIs in exit block using same loop recurrence.
Don't assume there is only one and fix each user.

Differential Revision: https://reviews.llvm.org/D47788


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334271 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-08 08:21:20 +00:00

25 lines
908 B
LLVM

; RUN: opt < %s -loop-vectorize -S | FileCheck %s
; There could be more than one LCSSA PHIs in loop exit block.
; CHECK-LABEL: bb1.bb3_crit_edge:
; CHECK: %_tmp133.lcssa1 = phi i16 [ %scalar.recur, %bb2 ], [ %vector.recur.extract.for.phi, %middle.block ]
; CHECK: %_tmp133.lcssa = phi i16 [ %scalar.recur, %bb2 ], [ %vector.recur.extract.for.phi, %middle.block ]
define void @f1() {
bb2.lr.ph:
br label %bb2
bb2: ; preds = %bb2, %bb2.lr.ph
%_tmp132 = phi i16 [ 0, %bb2.lr.ph ], [ %_tmp10, %bb2 ]
%_tmp133 = phi i16 [ undef, %bb2.lr.ph ], [ %_tmp10, %bb2 ]
%_tmp10 = sub nsw i16 %_tmp132, 1
%_tmp15 = icmp ne i16 %_tmp10, 0
br i1 %_tmp15, label %bb2, label %bb1.bb3_crit_edge
bb1.bb3_crit_edge: ; preds = %bb2
%_tmp133.lcssa1 = phi i16 [ %_tmp133, %bb2 ]
%_tmp133.lcssa = phi i16 [ %_tmp133, %bb2 ]
ret void
}