llvm-mirror/test/Transforms/Inline/2007-12-19-InlineNoUnwind.ll
Duncan Sands 56f3add5b7 When inlining through an 'nounwind' call, mark inlined
calls 'nounwind'.  It is important for correct C++
exception handling that nounwind markings do not get
lost, so this transformation is actually needed for
correctness.

llvm-svn: 45218
2007-12-19 21:13:37 +00:00

20 lines
349 B
LLVM

; RUN: llvm-as < %s -o - | opt -inline | llvm-dis | grep nounwind
; RUN: llvm-as < %s -o - | opt -inline | llvm-dis | grep unreachable
declare i1 @extern()
define internal i32 @test() {
entry:
%n = call i1 @extern( )
br i1 %n, label %r, label %u
r:
ret i32 0;
u:
unwind
}
define i32 @caller() {
%X = call i32 @test( ) nounwind
ret i32 %X
}