| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 |
| ; RUN: llc -mtriple=ppc64le-unknown-linux-gnu < %s | FileCheck %s |
| |
| @id = private unnamed_addr constant [4 x i8] c"@id\00", align 1 |
| @id2 = private unnamed_addr constant [5 x i8] c"@id2\00", align 1 |
| |
| ; Higher-aligned dummy to make sure it is first in the global merge pool. |
| @dummy = private unnamed_addr constant [1 x i32] [i32 42], align 4 |
| |
| define ptr @test1() personality ptr @__gnu_objc_personality_v0 { |
| ; CHECK-LABEL: test1: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mflr 0 |
| ; CHECK-NEXT: stdu 1, -32(1) |
| ; CHECK-NEXT: std 0, 48(1) |
| ; CHECK-NEXT: .cfi_def_cfa_offset 32 |
| ; CHECK-NEXT: .cfi_offset lr, 16 |
| ; CHECK-NEXT: addis 3, 2, .Ldummy@toc@ha |
| ; CHECK-NEXT: addi 3, 3, .Ldummy@toc@l |
| ; CHECK-NEXT: bl foo |
| ; CHECK-NEXT: nop |
| invoke void @foo(ptr @dummy) |
| to label %cont unwind label %unwind |
| |
| cont: |
| unreachable |
| |
| unwind: |
| %lp = landingpad { ptr, i32 } |
| catch ptr @id |
| resume { ptr, i32 } %lp |
| } |
| |
| define i32 @test2() personality ptr @__gnu_objc_personality_v0 { |
| ; CHECK-LABEL: test2: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: li 3, 1 |
| ; CHECK-NEXT: blr |
| %id = tail call i32 @llvm.eh.typeid.for(ptr @id2) |
| ret i32 %id |
| } |
| |
| declare i32 @__gnu_objc_personality_v0(...) |
| |
| declare i32 @llvm.eh.typeid.for(ptr) |
| |
| declare void @foo() |