1fe27495bSTeresa Johnson;; Test callsite context graph generation for call graph with with MIBs 2fe27495bSTeresa Johnson;; that have pruned contexts that partially match multiple inlined 3fe27495bSTeresa Johnson;; callsite contexts, requiring duplication of context ids and nodes 4fe27495bSTeresa Johnson;; while matching callsite nodes onto the graph. This test requires more 5fe27495bSTeresa Johnson;; complex duplication due to multiple contexts for different allocations 6fe27495bSTeresa Johnson;; that share some of the same callsite nodes. 7fe27495bSTeresa Johnson;; 8fe27495bSTeresa Johnson;; Original code looks like: 9fe27495bSTeresa Johnson;; 10fe27495bSTeresa Johnson;; char *D(bool Call1) { 11fe27495bSTeresa Johnson;; if (Call1) 12fe27495bSTeresa Johnson;; return new char[10]; 13fe27495bSTeresa Johnson;; else 14fe27495bSTeresa Johnson;; return new char[10]; 15fe27495bSTeresa Johnson;; } 16fe27495bSTeresa Johnson;; 17fe27495bSTeresa Johnson;; char *C(bool Call1) { 18fe27495bSTeresa Johnson;; return D(Call1); 19fe27495bSTeresa Johnson;; } 20fe27495bSTeresa Johnson;; 21fe27495bSTeresa Johnson;; char *B(bool Call1) { 22fe27495bSTeresa Johnson;; if (Call1) 23fe27495bSTeresa Johnson;; return C(true); 24fe27495bSTeresa Johnson;; else 25fe27495bSTeresa Johnson;; return C(false); 26fe27495bSTeresa Johnson;; } 27fe27495bSTeresa Johnson;; 28fe27495bSTeresa Johnson;; char *A(bool Call1) { 29fe27495bSTeresa Johnson;; return B(Call1); 30fe27495bSTeresa Johnson;; } 31fe27495bSTeresa Johnson;; 32fe27495bSTeresa Johnson;; char *A1() { 33fe27495bSTeresa Johnson;; return A(true); 34fe27495bSTeresa Johnson;; } 35fe27495bSTeresa Johnson;; 36fe27495bSTeresa Johnson;; char *A2() { 37fe27495bSTeresa Johnson;; return A(true); 38fe27495bSTeresa Johnson;; } 39fe27495bSTeresa Johnson;; 40fe27495bSTeresa Johnson;; char *A3() { 41fe27495bSTeresa Johnson;; return A(false); 42fe27495bSTeresa Johnson;; } 43fe27495bSTeresa Johnson;; 44fe27495bSTeresa Johnson;; char *A4() { 45fe27495bSTeresa Johnson;; return A(false); 46fe27495bSTeresa Johnson;; } 47fe27495bSTeresa Johnson;; 48fe27495bSTeresa Johnson;; char *E() { 49fe27495bSTeresa Johnson;; return B(true); 50fe27495bSTeresa Johnson;; } 51fe27495bSTeresa Johnson;; 52fe27495bSTeresa Johnson;; char *F() { 53fe27495bSTeresa Johnson;; return B(false); 54fe27495bSTeresa Johnson;; } 55fe27495bSTeresa Johnson;; 56fe27495bSTeresa Johnson;; int main(int argc, char **argv) { 57fe27495bSTeresa Johnson;; char *a1 = A1(); // cold 58fe27495bSTeresa Johnson;; char *a2 = A2(); // cold 59fe27495bSTeresa Johnson;; char *e = E(); // default 60fe27495bSTeresa Johnson;; char *a3 = A3(); // default 61fe27495bSTeresa Johnson;; char *a4 = A4(); // default 62fe27495bSTeresa Johnson;; char *f = F(); // cold 63fe27495bSTeresa Johnson;; memset(a1, 0, 10); 64fe27495bSTeresa Johnson;; memset(a2, 0, 10); 65fe27495bSTeresa Johnson;; memset(e, 0, 10); 66fe27495bSTeresa Johnson;; memset(a3, 0, 10); 67fe27495bSTeresa Johnson;; memset(a4, 0, 10); 68fe27495bSTeresa Johnson;; memset(f, 0, 10); 69fe27495bSTeresa Johnson;; delete[] a3; 70fe27495bSTeresa Johnson;; delete[] a4; 71fe27495bSTeresa Johnson;; delete[] e; 72fe27495bSTeresa Johnson;; sleep(10); 73fe27495bSTeresa Johnson;; delete[] a1; 74fe27495bSTeresa Johnson;; delete[] a2; 75fe27495bSTeresa Johnson;; delete[] f; 76fe27495bSTeresa Johnson;; return 0; 77fe27495bSTeresa Johnson;; } 78fe27495bSTeresa Johnson;; 79a4bdb275STeresa Johnson;; Code compiled with -mllvm -memprof-ave-lifetime-cold-threshold=5 so that the 80fe27495bSTeresa Johnson;; memory freed after sleep(10) results in cold lifetimes. 81fe27495bSTeresa Johnson;; 82fe27495bSTeresa Johnson;; The code below was created by forcing inlining of A into its callers, 83fe27495bSTeresa Johnson;; without any other inlining or optimizations. Since both allocation contexts 84fe27495bSTeresa Johnson;; via A for each allocation in D have the same allocation type (cold via 85fe27495bSTeresa Johnson;; A1 and A2 for the first new in D, and non-cold via A3 and A4 for the second 86fe27495bSTeresa Johnson;; new in D, the contexts for those respective allocations are pruned above A. 87fe27495bSTeresa Johnson;; The allocations via E and F are to ensure we don't prune above B. 88fe27495bSTeresa Johnson;; 89fe27495bSTeresa Johnson;; The matching onto the inlined A[1234]->A sequences will require duplication 90fe27495bSTeresa Johnson;; of the context id assigned to the context from A for each allocation in D. 91fe27495bSTeresa Johnson;; This test ensures that we do this correctly in the presence of callsites 92fe27495bSTeresa Johnson;; shared by the different duplicated context ids (i.e. callsite in C). 93fe27495bSTeresa Johnson;; 94fe27495bSTeresa Johnson;; The IR was then reduced using llvm-reduce with the expected FileCheck input. 95fe27495bSTeresa Johnson 96fe27495bSTeresa Johnson; RUN: opt -thinlto-bc %s >%t.o 97fe27495bSTeresa Johnson; RUN: llvm-lto2 run %t.o -enable-memprof-context-disambiguation \ 98*17688986STeresa Johnson; RUN: -supports-hot-cold-new \ 99fe27495bSTeresa Johnson; RUN: -r=%t.o,main,plx \ 100fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z1Db,plx \ 101fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z1Cb,plx \ 102fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z1Bb,plx \ 103fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z1Ab,plx \ 104fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z2A1v,plx \ 105fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z2A2v,plx \ 106fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z2A3v,plx \ 107fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z2A4v,plx \ 108fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z1Ev,plx \ 109fe27495bSTeresa Johnson; RUN: -r=%t.o,_Z1Fv,plx \ 110fe27495bSTeresa Johnson; RUN: -r=%t.o,_ZdaPv, \ 111fe27495bSTeresa Johnson; RUN: -r=%t.o,sleep, \ 112fe27495bSTeresa Johnson; RUN: -r=%t.o,_Znam, \ 113fe27495bSTeresa Johnson; RUN: -memprof-verify-ccg -memprof-verify-nodes -memprof-dump-ccg \ 114fe27495bSTeresa Johnson; RUN: -memprof-export-to-dot -memprof-dot-file-path-prefix=%t. \ 115fe27495bSTeresa Johnson; RUN: -o %t.out 2>&1 | FileCheck %s --check-prefix=DUMP 116fe27495bSTeresa Johnson 117fe27495bSTeresa Johnson 118fe27495bSTeresa Johnsontarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 119fe27495bSTeresa Johnsontarget triple = "x86_64-unknown-linux-gnu" 120fe27495bSTeresa Johnson 121fe27495bSTeresa Johnsondefine ptr @_Z1Db(i1 %Call1) { 122fe27495bSTeresa Johnsonentry: 123fe27495bSTeresa Johnson %call = call ptr @_Znam(i64 0), !memprof !0, !callsite !5 124fe27495bSTeresa Johnson br label %return 125fe27495bSTeresa Johnson 126fe27495bSTeresa Johnsonif.else: ; No predecessors! 127fe27495bSTeresa Johnson %call1 = call ptr @_Znam(i64 0), !memprof !6, !callsite !11 128fe27495bSTeresa Johnson br label %return 129fe27495bSTeresa Johnson 130fe27495bSTeresa Johnsonreturn: ; preds = %if.else, %entry 131fe27495bSTeresa Johnson ret ptr null 132fe27495bSTeresa Johnson} 133fe27495bSTeresa Johnson 134fe27495bSTeresa Johnsondeclare ptr @_Znam(i64) 135fe27495bSTeresa Johnson 136fe27495bSTeresa Johnsondefine ptr @_Z1Cb(i1 %Call1) { 137fe27495bSTeresa Johnsonentry: 138fe27495bSTeresa Johnson %call = call ptr @_Z1Db(i1 false), !callsite !12 139fe27495bSTeresa Johnson ret ptr null 140fe27495bSTeresa Johnson} 141fe27495bSTeresa Johnson 142fe27495bSTeresa Johnsondefine ptr @_Z1Bb(i1 %Call1) { 143fe27495bSTeresa Johnsonentry: 144fe27495bSTeresa Johnson %call = call ptr @_Z1Cb(i1 false), !callsite !13 145fe27495bSTeresa Johnson br label %return 146fe27495bSTeresa Johnson 147fe27495bSTeresa Johnsonif.else: ; No predecessors! 148fe27495bSTeresa Johnson %call1 = call ptr @_Z1Cb(i1 false), !callsite !14 149fe27495bSTeresa Johnson br label %return 150fe27495bSTeresa Johnson 151fe27495bSTeresa Johnsonreturn: ; preds = %if.else, %entry 152fe27495bSTeresa Johnson ret ptr null 153fe27495bSTeresa Johnson} 154fe27495bSTeresa Johnson 155fe27495bSTeresa Johnsondefine ptr @_Z1Ab() { 156fe27495bSTeresa Johnsonentry: 157fe27495bSTeresa Johnson %call = call ptr @_Z1Bb(i1 false), !callsite !15 158fe27495bSTeresa Johnson ret ptr null 159fe27495bSTeresa Johnson} 160fe27495bSTeresa Johnson 161fe27495bSTeresa Johnsondefine ptr @_Z2A1v() { 162fe27495bSTeresa Johnsonentry: 163fe27495bSTeresa Johnson %call.i = call ptr @_Z1Bb(i1 false), !callsite !16 164fe27495bSTeresa Johnson ret ptr null 165fe27495bSTeresa Johnson} 166fe27495bSTeresa Johnson 167fe27495bSTeresa Johnsondefine ptr @_Z2A2v() { 168fe27495bSTeresa Johnsonentry: 169fe27495bSTeresa Johnson %call.i = call ptr @_Z1Bb(i1 false), !callsite !17 170fe27495bSTeresa Johnson ret ptr null 171fe27495bSTeresa Johnson} 172fe27495bSTeresa Johnson 173fe27495bSTeresa Johnsondefine ptr @_Z2A3v() { 174fe27495bSTeresa Johnsonentry: 175fe27495bSTeresa Johnson %call.i = call ptr @_Z1Bb(i1 false), !callsite !18 176fe27495bSTeresa Johnson ret ptr null 177fe27495bSTeresa Johnson} 178fe27495bSTeresa Johnson 179fe27495bSTeresa Johnsondefine ptr @_Z2A4v() { 180fe27495bSTeresa Johnsonentry: 181fe27495bSTeresa Johnson %call.i = call ptr @_Z1Bb(i1 false), !callsite !19 182fe27495bSTeresa Johnson ret ptr null 183fe27495bSTeresa Johnson} 184fe27495bSTeresa Johnson 185fe27495bSTeresa Johnsondefine ptr @_Z1Ev() { 186fe27495bSTeresa Johnsonentry: 187fe27495bSTeresa Johnson %call = call ptr @_Z1Bb(i1 false), !callsite !20 188fe27495bSTeresa Johnson ret ptr null 189fe27495bSTeresa Johnson} 190fe27495bSTeresa Johnson 191fe27495bSTeresa Johnsondefine ptr @_Z1Fv() { 192fe27495bSTeresa Johnsonentry: 193fe27495bSTeresa Johnson %call = call ptr @_Z1Bb(i1 false), !callsite !21 194fe27495bSTeresa Johnson ret ptr null 195fe27495bSTeresa Johnson} 196fe27495bSTeresa Johnson 197fe27495bSTeresa Johnsondeclare i32 @main() 198fe27495bSTeresa Johnson 199fe27495bSTeresa Johnsondeclare void @_ZdaPv() 200fe27495bSTeresa Johnson 201fe27495bSTeresa Johnsondeclare i32 @sleep() 202fe27495bSTeresa Johnson 203fe27495bSTeresa Johnson; uselistorder directives 204fe27495bSTeresa Johnsonuselistorder ptr @_Znam, { 1, 0 } 205fe27495bSTeresa Johnson 206fe27495bSTeresa Johnson!0 = !{!1, !3} 207fe27495bSTeresa Johnson!1 = !{!2, !"notcold"} 208fe27495bSTeresa Johnson!2 = !{i64 4854880825882961848, i64 -904694911315397047, i64 6532298921261778285, i64 1905834578520680781} 209fe27495bSTeresa Johnson!3 = !{!4, !"cold"} 210fe27495bSTeresa Johnson!4 = !{i64 4854880825882961848, i64 -904694911315397047, i64 6532298921261778285, i64 -6528110295079665978} 211fe27495bSTeresa Johnson!5 = !{i64 4854880825882961848} 212fe27495bSTeresa Johnson!6 = !{!7, !9} 213fe27495bSTeresa Johnson!7 = !{!8, !"notcold"} 214fe27495bSTeresa Johnson!8 = !{i64 -8775068539491628272, i64 -904694911315397047, i64 7859682663773658275, i64 -6528110295079665978} 215fe27495bSTeresa Johnson!9 = !{!10, !"cold"} 216fe27495bSTeresa Johnson!10 = !{i64 -8775068539491628272, i64 -904694911315397047, i64 7859682663773658275, i64 -4903163940066524832} 217fe27495bSTeresa Johnson!11 = !{i64 -8775068539491628272} 218fe27495bSTeresa Johnson!12 = !{i64 -904694911315397047} 219fe27495bSTeresa Johnson!13 = !{i64 6532298921261778285} 220fe27495bSTeresa Johnson!14 = !{i64 7859682663773658275} 221fe27495bSTeresa Johnson!15 = !{i64 -6528110295079665978} 222fe27495bSTeresa Johnson!16 = !{i64 -6528110295079665978, i64 5747919905719679568} 223fe27495bSTeresa Johnson!17 = !{i64 -6528110295079665978, i64 -5753238080028016843} 224fe27495bSTeresa Johnson!18 = !{i64 -6528110295079665978, i64 1794685869326395337} 225fe27495bSTeresa Johnson!19 = !{i64 -6528110295079665978, i64 5462047985461644151} 226fe27495bSTeresa Johnson!20 = !{i64 1905834578520680781} 227fe27495bSTeresa Johnson!21 = !{i64 -4903163940066524832} 228fe27495bSTeresa Johnson 229fe27495bSTeresa Johnson 230fe27495bSTeresa Johnson;; After adding only the alloc node memprof metadata, we only have 4 contexts (we only 231fe27495bSTeresa Johnson;; match the interesting parts of the pre-update graph here). 232fe27495bSTeresa Johnson 233fe27495bSTeresa Johnson; DUMP: CCG before updating call stack chains: 234fe27495bSTeresa Johnson; DUMP: Callsite Context Graph: 235fe27495bSTeresa Johnson 236fe27495bSTeresa Johnson; DUMP: Node [[D1:0x[a-z0-9]+]] 237fe27495bSTeresa Johnson; DUMP: Versions: 1 MIB: 238fe27495bSTeresa Johnson; DUMP: AllocType 1 StackIds: 0, 1, 2 239fe27495bSTeresa Johnson; DUMP: AllocType 2 StackIds: 0, 1, 3 240fe27495bSTeresa Johnson; DUMP: (clone 0) 241fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 242fe27495bSTeresa Johnson; DUMP: ContextIds: 1 2 243fe27495bSTeresa Johnson 244fe27495bSTeresa Johnson; DUMP: Node [[C:0x[a-z0-9]+]] 245fe27495bSTeresa Johnson; DUMP: null Call 246fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 247fe27495bSTeresa Johnson; DUMP: ContextIds: 1 2 3 4 248fe27495bSTeresa Johnson; DUMP: CalleeEdges: 249fe27495bSTeresa Johnson; DUMP: Edge from Callee [[D1]] to Caller: [[C]] AllocTypes: NotColdCold ContextIds: 1 2 250fe27495bSTeresa Johnson; DUMP: Edge from Callee [[D2:0x[a-z0-9]+]] to Caller: [[C]] AllocTypes: NotColdCold ContextIds: 3 4 251fe27495bSTeresa Johnson 252fe27495bSTeresa Johnson; DUMP: Node [[D2]] 253fe27495bSTeresa Johnson; DUMP: Versions: 1 MIB: 254fe27495bSTeresa Johnson; DUMP: AllocType 1 StackIds: 0, 4, 3 255fe27495bSTeresa Johnson; DUMP: AllocType 2 StackIds: 0, 4, 5 256fe27495bSTeresa Johnson; DUMP: (clone 0) 257fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 258fe27495bSTeresa Johnson; DUMP: ContextIds: 3 4 259fe27495bSTeresa Johnson 260fe27495bSTeresa Johnson 261fe27495bSTeresa Johnson;; After updating for callsite metadata, we should have duplicated the context 262fe27495bSTeresa Johnson;; ids coming from node A (2 and 3) 4 times, for the 4 different callers of A, 263fe27495bSTeresa Johnson;; and used those on new nodes for those callers. Note that while in reality 264fe27495bSTeresa Johnson;; we only have cold edges coming from A1 and A2 and noncold from A3 and A4, 265fe27495bSTeresa Johnson;; due to the pruning we have lost this information and thus end up duplicating 266fe27495bSTeresa Johnson;; both of A's contexts to all of the new nodes (which could result in some 267fe27495bSTeresa Johnson;; unnecessary cloning. 268fe27495bSTeresa Johnson 269fe27495bSTeresa Johnson; DUMP: CCG before cloning: 270fe27495bSTeresa Johnson; DUMP: Callsite Context Graph: 271fe27495bSTeresa Johnson; DUMP: Node [[D1]] 272fe27495bSTeresa Johnson; DUMP: Versions: 1 MIB: 273fe27495bSTeresa Johnson; DUMP: AllocType 1 StackIds: 0, 1, 2 274fe27495bSTeresa Johnson; DUMP: AllocType 2 StackIds: 0, 1, 3 275fe27495bSTeresa Johnson; DUMP: (clone 0) 276fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 277fe27495bSTeresa Johnson; DUMP: ContextIds: 1 2 5 7 9 11 278fe27495bSTeresa Johnson; DUMP: CalleeEdges: 279fe27495bSTeresa Johnson; DUMP: CallerEdges: 280fe27495bSTeresa Johnson; DUMP: Edge from Callee [[D1]] to Caller: [[C]] AllocTypes: NotColdCold ContextIds: 1 2 5 7 9 11 281fe27495bSTeresa Johnson 282fe27495bSTeresa Johnson; DUMP: Node [[C]] 283fe27495bSTeresa Johnson; DUMP: Callee: 11485875876353461977 (_Z1Db) Clones: 0 StackIds: 0 (clone 0) 284fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 285fe27495bSTeresa Johnson; DUMP: ContextIds: 1 2 3 4 5 6 7 8 9 10 11 12 286fe27495bSTeresa Johnson; DUMP: CalleeEdges: 287fe27495bSTeresa Johnson; DUMP: Edge from Callee [[D1]] to Caller: [[C]] AllocTypes: NotColdCold ContextIds: 1 2 5 7 9 11 288fe27495bSTeresa Johnson; DUMP: Edge from Callee [[D2]] to Caller: [[C]] AllocTypes: NotColdCold ContextIds: 3 4 6 8 10 12 289fe27495bSTeresa Johnson; DUMP: CallerEdges: 290fe27495bSTeresa Johnson; DUMP: Edge from Callee [[C]] to Caller: [[B1:0x[a-z0-9]+]] AllocTypes: NotColdCold ContextIds: 1 2 5 7 9 11 291fe27495bSTeresa Johnson; DUMP: Edge from Callee [[C]] to Caller: [[B2:0x[a-z0-9]+]] AllocTypes: NotColdCold ContextIds: 3 4 6 8 10 12 292fe27495bSTeresa Johnson 293fe27495bSTeresa Johnson; DUMP: Node [[B1]] 294fe27495bSTeresa Johnson; DUMP: Callee: 15062806102884567440 (_Z1Cb) Clones: 0 StackIds: 1 (clone 0) 295fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 296fe27495bSTeresa Johnson; DUMP: ContextIds: 1 2 5 7 9 11 297fe27495bSTeresa Johnson; DUMP: CalleeEdges: 298fe27495bSTeresa Johnson; DUMP: Edge from Callee [[C]] to Caller: [[B1]] AllocTypes: NotColdCold ContextIds: 1 2 5 7 9 11 299fe27495bSTeresa Johnson; DUMP: CallerEdges: 300fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[E:0x[a-z0-9]+]] AllocTypes: NotCold ContextIds: 1 301fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A2:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 5 302fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A3:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 7 303fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A1:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 9 304fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A4:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 11 305fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 2 306fe27495bSTeresa Johnson 307fe27495bSTeresa Johnson; DUMP: Node [[E]] 308fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 2 (clone 0) 309fe27495bSTeresa Johnson; DUMP: AllocTypes: NotCold 310fe27495bSTeresa Johnson; DUMP: ContextIds: 1 311fe27495bSTeresa Johnson; DUMP: CalleeEdges: 312fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[E]] AllocTypes: NotCold ContextIds: 1 313fe27495bSTeresa Johnson; DUMP: CallerEdges: 314fe27495bSTeresa Johnson 315fe27495bSTeresa Johnson; DUMP: Node [[D2]] 316fe27495bSTeresa Johnson; DUMP: Versions: 1 MIB: 317fe27495bSTeresa Johnson; DUMP: AllocType 1 StackIds: 0, 4, 3 318fe27495bSTeresa Johnson; DUMP: AllocType 2 StackIds: 0, 4, 5 319fe27495bSTeresa Johnson; DUMP: (clone 0) 320fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 321fe27495bSTeresa Johnson; DUMP: ContextIds: 3 4 6 8 10 12 322fe27495bSTeresa Johnson; DUMP: CalleeEdges: 323fe27495bSTeresa Johnson; DUMP: CallerEdges: 324fe27495bSTeresa Johnson; DUMP: Edge from Callee [[D2]] to Caller: [[C]] AllocTypes: NotColdCold ContextIds: 3 4 6 8 10 12 325fe27495bSTeresa Johnson 326fe27495bSTeresa Johnson; DUMP: Node [[B2]] 327fe27495bSTeresa Johnson; DUMP: Callee: 15062806102884567440 (_Z1Cb) Clones: 0 StackIds: 4 (clone 0) 328fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 329fe27495bSTeresa Johnson; DUMP: ContextIds: 3 4 6 8 10 12 330fe27495bSTeresa Johnson; DUMP: CalleeEdges: 331fe27495bSTeresa Johnson; DUMP: Edge from Callee [[C]] to Caller: [[B2]] AllocTypes: NotColdCold ContextIds: 3 4 6 8 10 12 332fe27495bSTeresa Johnson; DUMP: CallerEdges: 333fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[F:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 4 334fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A2]] AllocTypes: NotCold ContextIds: 6 335fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A3]] AllocTypes: NotCold ContextIds: 8 336fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A1]] AllocTypes: NotCold ContextIds: 10 337fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A4]] AllocTypes: NotCold ContextIds: 12 338fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A]] AllocTypes: NotCold ContextIds: 3 339fe27495bSTeresa Johnson 340fe27495bSTeresa Johnson; DUMP: Node [[F]] 341fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 5 (clone 0) 342fe27495bSTeresa Johnson; DUMP: AllocTypes: Cold 343fe27495bSTeresa Johnson; DUMP: ContextIds: 4 344fe27495bSTeresa Johnson; DUMP: CalleeEdges: 345fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[F]] AllocTypes: Cold ContextIds: 4 346fe27495bSTeresa Johnson; DUMP: CallerEdges: 347fe27495bSTeresa Johnson 348fe27495bSTeresa Johnson; DUMP: Node [[A2]] 349fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 3, 7 (clone 0) 350fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 351fe27495bSTeresa Johnson; DUMP: ContextIds: 5 6 352fe27495bSTeresa Johnson; DUMP: CalleeEdges: 353fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A2]] AllocTypes: Cold ContextIds: 5 354fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A2]] AllocTypes: NotCold ContextIds: 6 355fe27495bSTeresa Johnson; DUMP: CallerEdges: 356fe27495bSTeresa Johnson 357fe27495bSTeresa Johnson; DUMP: Node [[A3]] 358fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 3, 8 (clone 0) 359fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 360fe27495bSTeresa Johnson; DUMP: ContextIds: 7 8 361fe27495bSTeresa Johnson; DUMP: CalleeEdges: 362fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A3]] AllocTypes: Cold ContextIds: 7 363fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A3]] AllocTypes: NotCold ContextIds: 8 364fe27495bSTeresa Johnson; DUMP: CallerEdges: 365fe27495bSTeresa Johnson 366fe27495bSTeresa Johnson; DUMP: Node [[A1]] 367fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 3 (clone 0) 368fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 369fe27495bSTeresa Johnson; DUMP: ContextIds: 9 10 370fe27495bSTeresa Johnson; DUMP: CalleeEdges: 371fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A1]] AllocTypes: Cold ContextIds: 9 372fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A1]] AllocTypes: NotCold ContextIds: 10 373fe27495bSTeresa Johnson; DUMP: CallerEdges: 374fe27495bSTeresa Johnson 375fe27495bSTeresa Johnson; DUMP: Node [[A4]] 376fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 3, 9 (clone 0) 377fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 378fe27495bSTeresa Johnson; DUMP: ContextIds: 11 12 379fe27495bSTeresa Johnson; DUMP: CalleeEdges: 380fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A4]] AllocTypes: Cold ContextIds: 11 381fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A4]] AllocTypes: NotCold ContextIds: 12 382fe27495bSTeresa Johnson; DUMP: CallerEdges: 383fe27495bSTeresa Johnson 384fe27495bSTeresa Johnson; DUMP: Node [[A]] 385fe27495bSTeresa Johnson; DUMP: Callee: 9116113196563097487 (_Z1Bb) Clones: 0 StackIds: 3, 6 (clone 0) 386fe27495bSTeresa Johnson; DUMP: AllocTypes: NotColdCold 387fe27495bSTeresa Johnson; DUMP: ContextIds: 2 3 388fe27495bSTeresa Johnson; DUMP: CalleeEdges: 389fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B1]] to Caller: [[A]] AllocTypes: Cold ContextIds: 2 390fe27495bSTeresa Johnson; DUMP: Edge from Callee [[B2]] to Caller: [[A]] AllocTypes: NotCold ContextIds: 3 391fe27495bSTeresa Johnson; DUMP: CallerEdges: 392