Files
clang-p2996/llvm/test/Transforms/SLPVectorizer/X86/phi_landingpad.ll
Justin Bogner ca9bd8fac1 Transforms: Use getFirstNonPHI to set the insertion point for PHIs
We were previously using getFirstInsertionPt to insert PHI
instructions when vectorizing, but getFirstInsertionPt also skips past
landingpads, causing this to generate invalid IR.

We can avoid this issue by using getFirstNonPHI instead.

llvm-svn: 191526
2013-09-27 15:30:25 +00:00

32 lines
803 B
LLVM

; RUN: opt < %s -slp-vectorizer -mtriple=x86_64-apple-macosx10.9.0 -disable-output
target datalayout = "f64:64:64-v64:64:64"
define void @test_phi_in_landingpad() {
entry:
invoke void @foo()
to label %inner unwind label %lpad
inner:
%x0 = fsub double undef, undef
%y0 = fsub double undef, undef
invoke void @foo()
to label %done unwind label %lpad
lpad:
%x1 = phi double [ undef, %entry ], [ undef, %inner ]
%y1 = phi double [ undef, %entry ], [ undef, %inner ]
landingpad { i8*, i32 } personality i8*
bitcast (i32 (...)* @__gxx_personality_v0 to i8*) catch i8* null
br label %done
done:
phi double [ %x0, %inner ], [ %x1, %lpad ]
phi double [ %y0, %inner ], [ %y1, %lpad ]
ret void
}
declare void @foo()
declare i32 @__gxx_personality_v0(...)