new testcase, reduced by bugpoint
[oota-llvm.git] / test / Transforms / LowerSetJmp / simpletest.ll
1 ; RUN: llvm-as < %s | opt -lowersetjmp | llvm-dis | grep invoke
2
3 %JmpBuf = type int
4 %.str_1 = internal constant [13 x sbyte] c"returned %d\0A\00"
5
6 implementation
7
8 declare void %llvm.longjmp(%JmpBuf *%B, int %Val)
9 declare int %llvm.setjmp(%JmpBuf *%B)
10
11 int %simpletest() {
12         %B = alloca %JmpBuf
13         %Val = call int %llvm.setjmp(%JmpBuf* %B)
14         %V = cast int %Val to bool
15         br bool %V, label %LongJumped, label %Normal
16 Normal:
17         call void %llvm.longjmp(%JmpBuf* %B, int 42)
18         ret int 0 ;; not reached
19 LongJumped:
20         ret int %Val
21 }
22
23 declare int %printf(sbyte*, ...)
24
25 int %main() {
26         %V = call int %simpletest()
27         call int(sbyte*, ...)* %printf(sbyte* getelementptr ([13 x sbyte]* %.str_1, long 0, long 0), int %V)
28         ret int 0
29 }