brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 11161e2 Raw
80 lines · plain
1; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s2 3; PR10424define i32 @foo() {5; CHECK: The unwind destination does not have an exception handling instruction6	%A = invoke i32 @foo( )7			to label %L unwind label %L		; <i32> [#uses=1]8L:		; preds = %0, %09	ret i32 %A10}11 12; PR104213define i32 @bar() {14	br i1 false, label %L1, label %L215L1:		; preds = %016	%A = invoke i32 @bar( )17			to label %L unwind label %L		; <i32> [#uses=1]18L2:		; preds = %019	br label %L20L:		; preds = %L2, %L1, %L121; CHECK: The unwind destination does not have an exception handling instruction22	ret i32 %A23}24 25 26declare i32 @__gxx_personality_v0(...)27declare void @llvm.donothing()28declare void @llvm.trap()29declare i8 @llvm.expect.i8(i8,i8)30declare i32 @fn(ptr)31 32define void @f1() personality ptr @__gxx_personality_v0 {33entry:34; OK35  invoke void @llvm.donothing()36  to label %conta unwind label %contb37 38conta:39  ret void40 41contb:42  %0 = landingpad { ptr, i32 }43          filter [0 x ptr] zeroinitializer44  ret void45}46 47define i8 @f2() personality ptr @__gxx_personality_v0 {48entry:49; CHECK: Cannot invoke an intrinsic other than donothing, patchpoint, statepoint, coro_resume, coro_destroy, clang.arc.attachedcall or wasm.(re)throw50  invoke void @llvm.trap()51  to label %cont unwind label %lpad52 53cont:54  ret i8 355 56lpad:57  %0 = landingpad { ptr, i32 }58          filter [0 x ptr] zeroinitializer59  ret i8 260}61 62define i32 @f3() {63entry:64; CHECK: Cannot take the address of an intrinsic65  %call = call i32 @fn(ptr @llvm.expect.i8)66  ret i32 %call67}68 69define void @f4() personality ptr @__gxx_personality_v0 {70entry:71  invoke void @llvm.donothing()72  to label %cont unwind label %cont73 74cont:75; CHECK: Block containing LandingPadInst must be jumped to only by the unwind edge of an invoke.76  %0 = landingpad { ptr, i32 }77          filter [0 x ptr] zeroinitializer78  ret void79}80