xref: /llvm-project/llvm/test/Instrumentation/InstrProfiling/inline-data-var-create.ll (revision 71f8b441ed6a944ceb4530b49e8588dcbb1e0066)
1;; Check that all data variables are created for instrumented functions even
2;; when those functions are fully inlined into their instrumented callers prior
3;; to the instrprof pass.
4; RUN: opt %s -passes='instrprof' -S | FileCheck %s -check-prefix=NOINLINE
5; RUN: opt %s -passes='cgscc(inline),instrprof' -S | FileCheck %s -check-prefix=INLINEFIRST
6; RUN: opt %s -passes='instrprof,cgscc(inline)' -S | FileCheck %s -check-prefix=INLINEAFTER
7
8target triple = "x86_64-unknown-linux-gnu"
9
10; INLINEFIRST: @__profd_foo = private global{{.*}}zeroinitializer, i32 21
11; INLINEFIRST: @__profd_bar = private global{{.*}}zeroinitializer, i32 23
12; INLINEFIRST: @__profd_foobar = private global{{.*}}zeroinitializer, i32 99
13
14; INLINEAFTER: @__profd_foobar = private global{{.*}}zeroinitializer, i32 99
15; INLINEAFTER: @__profd_foo = private global{{.*}}zeroinitializer, i32 21
16; INLINEAFTER: @__profd_bar = private global{{.*}}zeroinitializer, i32 23
17
18; NOINLINE: @__profd_foobar = private global{{.*}}zeroinitializer, i32 99
19; NOINLINE: @__profd_foo = private global{{.*}}zeroinitializer, i32 21
20; NOINLINE: @__profd_bar = private global{{.*}}zeroinitializer, i32 23
21
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 void
33}
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 void
40}
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 void
47}
48