1; RUN: opt -partial-inliner -S < %s | FileCheck %s 2 3; Checks that valid costs are computed for intrinsic calls. 4; https://bugs.llvm.org/show_bug.cgi?id=45932 5 6 7@emit_notes = external global i8, align 2 8 9; CHECK: var_reg_delete 10; CHECK-NEXT: bb 11; CHECK-NEXT: tail call void @delete_variable_part() 12; CHECK-NEXT: ret void 13 14define void @var_reg_delete() { 15bb: 16 tail call void @delete_variable_part() 17 ret void 18} 19 20; CHECK: delete_variable_part 21; CHECK-NEXT: bb 22; CHECK-NEXT: %tmp1.i = tail call i32 @find_variable_location_part() 23; CHECK-NEXT: %tmp3.i = icmp sgt i32 %tmp1.i, -1 24; CHECK-NEXT: br i1 %tmp3.i, label %bb4.i, label %delete_slot_part.exit 25 26; CHECK: bb4.i 27; CHECK-NEXT: %tmp.i.i = load i8, i8* @emit_notes 28; CHECK-NEXT: %tmp1.i.i = icmp ne i8 %tmp.i.i, 0 29; CHECK-NEXT: tail call void @llvm.assume(i1 %tmp1.i.i) 30; CHECK-NEXT: unreachable 31 32; CHECK: delete_slot_part.exit 33; CHECK-NEXT: ret void 34 35define void @delete_variable_part() { 36bb: 37 %tmp1.i = tail call i32 @find_variable_location_part() 38 %tmp3.i = icmp sgt i32 %tmp1.i, -1 39 br i1 %tmp3.i, label %bb4.i, label %delete_slot_part.exit 40 41bb4.i: 42 %tmp.i.i = load i8, i8* @emit_notes, align 2 43 %tmp1.i.i = icmp ne i8 %tmp.i.i, 0 44 tail call void @llvm.assume(i1 %tmp1.i.i) 45 unreachable 46 47delete_slot_part.exit: 48 ret void 49} 50 51; CHECK: declare i32 @find_variable_location_part 52declare i32 @find_variable_location_part() 53 54; CHECK: declare void @llvm.assume(i1 noundef) 55declare void @llvm.assume(i1 noundef) 56