brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 18f37ab Raw
51 lines · plain
1; RUN: opt -passes=inline -S %s -inline-threshold=20 2>&1 | FileCheck %s2 3%struct.nodemask_t = type { [16 x i64] }4@numa_nodes_parsed = external constant %struct.nodemask_t, align 85 6declare void @foo()7declare i64 @llvm.objectsize.i64.p0(ptr, i1 immarg, i1 immarg, i1 immarg)8 9; Test that we inline @callee into @caller.10define i64 @caller() {11; CHECK-LABEL: @caller(12; CHECK-NEXT:    [[TMP1:%.*]] = tail call i64 @llvm.objectsize.i64.p0(ptr @numa_nodes_parsed, i1 false, i1 false, i1 false)13; CHECK-NEXT:    [[TMP2:%.*]] = icmp uge i64 [[TMP1]], 12814; CHECK-NEXT:    br i1 [[TMP2]], label %[[CALLEE_EXIT:.*]], label %[[HANDLER_TYPE_MISMATCH94_I:.*]]15; CHECK:       [[HANDLER_TYPE_MISMATCH94_I]]:16; CHECK-NEXT:    call void @foo()17; CHECK-NEXT:    call void @foo()18; CHECK-NEXT:    call void @foo()19; CHECK-NEXT:    call void @foo()20; CHECK-NEXT:    call void @foo()21; CHECK-NEXT:    call void @foo()22; CHECK-NEXT:    br label %[[CALLEE_EXIT]]23; CHECK:       [[CALLEE_EXIT]]:24; CHECK-NEXT:    ret i64 [[TMP1]]25;26  %1 = tail call i64 @callee()27  ret i64 %128}29 30; Testing the InlineCost of the call to @llvm.objectsize.i64.p0.31; Do not change the linkage of @callee; that will give it a severe discount in32; cost (LastCallToStaticBonus).33define i64 @callee() {34  %1 = tail call i64 @llvm.objectsize.i64.p0(ptr @numa_nodes_parsed, i1 false, i1 false, i1 false)35  %2 = icmp uge i64 %1, 12836  br i1 %2, label %cont95, label %handler.type_mismatch9437 38handler.type_mismatch94:39  call void @foo()40  call void @foo()41  call void @foo()42  call void @foo()43  call void @foo()44  call void @foo()45  br label %cont9546 47cont95:48  ret i64 %149}50 51