brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 158620d Raw
46 lines · plain
1; RUN: not opt -passes=verify < %s 2>&1 | FileCheck %s2 3declare i8 @llvm.experimental.deoptimize.i8(...)4declare void @llvm.experimental.deoptimize.isVoid(...)5declare cc40 void @llvm.experimental.deoptimize.double(...)6 7declare void @unknown()8 9define void @f_notail() {10entry:11  call void(...) @llvm.experimental.deoptimize.isVoid(i32 0) [ "deopt"() ]12; CHECK: calls to experimental_deoptimize must be followed by a return13  call void @unknown()14  ret void15}16 17define void @f_nodeopt() {18entry:19  call void(...) @llvm.experimental.deoptimize.isVoid()20; CHECK: experimental_deoptimize must have exactly one "deopt" operand bundle21  ret void22}23 24define void @f_invoke() personality i8 3 {25entry:26  invoke void(...) @llvm.experimental.deoptimize.isVoid(i32 0, float 0.0) to label %ok unwind label %not_ok27; CHECK: experimental_deoptimize cannot be invoked28 29ok:30  ret void31 32not_ok:33  %0 = landingpad { ptr, i32 }34          filter [0 x ptr] zeroinitializer35  ret void36}37 38define i8 @f_incorrect_return() {39entry:40  %val = call i8(...) @llvm.experimental.deoptimize.i8() [ "deopt"() ]41; CHECK: calls to experimental_deoptimize must be followed by a return of the value computed by experimental_deoptimize42  ret i8 043}44 45; CHECK: All llvm.experimental.deoptimize declarations must have the same calling convention46