14666953cSVitaly Buka; REQUIRES: aarch64-registered-target
24666953cSVitaly Buka
34666953cSVitaly Buka; For convenience, to show what is being serialized.
44666953cSVitaly Buka; RUN: opt -S -passes="print<stack-safety-local>" -disable-output < %s 2>&1 | FileCheck %s --check-prefixes=SSI
54666953cSVitaly Buka
64666953cSVitaly Buka; RUN: opt -module-summary %s -o %t.bc
74666953cSVitaly Buka; RUN: llvm-bcanalyzer -dump %t.bc | FileCheck %s -check-prefixes=BC
84666953cSVitaly Buka
903a822f7SVitaly Buka; RUN: opt -module-summary %p/Inputs/thinlto-function-summary-paramaccess.ll -o %t2.bc
1003a822f7SVitaly Buka
1103a822f7SVitaly Buka; RUN: llvm-lto -thinlto -o %t %t.bc %t2.bc
1203a822f7SVitaly Buka
1303a822f7SVitaly Buka; RUN: llvm-dis -o - %t.thinlto.bc | FileCheck %s --check-prefix=DCO
1403a822f7SVitaly Buka; Round trip it through llvm-as
1503a822f7SVitaly Buka; RUN: llvm-dis -o - %t.thinlto.bc | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=DCO
1603a822f7SVitaly Buka
1703a822f7SVitaly Buka; RUN: llvm-bcanalyzer -dump %t.thinlto.bc | FileCheck %s --check-prefix=COMBINED
1803a822f7SVitaly Buka
194666953cSVitaly Buka; RUN: llvm-dis -o - %t.bc | FileCheck %s --check-prefix=DIS
204666953cSVitaly Buka; Round trip it through llvm-as
214666953cSVitaly Buka; RUN: llvm-dis -o - %t.bc | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=DIS
224666953cSVitaly Buka
234666953cSVitaly Buka; RUN: opt -thinlto-bc %s -o %t.bc
244666953cSVitaly Buka; RUN: llvm-bcanalyzer -dump %t.bc | FileCheck %s -check-prefixes=BC
254666953cSVitaly Buka
264666953cSVitaly Buka; RUN: llvm-dis -o - %t.bc | FileCheck %s --check-prefix=DIS
274666953cSVitaly Buka; Round trip it through llvm-as
284666953cSVitaly Buka; RUN: llvm-dis -o - %t.bc | llvm-as -o - | llvm-dis -o - | FileCheck %s --check-prefix=DIS
294666953cSVitaly Buka
304666953cSVitaly Buka; DIS: ^0 = module: (path: "{{.*}}", hash: ({{.*}}))
3103a822f7SVitaly Buka; DCO: ^0 = module: (path: "{{.*}}", hash: ({{.*}}))
3203a822f7SVitaly Buka; DCO: ^1 = module: (path: "{{.*}}", hash: ({{.*}}))
3303a822f7SVitaly Buka
344666953cSVitaly Buka; ModuleID = 'thinlto-function-summary-paramaccess.ll'
354666953cSVitaly Bukatarget datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
364666953cSVitaly Bukatarget triple = "aarch64-unknown-linux"
374666953cSVitaly Buka
384666953cSVitaly Bukaattributes #0 = { noinline sanitize_memtag "target-features"="+mte,+neon" }
394666953cSVitaly Buka
404666953cSVitaly Buka; BC-LABEL: <GLOBALVAL_SUMMARY_BLOCK
414666953cSVitaly Buka; BC-NEXT: <VERSION
424666953cSVitaly Buka; BC-NEXT: <FLAGS
434666953cSVitaly Buka
444666953cSVitaly Buka; DIS-DAG: = gv: (name: "Callee") ; guid = 900789920918863816
4503a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 900789920918863816, summaries: (function: (module: ^1, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, -1]))))){{$}}
464666953cSVitaly Buka declare void @Callee(i8* %p)
474666953cSVitaly Buka
484666953cSVitaly Buka; DIS-DAG: = gv: (name: "Callee2") ; guid = 72710208629861106
4903a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 72710208629861106, summaries: (function: (module: ^1, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}}), params: ((param: 1, offset: [0, -1]))))){{$}}
504666953cSVitaly Buka declare void @Callee2(i32 %x, i8* %p)
514666953cSVitaly Buka
5203a822f7SVitaly Buka; BC: <PERMODULE
534666953cSVitaly Buka; DIS-DAG: = gv: (name: "NoParam", summaries: {{.*}} guid = 10287433468618421703
5403a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 10287433468618421703, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}})))){{$}}
554666953cSVitaly Bukadefine void @NoParam() #0 {
564666953cSVitaly Bukaentry:
574666953cSVitaly Buka  ret void
584666953cSVitaly Buka}
594666953cSVitaly Buka
604666953cSVitaly Buka; SSI-LABEL: function 'IntParam'
614666953cSVitaly Buka; BC-NEXT: <PERMODULE
624666953cSVitaly Buka; DIS-DAG: = gv: (name: "IntParam", summaries: {{.*}} guid = 13164714711077064397
6303a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 13164714711077064397, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}})))){{$}}
644666953cSVitaly Bukadefine void @IntParam(i32 %x) #0 {
654666953cSVitaly Bukaentry:
664666953cSVitaly Buka  ret void
674666953cSVitaly Buka}
684666953cSVitaly Buka
694666953cSVitaly Buka; SSI-LABEL: for function 'WriteNone'
704666953cSVitaly Buka; SSI: p[]: empty-set
714666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=0/>
724666953cSVitaly Buka; BC-NEXT: <PERMODULE
734666953cSVitaly Buka; DIS-DAG: = gv: (name: "WriteNone", summaries: {{.*}} params: ((param: 0, offset: [0, -1]))))) ; guid = 15261848357689602442
7403a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 15261848357689602442, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, -1]))))){{$}}
754666953cSVitaly Bukadefine void @WriteNone(i8* %p) #0 {
764666953cSVitaly Bukaentry:
774666953cSVitaly Buka  ret void
784666953cSVitaly Buka}
794666953cSVitaly Buka
804666953cSVitaly Buka; SSI-LABEL: for function 'Write0'
814666953cSVitaly Buka; SSI: p[]: [0,1)
824666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0/>
834666953cSVitaly Buka; BC-NEXT: <PERMODULE
844666953cSVitaly Buka; DIS-DAG: = gv: (name: "Write0", summaries: {{.*}} params: ((param: 0, offset: [0, 0]))))) ; guid = 5540766144860458461
8503a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 5540766144860458461, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 2, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, 0]))))){{$}}
864666953cSVitaly Bukadefine void @Write0(i8* %p) #0 {
874666953cSVitaly Bukaentry:
884666953cSVitaly Buka  store i8 0, i8* %p
894666953cSVitaly Buka  ret void
904666953cSVitaly Buka}
914666953cSVitaly Buka
924666953cSVitaly Buka; SSI-LABEL: for function 'WriteOffset'
934666953cSVitaly Buka; SSI: p[]: [12,16)
944666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=24 op2=32 op3=0/>
954666953cSVitaly Buka; BC-NEXT: <PERMODULE
964666953cSVitaly Buka; DIS-DAG: = gv: (name: "WriteOffset", summaries: {{.*}} params: ((param: 0, offset: [12, 15]))))) ; guid = 1417835201204712148
9703a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 1417835201204712148, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 4, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [12, 15]))))){{$}}
984666953cSVitaly Bukadefine void @WriteOffset(i8* %p) #0 {
994666953cSVitaly Bukaentry:
1004666953cSVitaly Buka  %0 = bitcast i8* %p to i32*
1014666953cSVitaly Buka  %1 = getelementptr i32, i32* %0, i64 3
1024666953cSVitaly Buka  store i32 0, i32* %1
1034666953cSVitaly Buka  ret void
1044666953cSVitaly Buka}
1054666953cSVitaly Buka
1064666953cSVitaly Buka; SSI-LABEL: for function 'WriteNegOffset'
1074666953cSVitaly Buka; SSI: p[]: [-56,-48)
1084666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=113 op2=97 op3=0/>
1094666953cSVitaly Buka; BC-NEXT: <PERMODULE
1104666953cSVitaly Buka; DIS-DAG: = gv: (name: "WriteNegOffset", summaries: {{.*}} params: ((param: 0, offset: [-56, -49]))))) ; guid = 11847411556962310546
11103a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 11847411556962310546, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 4, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [-56, -49]))))){{$}}
1124666953cSVitaly Bukadefine void @WriteNegOffset(i8* %p) #0 {
1134666953cSVitaly Bukaentry:
1144666953cSVitaly Buka  %0 = bitcast i8* %p to i64*
1154666953cSVitaly Buka  %1 = getelementptr i64, i64* %0, i64 -7
1164666953cSVitaly Buka  store i64 0, i64* %1
1174666953cSVitaly Buka  ret void
1184666953cSVitaly Buka}
1194666953cSVitaly Buka
1204666953cSVitaly Buka; SSI-LABEL: for function 'WriteAnyOffset'
1214666953cSVitaly Buka; SSI: p[]: [-9223372036854775808,9223372036854775807)
1224666953cSVitaly Buka; BC-NEXT:  <PARAM_ACCESS op0=0 op1=1 op2=-2 op3=0/>
1234666953cSVitaly Buka; BC-NEXT: <PERMODULE
1244666953cSVitaly Buka; DIS-DAG: = gv: (name: "WriteAnyOffset", summaries: {{.*}} params: ((param: 0, offset: [-9223372036854775808, 9223372036854775806]))))) ; guid = 16159595372881907190
12503a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 16159595372881907190, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 4, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [-9223372036854775808, 9223372036854775806]))))){{$}}
1264666953cSVitaly Bukadefine void @WriteAnyOffset(i8* %p, i64 %i) #0 {
1274666953cSVitaly Bukaentry:
1284666953cSVitaly Buka  %0 = bitcast i8* %p to i24*
1294666953cSVitaly Buka  %1 = getelementptr i24, i24* %0, i64 %i
1304666953cSVitaly Buka  store i24 0, i24* %1
1314666953cSVitaly Buka  ret void
1324666953cSVitaly Buka}
1334666953cSVitaly Buka
1344666953cSVitaly Buka; SSI-LABEL: for function 'WritePQ'
1354666953cSVitaly Buka; SSI: p[]: [0,1)
1364666953cSVitaly Buka; SSI: q[]: [0,4)
1374666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=1 op5=0 op6=8 op7=0/>
1384666953cSVitaly Buka; BC-NEXT: <PERMODULE
1394666953cSVitaly Buka; DIS-DAG: = gv: (name: "WritePQ", summaries: {{.*}} params: ((param: 0, offset: [0, 0]), (param: 1, offset: [0, 3]))))) ; guid = 6187077497926519485
14003a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 6187077497926519485, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, 0]), (param: 1, offset: [0, 3]))))){{$}}
1414666953cSVitaly Bukadefine void @WritePQ(i8* %p, i32* %q) #0 {
1424666953cSVitaly Bukaentry:
1434666953cSVitaly Buka  store i8 5, i8* %p
1444666953cSVitaly Buka  store i32 6, i32* %q
1454666953cSVitaly Buka  ret void
1464666953cSVitaly Buka}
1474666953cSVitaly Buka
1484666953cSVitaly Buka; SSI-LABEL: for function 'WriteTwoPIQ'
1494666953cSVitaly Buka; SSI: p[]: [0,1)
1504666953cSVitaly Buka; SSI: q[]: [0,4)
1514666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=2 op5=0 op6=8 op7=0/>
1524666953cSVitaly Buka; BC-NEXT: <PERMODULE
1534666953cSVitaly Buka; DIS-DAG: = gv: (name: "WriteTwoPIQ", summaries: {{.*}} params: ((param: 0, offset: [0, 0]), (param: 2, offset: [0, 3]))))) ; guid = 2949024673554120799
15403a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 2949024673554120799, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), params: ((param: 0, offset: [0, 0]), (param: 2, offset: [0, 3]))))){{$}}
1554666953cSVitaly Bukadefine void @WriteTwoPIQ(i8* %p, i32 %i, i32* %q) #0 {
1564666953cSVitaly Bukaentry:
1574666953cSVitaly Buka  store i8 7, i8* %p
1584666953cSVitaly Buka  store i32 %i, i32* %q
1594666953cSVitaly Buka  ret void
1604666953cSVitaly Buka}
1614666953cSVitaly Buka
1624666953cSVitaly Buka; SSI-LABEL: for function 'Call'
1634666953cSVitaly Buka; SSI: p[]: empty-set, @Callee(arg0, [0,1))
1644666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE:-?[0-9]+]] op6=0 op7=2/>
1654666953cSVitaly Buka; BC-NEXT: <PERMODULE
1664666953cSVitaly Buka; DIS-DAG: = gv: (name: "Call", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [0, 0]))))))) ; guid = 8411925997558855107
16703a822f7SVitaly Buka; 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]))))))){{$}}
1684666953cSVitaly Bukadefine void @Call(i8* %p) #0 {
1694666953cSVitaly Bukaentry:
1704666953cSVitaly Buka  call void @Callee(i8* %p)
1714666953cSVitaly Buka  ret void
1724666953cSVitaly Buka}
1734666953cSVitaly Buka
1744666953cSVitaly Buka; SSI-LABEL: for function 'CallOffset'
1754666953cSVitaly Buka; SSI: p[]: empty-set, @Callee(arg0, [2,3))
1764666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE]] op6=4 op7=6/>
1774666953cSVitaly Buka; BC-NEXT: <PERMODULE
1784666953cSVitaly Buka; DIS-DAG: = gv: (name: "CallOffset", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [2, 2]))))))) ; guid = 1075564720951610524
17903a822f7SVitaly Buka; 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]))))))){{$}}
1804666953cSVitaly Bukadefine void @CallOffset(i8* %p) #0 {
1814666953cSVitaly Bukaentry:
1824666953cSVitaly Buka  %p1 = getelementptr i8, i8* %p, i64 2
1834666953cSVitaly Buka  call void @Callee(i8* %p1)
1844666953cSVitaly Buka  ret void
1854666953cSVitaly Buka}
1864666953cSVitaly Buka
1874666953cSVitaly Buka; SSI-LABEL: for function 'CallNegOffset'
1884666953cSVitaly Buka; SSI: p[]: empty-set, @Callee(arg0, [-715,-714))
1894666953cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE]] op6=1431 op7=1429/>
1904666953cSVitaly Buka; BC-NEXT: <PERMODULE
1914666953cSVitaly Buka; DIS-DAG: = gv: (name: "CallNegOffset", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [-715, -715]))))))) ; guid = 16532891468562335146
19203a822f7SVitaly Buka; 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]))))))){{$}}
1934666953cSVitaly Bukadefine void @CallNegOffset(i8* %p) #0 {
1944666953cSVitaly Bukaentry:
1954666953cSVitaly Buka  %p1 = getelementptr i8, i8* %p, i64 -715
1964666953cSVitaly Buka  call void @Callee(i8* %p1)
1974666953cSVitaly Buka  ret void
1984666953cSVitaly Buka}
1994666953cSVitaly Buka
2004666953cSVitaly Buka; BC-NEXT: <PERMODULE
2014666953cSVitaly Buka; SSI-LABEL: for function 'CallAnyOffset'
2024666953cSVitaly Buka; SSI: p[]: empty-set, @Callee(arg0, full-set)
2034666953cSVitaly Buka; DIS-DAG: = gv: (name: "CallAnyOffset", summaries: {{.*}} calls: ((callee: ^{{.*}}))))) ; guid = 4179978066780831873
20403a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 4179978066780831873, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 3, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]]))))){{$}}
2054666953cSVitaly Bukadefine void @CallAnyOffset(i8* %p, i64 %i) #0 {
2064666953cSVitaly Bukaentry:
2074666953cSVitaly Buka  %p1 = getelementptr i8, i8* %p, i64 %i
2084666953cSVitaly Buka  call void @Callee(i8* %p1)
2094666953cSVitaly Buka  ret void
2104666953cSVitaly Buka}
2114666953cSVitaly Buka
2124666953cSVitaly Buka; SSI-LABEL: for function 'CallMany'
213798eb71cSVitaly Buka; SSI: p[]: empty-set, @Callee(arg0, [-715,125))
214798eb71cSVitaly Buka; BC-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE]] op6=1431 op7=250/>
2154666953cSVitaly Buka; BC-NEXT: <PERMODULE
216798eb71cSVitaly Buka; DIS-DAG: = gv: (name: "CallMany", summaries: {{.*}} calls: ((callee: ^{{.*}})), params: ((param: 0, offset: [0, -1], calls: ((callee: ^{{.*}}, param: 0, offset: [-715, 124]))))))) ; guid = 17150418543861409076
217798eb71cSVitaly Buka; 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]))))))){{$}}
2184666953cSVitaly Bukadefine void @CallMany(i8* %p) #0 {
2194666953cSVitaly Bukaentry:
2204666953cSVitaly Buka  %p0 = getelementptr i8, i8* %p, i64 -715
2214666953cSVitaly Buka  call void @Callee(i8* %p0)
2224666953cSVitaly Buka
2234666953cSVitaly Buka  %p1 = getelementptr i8, i8* %p, i64 -33
2244666953cSVitaly Buka  call void @Callee(i8* %p1)
2254666953cSVitaly Buka
2264666953cSVitaly Buka  %p2 = getelementptr i8, i8* %p, i64 124
2274666953cSVitaly Buka  call void @Callee(i8* %p2)
2284666953cSVitaly Buka
2294666953cSVitaly Buka  ret void
2304666953cSVitaly Buka}
2314666953cSVitaly Buka
2324666953cSVitaly Buka; SSI-LABEL: for function 'CallMany2'
233*3b348d91SVitaly Buka; SSI: p[]: empty-set, @Callee(arg0, [-715,125)), @Callee2(arg1, [-33,-32))
234798eb71cSVitaly Buka; 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/>
2354666953cSVitaly Buka; BC-NEXT: <PERMODULE
236798eb71cSVitaly Buka; 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
237798eb71cSVitaly Buka; 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]))))))){{$}}
2384666953cSVitaly Bukadefine void @CallMany2(i8* %p) #0 {
2394666953cSVitaly Bukaentry:
2404666953cSVitaly Buka  %p0 = getelementptr i8, i8* %p, i64 -715
2414666953cSVitaly Buka  call void @Callee(i8* %p0)
2424666953cSVitaly Buka
2434666953cSVitaly Buka  %p1 = getelementptr i8, i8* %p, i64 -33
2444666953cSVitaly Buka  call void @Callee2(i32 6, i8* %p1)
2454666953cSVitaly Buka
2464666953cSVitaly Buka  %p2 = getelementptr i8, i8* %p, i64 124
2474666953cSVitaly Buka  call void @Callee(i8* %p2)
2484666953cSVitaly Buka
2494666953cSVitaly Buka  ret void
2504666953cSVitaly Buka}
2514666953cSVitaly Buka
2524666953cSVitaly Buka; SSI-LABEL: for function 'CallManyUnsafe'
253798eb71cSVitaly Buka; SSI: p[]: full-set, @Callee(arg0, [-715,125))
2544666953cSVitaly Buka; BC-NEXT: <PERMODULE
2554666953cSVitaly Buka; DIS-DAG: = gv: (name: "CallManyUnsafe", summaries: {{.*}} calls: ((callee: ^{{.*}}))))) ; guid = 15696680128757863301
25603a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 15696680128757863301, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 9, funcFlags: ({{[^()]+}}), calls: ((callee: ^[[CALLEE:.]]))))){{$}}
2574666953cSVitaly Bukadefine void @CallManyUnsafe(i8* %p, i64 %i) #0 {
2584666953cSVitaly Bukaentry:
2594666953cSVitaly Buka  %pi = getelementptr i8, i8* %p, i64 %i
2604666953cSVitaly Buka  store i8 5, i8* %pi
2614666953cSVitaly Buka
2624666953cSVitaly Buka  %p0 = getelementptr i8, i8* %p, i64 -715
2634666953cSVitaly Buka  call void @Callee(i8* %p0)
2644666953cSVitaly Buka
2654666953cSVitaly Buka  %p1 = getelementptr i8, i8* %p, i64 -33
2664666953cSVitaly Buka  call void @Callee(i8* %p1)
2674666953cSVitaly Buka
2684666953cSVitaly Buka  %p2 = getelementptr i8, i8* %p, i64 124
2694666953cSVitaly Buka  call void @Callee(i8* %p2)
2704666953cSVitaly Buka
2714666953cSVitaly Buka  ret void
2724666953cSVitaly Buka}
2734666953cSVitaly Buka
2744666953cSVitaly Buka; SSI-LABEL: for function 'Ret'
2754666953cSVitaly Buka; SSI: p[]: full-set
2764666953cSVitaly Buka; BC-NEXT: <PERMODULE
2774666953cSVitaly Buka; DIS-DAG: = gv: (name: "Ret", summaries: {{.*}} ; guid = 6707380319572075172
27803a822f7SVitaly Buka; DCO-DAG: = gv: (guid: 6707380319572075172, summaries: (function: (module: ^0, flags: ({{[^()]+}}), insts: 1, funcFlags: ({{[^()]+}})))){{$}}
2794666953cSVitaly Bukadefine i8* @Ret(i8* %p) #0 {
2804666953cSVitaly Bukaentry:
2814666953cSVitaly Buka  ret i8* %p
2824666953cSVitaly Buka}
2834666953cSVitaly Buka
2844666953cSVitaly Buka; BC-NOT: <PERMODULE
2854666953cSVitaly Buka; BC-NOT: <PARAM_ACCESS1
2864666953cSVitaly Buka
2874666953cSVitaly Buka
28803a822f7SVitaly Buka; COMBINED: <FLAGS op0=0/>
289fc4fd898SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=[[CALLEE1:1]] op1=72710208629861106/>
290fc4fd898SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=[[CALLEE2:2]] op1=900789920918863816/>
29103a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=3 op1=1075564720951610524/>
29203a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=4 op1=1417835201204712148/>
29303a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=5 op1=2949024673554120799/>
29403a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=6 op1=4179978066780831873/>
29503a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=7 op1=5540766144860458461/>
29603a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=8 op1=6187077497926519485/>
29703a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=9 op1=6707380319572075172/>
29803a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=10 op1=8411925997558855107/>
29903a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=11 op1=-8159310605091129913/>
30003a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=12 op1=-6599332516747241070/>
30103a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=13 op1=-5282029362632487219/>
30203a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=14 op1=-3184895716019949174/>
30303a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=15 op1=-2750063944951688315/>
30403a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=16 op1=-2287148700827644426/>
30503a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=17 op1=-1913852605147216470/>
30603a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=18 op1=-1792695732907084926/>
30703a822f7SVitaly Buka; COMBINED-NEXT: <VALUE_GUID op0=19 op1=-1296325529848142540/>
30803a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=1 op1=0 op2=0 op3=0/>
30903a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=1
31003a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=0/>
31103a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=2
31203a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=4 op7=6/>
31303a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=3
31403a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=24 op2=32 op3=0/>
31503a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=4
31603a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=2 op5=0 op6=8 op7=0/>
31703a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=5
31803a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=6
31903a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0/>
32003a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=7
32103a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=2 op3=0 op4=1 op5=0 op6=8 op7=0/>
32203a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=8
32303a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=9
32403a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=0 op7=2/>
32503a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=10
32603a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=11
32703a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=113 op2=97 op3=0/>
32803a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=12
32903a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=13
33003a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=0/>
33103a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=14
33203a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=15
33303a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=1 op2=-2 op3=0/>
33403a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=16
33503a822f7SVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=1431 op7=1429/>
33603a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=17
337798eb71cSVitaly Buka; 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/>
33803a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=18
339798eb71cSVitaly Buka; COMBINED-NEXT: <PARAM_ACCESS op0=0 op1=0 op2=0 op3=1 op4=0 op5=[[CALLEE2]] op6=1431 op7=250/>
34003a822f7SVitaly Buka; COMBINED-NEXT: <COMBINED abbrevid=4 op0=19
34103a822f7SVitaly Buka; COMBINED-NEXT: <BLOCK_COUNT op0=19/>