blob: 94a607a23e02fc3519159df73bb94cf0f883c8e6 [file] [log] [blame]
Misha Brukmane78760e2003-09-16 15:29:54 +00001; RUN: llvm-as < %s | opt -lowersetjmp | llvm-dis | grep invoke
Chris Lattner9b11f482003-05-17 22:18:33 +00002
3%JmpBuf = type int
4%.str_1 = internal constant [13 x sbyte] c"returned %d\0A\00"
5
6implementation
7
8declare void %llvm.longjmp(%JmpBuf *%B, int %Val)
9declare int %llvm.setjmp(%JmpBuf *%B)
10
Chris Lattner06558452003-10-23 15:57:45 +000011declare void %foo()
12
Chris Lattner9b11f482003-05-17 22:18:33 +000013int %simpletest() {
14 %B = alloca %JmpBuf
15 %Val = call int %llvm.setjmp(%JmpBuf* %B)
16 %V = cast int %Val to bool
17 br bool %V, label %LongJumped, label %Normal
18Normal:
Chris Lattner06558452003-10-23 15:57:45 +000019 call void %foo()
Chris Lattner9b11f482003-05-17 22:18:33 +000020 call void %llvm.longjmp(%JmpBuf* %B, int 42)
21 ret int 0 ;; not reached
22LongJumped:
23 ret int %Val
24}
25
26declare int %printf(sbyte*, ...)
27
28int %main() {
29 %V = call int %simpletest()
30 call int(sbyte*, ...)* %printf(sbyte* getelementptr ([13 x sbyte]* %.str_1, long 0, long 0), int %V)
31 ret int 0
32}