| ; RUN: llc -filetype=obj <%s | llvm-objdump --disassemble - | FileCheck %s |
| target datalayout = "e-m:e-i64:64-n32:64" |
| target triple = "powerpc64le-unknown-linux-gnu" |
| |
| @ptr = common global i8* null, align 8 |
| |
| ; Verify there's no junk between these two instructions from misemitted |
| ; EH_SjLj_Setup. |
| |
| ; CHECK: li 3, 1 |
| ; CHECK: cmplwi 3, 0 |
| |
| define void @h() nounwind { |
| %1 = load i8**, i8*** bitcast (i8** @ptr to i8***), align 8 |
| %2 = tail call i8* @llvm.frameaddress(i32 0) |
| store i8* %2, i8** %1, align 8 |
| %3 = tail call i8* @llvm.stacksave() |
| %4 = getelementptr inbounds i8*, i8** %1, i64 2 |
| store i8* %3, i8** %4, align 8 |
| %5 = bitcast i8** %1 to i8* |
| %6 = tail call i32 @llvm.eh.sjlj.setjmp(i8* %5) |
| %7 = icmp eq i32 %6, 0 |
| br i1 %7, label %9, label %8 |
| |
| ; <label>:8: ; preds = %0 |
| tail call void @g() |
| br label %10 |
| |
| ; <label>:9: ; preds = %0 |
| tail call void @f() |
| br label %10 |
| |
| ; <label>:10: ; preds = %9, %8 |
| ret void |
| } |
| |
| ; Function Attrs: nounwind readnone |
| declare i8* @llvm.frameaddress(i32) |
| |
| ; Function Attrs: nounwind |
| declare i8* @llvm.stacksave() |
| |
| ; Function Attrs: nounwind |
| declare i32 @llvm.eh.sjlj.setjmp(i8*) |
| |
| declare void @g() |
| |
| declare void @f() |