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/>