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