1; REQUIRES: aarch64-registered-target 2 3; For convenience, to show what is being serialized. 4; RUN: opt -S -passes="print<stack-safety-local>" -disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSI 5 6; RUN: opt -module-summary %s -o %t.bc 7; RUN: llvm-bcanalyzer -dump %t.bc | FileCheck %s -check-prefixes=BC 8 9; RUN: opt -module-summary %p/Inputs/thinlto-function-summary-paramaccess.ll -o %t2.bc 10 11; RUN: llvm-lto -thinlto -o %t %t.bc %t2.bc 12 13; RUN: llvm-dis -o - %t.thinlto.bc | FileCheck %s --check-prefix=DCO 14; Round trip it through llvm-as 15; RUN: llvm-dis -o - %t.thinlto.bc | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=DCO 16 17; RUN: llvm-bcanalyzer -dump %t.thinlto.bc | FileCheck %s --check-prefix=COMBINED 18 19; RUN: llvm-dis -o - %t.bc | FileCheck %s --check-prefix=DIS 20; Round trip it through llvm-as 21; RUN: llvm-dis -o - %t.bc | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=DIS 22 23; RUN: opt -thinlto-bc %s -o %t.bc 24; RUN: llvm-bcanalyzer -dump %t.bc | FileCheck %s -check-prefixes=BC 25 26; RUN: llvm-dis -o - %t.bc | FileCheck %s --check-prefix=DIS 27; Round trip it through llvm-as 28; RUN: llvm-dis -o - %t.bc | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=DIS 29 30; DIS: ^0 = module: (path: "{{.*}}", hash: ({{.*}})) 31; DCO: ^0 = module: (path: "{{.*}}", hash: ({{.*}})) 32; DCO: ^1 = module: (path: "{{.*}}", hash: ({{.*}})) 33 34; ModuleID = 'thinlto-function-summary-paramaccess.ll' 35target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 36target triple = "aarch64-unknown-linux" 37 38attributes #0 = { noinline sanitize_memtag "target-features"="+mte,+neon" } 39 40; BC-LABEL: <GLOBALVAL_SUMMARY_BLOCK 41; BC-NEXT: <VERSION 42; BC-NEXT: <FLAGS 43 44; DIS-DAG: = gv: (name: "Callee") ; guid = 900789920918863816 45; DCO-DAG: = gv: (guid: 900789920918863816, summaries: (function: (module: ^1, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, -1]))))){{$}} 46 declare void @Callee(i8* %p) 47 48; DIS-DAG: = gv: (name: "Callee2") ; guid = 72710208629861106 49; DCO-DAG: = gv: (guid: 72710208629861106, summaries: (function: (module: ^1, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}}), params: ((param: 1, offset: [0, -1]))))){{$}} 50 declare void @Callee2(i32 %x, i8* %p) 51 52; BC: <PERMODULE 53; DIS-DAG: = gv: (name: "NoParam", summaries: {{.*}} guid = 10287433468618421703 54; DCO-DAG: = gv: (guid: 10287433468618421703, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}})))){{$}} 55define void @NoParam() #0 { 56entry: 57 ret void 58} 59 60; SSI-LABEL: function 'IntParam' 61; BC-NEXT: <PERMODULE 62; DIS-DAG: = gv: (name: "IntParam", summaries: {{.*}} guid = 13164714711077064397 63; DCO-DAG: = gv: (guid: 13164714711077064397, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}})))){{$}} 64define void @IntParam(i32 %x) #0 { 65entry: 66 ret void 67} 68 69; SSI-LABEL: for function 'WriteNone' 70; SSI: p[]: empty-set 71; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=0/> 72; BC-NEXT: <PERMODULE 73; DIS-DAG: = gv: (name: "WriteNone", summaries: {{.*}} params: ((param: 0, offset: [0, -1]))))) ; guid = 15261848357689602442 74; DCO-DAG: = gv: (guid: 15261848357689602442, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, -1]))))){{$}} 75define void @WriteNone(i8* %p) #0 { 76entry: 77 ret void 78} 79 80; SSI-LABEL: for function 'Write0' 81; SSI: p[]: [0,1) 82; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0/> 83; BC-NEXT: <PERMODULE 84; DIS-DAG: = gv: (name: "Write0", summaries: {{.*}} params: ((param: 0, offset: [0, 0]))))) ; guid = 5540766144860458461 85; DCO-DAG: = gv: (guid: 5540766144860458461, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 2, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, 0]))))){{$}} 86define void @Write0(i8* %p) #0 { 87entry: 88 store i8 0, i8* %p 89 ret void 90} 91 92; SSI-LABEL: for function 'WriteOffset' 93; SSI: p[]: [12,16) 94; BC-NEXT: <PARAM_ACCESS op0=0 op1=24 op2=32 op3=0/> 95; BC-NEXT: <PERMODULE 96; DIS-DAG: = gv: (name: "WriteOffset", summaries: {{.*}} params: ((param: 0, offset: [12, 15]))))) ; guid = 1417835201204712148 97; DCO-DAG: = gv: (guid: 1417835201204712148, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 4, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [12, 15]))))){{$}} 98define void @WriteOffset(i8* %p) #0 { 99entry: 100 %0 = bitcast i8* %p to i32* 101 %1 = getelementptr i32, i32* %0, i64 3 102 store i32 0, i32* %1 103 ret void 104} 105 106; SSI-LABEL: for function 'WriteNegOffset' 107; SSI: p[]: [-56,-48) 108; BC-NEXT: <PARAM_ACCESS op0=0 op1=113 op2=97 op3=0/> 109; BC-NEXT: <PERMODULE 110; DIS-DAG: = gv: (name: "WriteNegOffset", summaries: {{.*}} params: ((param: 0, offset: [-56, -49]))))) ; guid = 11847411556962310546 111; DCO-DAG: = gv: (guid: 11847411556962310546, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 4, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [-56, -49]))))){{$}} 112define void @WriteNegOffset(i8* %p) #0 { 113entry: 114 %0 = bitcast i8* %p to i64* 115 %1 = getelementptr i64, i64* %0, i64 -7 116 store i64 0, i64* %1 117 ret void 118} 119 120; SSI-LABEL: for function 'WriteAnyOffset' 121; SSI: p[]: [-9223372036854775808,9223372036854775807) 122; BC-NEXT: <PARAM_ACCESS op0=0 op1=1 op2=-2 op3=0/> 123; BC-NEXT: <PERMODULE 124; DIS-DAG: = gv: (name: "WriteAnyOffset", summaries: {{.*}} params: ((param: 0, offset: [-9223372036854775808, 9223372036854775806]))))) ; guid = 16159595372881907190 125; DCO-DAG: = gv: (guid: 16159595372881907190, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 4, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [-9223372036854775808, 9223372036854775806]))))){{$}} 126define void @WriteAnyOffset(i8* %p, i64 %i) #0 { 127entry: 128 %0 = bitcast i8* %p to i24* 129 %1 = getelementptr i24, i24* %0, i64 %i 130 store i24 0, i24* %1 131 ret void 132} 133 134; SSI-LABEL: for function 'WritePQ' 135; SSI: p[]: [0,1) 136; SSI: q[]: [0,4) 137; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=1 op5=0 op6=8 op7=0/> 138; BC-NEXT: <PERMODULE 139; DIS-DAG: = gv: (name: "WritePQ", summaries: {{.*}} params: ((param: 0, offset: [0, 0]), (param: 1, offset: [0, 3]))))) ; guid = 6187077497926519485 140; DCO-DAG: = gv: (guid: 6187077497926519485, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, 0]), (param: 1, offset: [0, 3]))))){{$}} 141define void @WritePQ(i8* %p, i32* %q) #0 { 142entry: 143 store i8 5, i8* %p 144 store i32 6, i32* %q 145 ret void 146} 147 148; SSI-LABEL: for function 'WriteTwoPIQ' 149; SSI: p[]: [0,1) 150; SSI: q[]: [0,4) 151; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=2 op5=0 op6=8 op7=0/> 152; BC-NEXT: <PERMODULE 153; DIS-DAG: = gv: (name: "WriteTwoPIQ", summaries: {{.*}} params: ((param: 0, offset: [0, 0]), (param: 2, offset: [0, 3]))))) ; guid = 2949024673554120799 154; DCO-DAG: = gv: (guid: 2949024673554120799, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, 0]), (param: 2, offset: [0, 3]))))){{$}} 155define void @WriteTwoPIQ(i8* %p, i32 %i, i32* %q) #0 { 156entry: 157 store i8 7, i8* %p 158 store i32 %i, i32* %q 159 ret void 160} 161 162; SSI-LABEL: for function 'Call' 163; SSI: p[]: empty-set, @Callee(arg0, [0,1)) 164; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE:-?[0-9]+]] op6=0 op7=2/> 165; BC-NEXT: <PERMODULE 166; DIS-DAG: = gv: (name: "Call", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [0, 0]))))))) ; guid = 8411925997558855107 167; DCO-DAG: = gv: (guid: 8411925997558855107, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 2, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]])), params: ((param: 0, offset: [0, -1], calls: ((callee: ^[[CALLEE]], param: 0, offset: [0, 0]))))))){{$}} 168define void @Call(i8* %p) #0 { 169entry: 170 call void @Callee(i8* %p) 171 ret void 172} 173 174; SSI-LABEL: for function 'CallOffset' 175; SSI: p[]: empty-set, @Callee(arg0, [2,3)) 176; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE]] op6=4 op7=6/> 177; BC-NEXT: <PERMODULE 178; DIS-DAG: = gv: (name: "CallOffset", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [2, 2]))))))) ; guid = 1075564720951610524 179; DCO-DAG: = gv: (guid: 1075564720951610524, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]])), params: ((param: 0, offset: [0, -1], calls: ((callee: ^[[CALLEE]], param: 0, offset: [2, 2]))))))){{$}} 180define void @CallOffset(i8* %p) #0 { 181entry: 182 %p1 = getelementptr i8, i8* %p, i64 2 183 call void @Callee(i8* %p1) 184 ret void 185} 186 187; SSI-LABEL: for function 'CallNegOffset' 188; SSI: p[]: empty-set, @Callee(arg0, [-715,-714)) 189; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE]] op6=1431 op7=1429/> 190; BC-NEXT: <PERMODULE 191; DIS-DAG: = gv: (name: "CallNegOffset", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [-715, -715]))))))) ; guid = 16532891468562335146 192; DCO-DAG: = gv: (guid: 16532891468562335146, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]])), params: ((param: 0, offset: [0, -1], calls: ((callee: ^[[CALLEE]], param: 0, offset: [-715, -715]))))))){{$}} 193define void @CallNegOffset(i8* %p) #0 { 194entry: 195 %p1 = getelementptr i8, i8* %p, i64 -715 196 call void @Callee(i8* %p1) 197 ret void 198} 199 200; BC-NEXT: <PERMODULE 201; SSI-LABEL: for function 'CallAnyOffset' 202; SSI: p[]: empty-set, @Callee(arg0, full-set) 203; DIS-DAG: = gv: (name: "CallAnyOffset", summaries: {{.*}} calls: ((callee: ^{{.*}}))))) ; guid = 4179978066780831873 204; DCO-DAG: = gv: (guid: 4179978066780831873, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]]))))){{$}} 205define void @CallAnyOffset(i8* %p, i64 %i) #0 { 206entry: 207 %p1 = getelementptr i8, i8* %p, i64 %i 208 call void @Callee(i8* %p1) 209 ret void 210} 211 212; SSI-LABEL: for function 'CallMany' 213; SSI: p[]: empty-set, @Callee(arg0, [-715,125)) 214; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE]] op6=1431 op7=250/> 215; BC-NEXT: <PERMODULE 216; DIS-DAG: = gv: (name: "CallMany", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [-715, 124]))))))) ; guid = 17150418543861409076 217; DCO-DAG: = gv: (guid: 17150418543861409076, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 7, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]])), params: ((param: 0, offset: [0, -1], calls: ((callee: ^[[CALLEE]], param: 0, offset: [-715, 124]))))))){{$}} 218define void @CallMany(i8* %p) #0 { 219entry: 220 %p0 = getelementptr i8, i8* %p, i64 -715 221 call void @Callee(i8* %p0) 222 223 %p1 = getelementptr i8, i8* %p, i64 -33 224 call void @Callee(i8* %p1) 225 226 %p2 = getelementptr i8, i8* %p, i64 124 227 call void @Callee(i8* %p2) 228 229 ret void 230} 231 232; SSI-LABEL: for function 'CallMany2' 233; SSI: p[]: empty-set, @Callee(arg0, [-715,125)), @Callee2(arg1, [-33,-32)) 234; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=2 op4=0 op5=[[CALLEE]] op6=1431 op7=250 op8=1 op9=[[CALLEE2:-?[0-9]+]] op10=67 op11=65/> 235; BC-NEXT: <PERMODULE 236; DIS-DAG: = gv: (name: "CallMany2", summaries: {{.*}} calls: ((callee: ^{{.*}}), (callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [-715, 124]), (callee: ^{{.*}}, param: 1, offset: [-33, -33]))))))) ; guid = 16654048340802466690 237; DCO-DAG: = gv: (guid: 16654048340802466690, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 7, funcFlags: ({{[^()]+}}), calls: ((callee: ^{{[0-9]+}}), (callee: ^{{[0-9]+}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{[0-9]+}}, param: 0, offset: [-715, 124]), (callee: ^{{[0-9]+}}, param: 1, offset: [-33, -33]))))))){{$}} 238define void @CallMany2(i8* %p) #0 { 239entry: 240 %p0 = getelementptr i8, i8* %p, i64 -715 241 call void @Callee(i8* %p0) 242 243 %p1 = getelementptr i8, i8* %p, i64 -33 244 call void @Callee2(i32 6, i8* %p1) 245 246 %p2 = getelementptr i8, i8* %p, i64 124 247 call void @Callee(i8* %p2) 248 249 ret void 250} 251 252; SSI-LABEL: for function 'CallManyUnsafe' 253; SSI: p[]: full-set, @Callee(arg0, [-715,125)) 254; BC-NEXT: <PERMODULE 255; DIS-DAG: = gv: (name: "CallManyUnsafe", summaries: {{.*}} calls: ((callee: ^{{.*}}))))) ; guid = 15696680128757863301 256; DCO-DAG: = gv: (guid: 15696680128757863301, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 9, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]]))))){{$}} 257define void @CallManyUnsafe(i8* %p, i64 %i) #0 { 258entry: 259 %pi = getelementptr i8, i8* %p, i64 %i 260 store i8 5, i8* %pi 261 262 %p0 = getelementptr i8, i8* %p, i64 -715 263 call void @Callee(i8* %p0) 264 265 %p1 = getelementptr i8, i8* %p, i64 -33 266 call void @Callee(i8* %p1) 267 268 %p2 = getelementptr i8, i8* %p, i64 124 269 call void @Callee(i8* %p2) 270 271 ret void 272} 273 274; SSI-LABEL: for function 'Ret' 275; SSI: p[]: full-set 276; BC-NEXT: <PERMODULE 277; DIS-DAG: = gv: (name: "Ret", summaries: {{.*}} ; guid = 6707380319572075172 278; DCO-DAG: = gv: (guid: 6707380319572075172, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}})))){{$}} 279define i8* @Ret(i8* %p) #0 { 280entry: 281 ret i8* %p 282} 283 284; BC-NOT: <PERMODULE 285; BC-NOT: <PARAM_ACCESS1 286 287 288; COMBINED: <FLAGS op0=0/> 289; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=[[CALLEE1:1]] op1=16929164 op2=2901240562/> 290; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=[[CALLEE2:2]] op1=209731497 op2=362741704/> 291; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=3 op1=250424426 op2=1162038428/> 292; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=4 op1=330115482 op2=2111435476/> 293; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=5 op1=686623312 op2=3842916447/> 294; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=6 op1=973226983 op2=3211083905/> 295; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=7 op1=1290060147 op2=3622505949/> 296; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=8 op1=1440541236 op2=767101629/> 297; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=9 op1=1561683677 op2=160047780/> 298; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=10 op1=1958554144 op2=1633580483/> 299; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=11 op1=2395229756 op2=192361927/> 300; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=12 op1=2758440458 op2=1889048978/> 301; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=13 op1=3065148999 op2=3004927693/> 302; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=14 op1=3553425976 op2=2012721546/> 303; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=15 op1=3654668137 op2=2609615749/> 304; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=16 op1=3762448991 op2=3668708854/> 305; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=17 op1=3849363762 op2=364807594/> 306; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=18 op1=3877572794 op2=2713121666/> 307; COMBINED-NEXT: <VALUE_GUID {{.*}} op0=19 op1=3993142988 op2=2149688628/> 308; COMBINED-NEXT: <PARAM_ACCESS op0=1 op1=0 op2=0 op3=0/> 309; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=1 310; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=0/> 311; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=2 312; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=4 op7=6/> 313; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=3 314; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=24 op2=32 op3=0/> 315; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=4 316; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=2 op5=0 op6=8 op7=0/> 317; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=5 318; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=6 319; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0/> 320; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=7 321; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=1 op5=0 op6=8 op7=0/> 322; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=8 323; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=9 324; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=0 op7=2/> 325; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=10 326; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=11 327; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=113 op2=97 op3=0/> 328; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=12 329; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=13 330; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=0/> 331; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=14 332; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=15 333; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=1 op2=-2 op3=0/> 334; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=16 335; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=1431 op7=1429/> 336; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=17 337; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=2 op4=0 op5=[[CALLEE2]] op6=1431 op7=250 op8=1 op9=[[CALLEE1]] op10=67 op11=65/> 338; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=18 339; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=1431 op7=250/> 340; COMBINED-NEXT: <COMBINED_PROFILE {{.*}} op0=19 341