[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / Analysis / CtxProfAnalysis / full-cycle.ll
blob905e7eea9f49eee86bc017b1399d65ae9d697752
1 ; REQUIRES: x86_64-linux
3 ; RUN: rm -rf %t
4 ; RUN: split-file %s %t
6 ; Test that the GUID metadata survives through thinlink.
7 ; Also test that the flattener works correctly. f2 is called in 2 places, with
8 ; different counter values, and we expect resulting flat profile to be the sum
9 ; (of values at the same index).
11 ; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
13 ; RUN: opt -module-summary -passes='thinlto-pre-link<O2>' -use-ctx-profile=%t/profile.ctxprofdata -o %t/m1.bc %t/m1.ll
14 ; RUN: opt -module-summary -passes='thinlto-pre-link<O2>' -use-ctx-profile=%t/profile.ctxprofdata -o %t/m2.bc %t/m2.ll
16 ; RUN: rm -rf %t/postlink
17 ; RUN: mkdir %t/postlink
20 ; RUN: llvm-lto2 run %t/m1.bc %t/m2.bc -o %t/ -thinlto-distributed-indexes \
21 ; RUN:  -use-ctx-profile=%t/profile.ctxprofdata \
22 ; RUN:  -r %t/m1.bc,f1,plx \
23 ; RUN:  -r %t/m1.bc,f3,plx \
24 ; RUN:  -r %t/m2.bc,f1 \
25 ; RUN:  -r %t/m2.bc,f3 \
26 ; RUN:  -r %t/m2.bc,entrypoint,plx
27 ; RUN: opt --passes='function-import,require<ctx-prof-analysis>,print<ctx-prof-analysis>' -ctx-profile-printer-level=everything \
28 ; RUN:  -summary-file=%t/m2.bc.thinlto.bc -use-ctx-profile=%t/profile.ctxprofdata %t/m2.bc \
29 ; RUN:  -S -o %t/m2.post.ll 2> %t/profile.txt
30 ; RUN: diff %t/expected.txt %t/profile.txt
31 ;--- m1.ll
32 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
33 target triple = "x86_64-pc-linux-gnu"
35 source_filename = "random_path/m1.cc"
37 define private void @f2() #0 !guid !0 {
38   ret void
41 define void @f1() #0 {
42   call void @f2()
43   ret void
46 define void @f3() #0 {
47   call void @f2()
48   ret void
51 attributes #0 = { noinline }
52 !0 = !{ i64 3087265239403591524 }
54 ;--- m2.ll
55 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
56 target triple = "x86_64-pc-linux-gnu"
58 source_filename = "random_path/m2.cc"
60 declare void @f1()
61 declare void @f3()
63 define void @entrypoint() {
64   call void @f1()
65   call void @f3()
66   ret void
68 ;--- profile.json
70   {
71     "Callsites": [
72       [
73         {
74           "Callsites": [
75             [
76               {
77                 "Counters": [
78                   10,
79                   7
80                 ],
81                 "Guid": 3087265239403591524
82               }
83             ]
84           ],
85           "Counters": [
86             7
87           ],
88           "Guid": 2072045998141807037
89         }
90       ],
91       [
92         {
93           "Callsites": [
94             [
95               {
96                 "Counters": [
97                   1,
98                   2
99                 ],
100                 "Guid": 3087265239403591524
101               }
102             ]
103           ],
104           "Counters": [
105             2
106           ],
107           "Guid": 4197650231481825559
108         }
109       ]
110     ],
111     "Counters": [
112       1
113     ],
114     "Guid": 10507721908651011566
115   }
117 ;--- expected.txt
118 Function Info:
119 2072045998141807037 : f1. MaxCounterID: 1. MaxCallsiteID: 1
120 3087265239403591524 : f2.llvm.0. MaxCounterID: 1. MaxCallsiteID: 0
121 4197650231481825559 : f3. MaxCounterID: 1. MaxCallsiteID: 1
122 10507721908651011566 : entrypoint. MaxCounterID: 1. MaxCallsiteID: 2
124 Current Profile:
126   {
127     "Callsites": [
128       [
129         {
130           "Callsites": [
131             [
132               {
133                 "Counters": [
134                   10,
135                   7
136                 ],
137                 "Guid": 3087265239403591524
138               }
139             ]
140           ],
141           "Counters": [
142             7
143           ],
144           "Guid": 2072045998141807037
145         }
146       ],
147       [
148         {
149           "Callsites": [
150             [
151               {
152                 "Counters": [
153                   1,
154                   2
155                 ],
156                 "Guid": 3087265239403591524
157               }
158             ]
159           ],
160           "Counters": [
161             2
162           ],
163           "Guid": 4197650231481825559
164         }
165       ]
166     ],
167     "Counters": [
168       1
169     ],
170     "Guid": 10507721908651011566
171   }
174 Flat Profile:
175 2072045998141807037 : 7 
176 3087265239403591524 : 11 9 
177 4197650231481825559 : 2 
178 10507721908651011566 : 1