xref: /llvm-project/llvm/test/CodeGen/PowerPC/2016-04-28-setjmp.ll (revision 427fb35192f1f7bb694a5910b05abc5925a798b2)
1; RUN: llc -filetype=obj <%s | llvm-objdump -d - | FileCheck %s
2target datalayout = "e-m:e-i64:64-n32:64"
3target triple = "powerpc64le-unknown-linux-gnu"
4
5@ptr = common global ptr null, align 8
6
7; Verify there's no junk between these two instructions from misemitted
8; EH_SjLj_Setup.
9
10; CHECK: li 3, 1
11; CHECK: cmplwi	 3, 0
12
13define void @h() nounwind {
14  %1 = load ptr, ptr @ptr, align 8
15  %2 = tail call ptr @llvm.frameaddress(i32 0)
16  store ptr %2, ptr %1, align 8
17  %3 = tail call ptr @llvm.stacksave()
18  %4 = getelementptr inbounds ptr, ptr %1, i64 2
19  store ptr %3, ptr %4, align 8
20  %5 = tail call i32 @llvm.eh.sjlj.setjmp(ptr %1)
21  %6 = icmp eq i32 %5, 0
22  br i1 %6, label %8, label %7
23
24; <label>:8:                                      ; preds = %0
25  tail call void @g()
26  br label %9
27
28; <label>:9:                                      ; preds = %0
29  tail call void @f()
30  br label %9
31
32; <label>:10:                                     ; preds = %8, %7
33  ret void
34}
35
36; Function Attrs: nounwind readnone
37declare ptr @llvm.frameaddress(i32)
38
39; Function Attrs: nounwind
40declare ptr @llvm.stacksave()
41
42; Function Attrs: nounwind
43declare i32 @llvm.eh.sjlj.setjmp(ptr)
44
45declare void @g()
46
47declare void @f()
48