48 lines · plain
1;; Check that all data variables are created for instrumented functions even2;; when those functions are fully inlined into their instrumented callers prior3;; to the instrprof pass.4; RUN: opt %s -passes='instrprof' -S | FileCheck %s -check-prefix=NOINLINE5; RUN: opt %s -passes='cgscc(inline),instrprof' -S | FileCheck %s -check-prefix=INLINEFIRST6; RUN: opt %s -passes='instrprof,cgscc(inline)' -S | FileCheck %s -check-prefix=INLINEAFTER7 8target triple = "x86_64-unknown-linux-gnu"9 10; INLINEFIRST: @__profd_foo = private global{{.*}}zeroinitializer, i32 2111; INLINEFIRST: @__profd_bar = private global{{.*}}zeroinitializer, i32 2312; INLINEFIRST: @__profd_foobar = private global{{.*}}zeroinitializer, i32 9913 14; INLINEAFTER: @__profd_foobar = private global{{.*}}zeroinitializer, i32 9915; INLINEAFTER: @__profd_foo = private global{{.*}}zeroinitializer, i32 2116; INLINEAFTER: @__profd_bar = private global{{.*}}zeroinitializer, i32 2317 18; NOINLINE: @__profd_foobar = private global{{.*}}zeroinitializer, i32 9919; NOINLINE: @__profd_foo = private global{{.*}}zeroinitializer, i32 2120; NOINLINE: @__profd_bar = private global{{.*}}zeroinitializer, i32 2321 22declare void @llvm.instrprof.increment(ptr %0, i64 %1, i32 %2, i32 %3)23declare void @llvm.instrprof.mcdc.parameters(ptr %0, i64 %1, i32 %2)24@__profn_foobar = private constant [6 x i8] c"foobar"25@__profn_foo = private constant [3 x i8] c"foo"26@__profn_bar = private constant [3 x i8] c"bar"27 28define internal void @foobar() {29 call void @llvm.instrprof.increment(ptr @__profn_foobar, i64 123456, i32 32, i32 0)30 call void @llvm.instrprof.mcdc.parameters(ptr @__profn_foobar, i64 123456, i32 792)31 32 ret void33}34 35define void @foo() {36 call void @llvm.instrprof.increment(ptr @__profn_foo, i64 123456, i32 32, i32 0)37 call void @llvm.instrprof.mcdc.parameters(ptr @__profn_foo, i64 123456, i32 168)38 call void @foobar()39 ret void40}41 42define void @bar() {43 call void @llvm.instrprof.increment(ptr @__profn_bar, i64 123456, i32 32, i32 0)44 call void @llvm.instrprof.mcdc.parameters(ptr @__profn_bar, i64 123456, i32 184)45 call void @foobar()46 ret void47}48