Skip to content

Commit 2da46ad

Browse files
committed
C++: Add two testcases demonstrating malformed IR from missing declaration entries from decl stmts.
1 parent 2223bc3 commit 2da46ad

File tree

6 files changed

+441
-0
lines changed

6 files changed

+441
-0
lines changed

cpp/ql/test/library-tests/ir/ir/PrintAST.expected

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14161,6 +14161,221 @@ ir.cpp:
1416114161
# 1851| Type = [PointerType] const char *
1416214162
# 1851| ValueCategory = prvalue
1416314163
# 1852| getStmt(2): [ReturnStmt] return ...
14164+
# 1855| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&)
14165+
# 1855| <params>:
14166+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14167+
#-----| Type = [LValueReferenceType] const S &
14168+
# 1855| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&)
14169+
# 1855| <params>:
14170+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14171+
#-----| Type = [RValueReferenceType] S &&
14172+
# 1859| [CopyAssignmentOperator] missing_declaration_entries::Bar1<int>& missing_declaration_entries::Bar1<int>::operator=(missing_declaration_entries::Bar1<int> const&)
14173+
# 1859| <params>:
14174+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14175+
#-----| Type = [LValueReferenceType] const Bar1<int> &
14176+
# 1859| [MoveAssignmentOperator] missing_declaration_entries::Bar1<int>& missing_declaration_entries::Bar1<int>::operator=(missing_declaration_entries::Bar1<int>&&)
14177+
# 1859| <params>:
14178+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14179+
#-----| Type = [RValueReferenceType] Bar1<int> &&
14180+
# 1862| [MemberFunction] void* missing_declaration_entries::Bar1<T>::missing_type_decl_entry(missing_declaration_entries::Bar1<T>::pointer)
14181+
# 1862| <params>:
14182+
# 1862| getParameter(0): [Parameter] p
14183+
# 1862| Type = [CTypedefType,NestedTypedefType] pointer
14184+
# 1862| getEntryPoint(): [BlockStmt] { ... }
14185+
# 1863| getStmt(0): [DeclStmt] declaration
14186+
# 1863| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res
14187+
# 1863| Type = [CTypedefType,LocalTypedefType] _Res
14188+
# 1864| getStmt(1): [ReturnStmt] return ...
14189+
# 1864| getExpr(): [VariableAccess] p
14190+
# 1864| Type = [CTypedefType,NestedTypedefType] pointer
14191+
# 1864| ValueCategory = prvalue(load)
14192+
# 1864| getExpr().getFullyConverted(): [CStyleCast] (void *)...
14193+
# 1864| Conversion = [PointerConversion] pointer conversion
14194+
# 1864| Type = [VoidPointerType] void *
14195+
# 1864| ValueCategory = prvalue
14196+
# 1862| [MemberFunction] void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer)
14197+
# 1862| <params>:
14198+
# 1862| getParameter(0): [Parameter] p
14199+
# 1862| Type = [CTypedefType,NestedTypedefType] pointer
14200+
# 1862| getEntryPoint(): [BlockStmt] { ... }
14201+
# 1863| getStmt(0): [DeclStmt] declaration
14202+
# 1864| getStmt(1): [ReturnStmt] return ...
14203+
# 1864| getExpr(): [VariableAccess] p
14204+
# 1864| Type = [CTypedefType,NestedTypedefType] pointer
14205+
# 1864| ValueCategory = prvalue(load)
14206+
# 1864| getExpr().getFullyConverted(): [CStyleCast] (void *)...
14207+
# 1864| Conversion = [PointerConversion] pointer conversion
14208+
# 1864| Type = [VoidPointerType] void *
14209+
# 1864| ValueCategory = prvalue
14210+
# 1868| [TopLevelFunction] void missing_declaration_entries::test1()
14211+
# 1868| <params>:
14212+
# 1868| getEntryPoint(): [BlockStmt] { ... }
14213+
# 1869| getStmt(0): [DeclStmt] declaration
14214+
# 1869| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b
14215+
# 1869| Type = [ClassTemplateInstantiation,Struct] Bar1<int>
14216+
# 1870| getStmt(1): [ExprStmt] ExprStmt
14217+
# 1870| getExpr(): [FunctionCall] call to missing_type_decl_entry
14218+
# 1870| Type = [VoidPointerType] void *
14219+
# 1870| ValueCategory = prvalue
14220+
# 1870| getQualifier(): [VariableAccess] b
14221+
# 1870| Type = [ClassTemplateInstantiation,Struct] Bar1<int>
14222+
# 1870| ValueCategory = lvalue
14223+
# 1870| getArgument(0): [Literal] 0
14224+
# 1870| Type = [NullPointerType] decltype(nullptr)
14225+
# 1870| Value = [Literal] 0
14226+
# 1870| ValueCategory = prvalue
14227+
# 1870| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)...
14228+
# 1870| Conversion = [PointerConversion] pointer conversion
14229+
# 1870| Type = [CTypedefType,NestedTypedefType] pointer
14230+
# 1870| Value = [CStyleCast] 0
14231+
# 1870| ValueCategory = prvalue
14232+
# 1871| getStmt(2): [ReturnStmt] return ...
14233+
# 1873| [CopyAssignmentOperator] missing_declaration_entries::Bar2<int>& missing_declaration_entries::Bar2<int>::operator=(missing_declaration_entries::Bar2<int> const&)
14234+
# 1873| <params>:
14235+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14236+
#-----| Type = [LValueReferenceType] const Bar2<int> &
14237+
# 1873| [MoveAssignmentOperator] missing_declaration_entries::Bar2<int>& missing_declaration_entries::Bar2<int>::operator=(missing_declaration_entries::Bar2<int>&&)
14238+
# 1873| <params>:
14239+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14240+
#-----| Type = [RValueReferenceType] Bar2<int> &&
14241+
# 1875| [MemberFunction] int missing_declaration_entries::Bar2<T>::two_missing_variable_declaration_entries()
14242+
# 1875| <params>:
14243+
# 1875| getEntryPoint(): [BlockStmt] { ... }
14244+
# 1876| getStmt(0): [DeclStmt] declaration
14245+
# 1876| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
14246+
# 1876| Type = [ArrayType] int[10]
14247+
# 1876| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y
14248+
# 1876| Type = [ArrayType] int[10]
14249+
# 1877| getStmt(1): [ExprStmt] ExprStmt
14250+
# 1877| getExpr(): [AssignExpr] ... = ...
14251+
# 1877| Type = [IntType] int
14252+
# 1877| ValueCategory = lvalue
14253+
# 1877| getLValue(): [PointerDereferenceExpr] * ...
14254+
# 1877| Type = [IntType] int
14255+
# 1877| ValueCategory = lvalue
14256+
# 1877| getOperand(): [VariableAccess] x
14257+
# 1877| Type = [ArrayType] int[10]
14258+
# 1877| ValueCategory = lvalue
14259+
# 1877| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14260+
# 1877| Type = [IntPointerType] int *
14261+
# 1877| ValueCategory = prvalue
14262+
# 1877| getRValue(): [Literal] 10
14263+
# 1877| Type = [IntType] int
14264+
# 1877| Value = [Literal] 10
14265+
# 1877| ValueCategory = prvalue
14266+
# 1878| getStmt(2): [ExprStmt] ExprStmt
14267+
# 1878| getExpr(): [AssignExpr] ... = ...
14268+
# 1878| Type = [IntType] int
14269+
# 1878| ValueCategory = lvalue
14270+
# 1878| getLValue(): [PointerDereferenceExpr] * ...
14271+
# 1878| Type = [IntType] int
14272+
# 1878| ValueCategory = lvalue
14273+
# 1878| getOperand(): [VariableAccess] y
14274+
# 1878| Type = [ArrayType] int[10]
14275+
# 1878| ValueCategory = lvalue
14276+
# 1878| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14277+
# 1878| Type = [IntPointerType] int *
14278+
# 1878| ValueCategory = prvalue
14279+
# 1878| getRValue(): [Literal] 10
14280+
# 1878| Type = [IntType] int
14281+
# 1878| Value = [Literal] 10
14282+
# 1878| ValueCategory = prvalue
14283+
# 1879| getStmt(3): [ReturnStmt] return ...
14284+
# 1879| getExpr(): [AddExpr] ... + ...
14285+
# 1879| Type = [IntType] int
14286+
# 1879| ValueCategory = prvalue
14287+
# 1879| getLeftOperand(): [PointerDereferenceExpr] * ...
14288+
# 1879| Type = [IntType] int
14289+
# 1879| ValueCategory = prvalue(load)
14290+
# 1879| getOperand(): [VariableAccess] x
14291+
# 1879| Type = [ArrayType] int[10]
14292+
# 1879| ValueCategory = lvalue
14293+
# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14294+
# 1879| Type = [IntPointerType] int *
14295+
# 1879| ValueCategory = prvalue
14296+
# 1879| getRightOperand(): [PointerDereferenceExpr] * ...
14297+
# 1879| Type = [IntType] int
14298+
# 1879| ValueCategory = prvalue(load)
14299+
# 1879| getOperand(): [VariableAccess] y
14300+
# 1879| Type = [ArrayType] int[10]
14301+
# 1879| ValueCategory = lvalue
14302+
# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14303+
# 1879| Type = [IntPointerType] int *
14304+
# 1879| ValueCategory = prvalue
14305+
# 1875| [MemberFunction] int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries()
14306+
# 1875| <params>:
14307+
# 1875| getEntryPoint(): [BlockStmt] { ... }
14308+
# 1876| getStmt(0): [DeclStmt] declaration
14309+
# 1877| getStmt(1): [ExprStmt] ExprStmt
14310+
# 1877| getExpr(): [AssignExpr] ... = ...
14311+
# 1877| Type = [IntType] int
14312+
# 1877| ValueCategory = lvalue
14313+
# 1877| getLValue(): [PointerDereferenceExpr] * ...
14314+
# 1877| Type = [IntType] int
14315+
# 1877| ValueCategory = lvalue
14316+
# 1877| getOperand(): [VariableAccess] x
14317+
# 1877| Type = [ArrayType] int[10]
14318+
# 1877| ValueCategory = lvalue
14319+
# 1877| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14320+
# 1877| Type = [IntPointerType] int *
14321+
# 1877| ValueCategory = prvalue
14322+
# 1877| getRValue(): [Literal] 10
14323+
# 1877| Type = [IntType] int
14324+
# 1877| Value = [Literal] 10
14325+
# 1877| ValueCategory = prvalue
14326+
# 1878| getStmt(2): [ExprStmt] ExprStmt
14327+
# 1878| getExpr(): [AssignExpr] ... = ...
14328+
# 1878| Type = [IntType] int
14329+
# 1878| ValueCategory = lvalue
14330+
# 1878| getLValue(): [PointerDereferenceExpr] * ...
14331+
# 1878| Type = [IntType] int
14332+
# 1878| ValueCategory = lvalue
14333+
# 1878| getOperand(): [VariableAccess] y
14334+
# 1878| Type = [ArrayType] int[10]
14335+
# 1878| ValueCategory = lvalue
14336+
# 1878| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14337+
# 1878| Type = [IntPointerType] int *
14338+
# 1878| ValueCategory = prvalue
14339+
# 1878| getRValue(): [Literal] 10
14340+
# 1878| Type = [IntType] int
14341+
# 1878| Value = [Literal] 10
14342+
# 1878| ValueCategory = prvalue
14343+
# 1879| getStmt(3): [ReturnStmt] return ...
14344+
# 1879| getExpr(): [AddExpr] ... + ...
14345+
# 1879| Type = [IntType] int
14346+
# 1879| ValueCategory = prvalue
14347+
# 1879| getLeftOperand(): [PointerDereferenceExpr] * ...
14348+
# 1879| Type = [IntType] int
14349+
# 1879| ValueCategory = prvalue(load)
14350+
# 1879| getOperand(): [VariableAccess] x
14351+
# 1879| Type = [ArrayType] int[10]
14352+
# 1879| ValueCategory = lvalue
14353+
# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14354+
# 1879| Type = [IntPointerType] int *
14355+
# 1879| ValueCategory = prvalue
14356+
# 1879| getRightOperand(): [PointerDereferenceExpr] * ...
14357+
# 1879| Type = [IntType] int
14358+
# 1879| ValueCategory = prvalue(load)
14359+
# 1879| getOperand(): [VariableAccess] y
14360+
# 1879| Type = [ArrayType] int[10]
14361+
# 1879| ValueCategory = lvalue
14362+
# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
14363+
# 1879| Type = [IntPointerType] int *
14364+
# 1879| ValueCategory = prvalue
14365+
# 1883| [TopLevelFunction] void missing_declaration_entries::test2()
14366+
# 1883| <params>:
14367+
# 1883| getEntryPoint(): [BlockStmt] { ... }
14368+
# 1884| getStmt(0): [DeclStmt] declaration
14369+
# 1884| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b
14370+
# 1884| Type = [ClassTemplateInstantiation,Struct] Bar2<int>
14371+
# 1885| getStmt(1): [ExprStmt] ExprStmt
14372+
# 1885| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries
14373+
# 1885| Type = [IntType] int
14374+
# 1885| ValueCategory = prvalue
14375+
# 1885| getQualifier(): [VariableAccess] b
14376+
# 1885| Type = [ClassTemplateInstantiation,Struct] Bar2<int>
14377+
# 1885| ValueCategory = lvalue
14378+
# 1886| getStmt(2): [ReturnStmt] return ...
1416414379
perf-regression.cpp:
1416514380
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
1416614381
# 4| <params>:

cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ unexpectedOperand
33
duplicateOperand
44
missingPhiOperand
55
missingOperandType
6+
| ir.cpp:1877:13:1877:19 | ChiTotal | Operand 'ChiTotal' of instruction 'Chi' is missing a type in function '$@'. | ir.cpp:1875:13:1875:13 | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() |
7+
| ir.cpp:1878:13:1878:19 | ChiTotal | Operand 'ChiTotal' of instruction 'Chi' is missing a type in function '$@'. | ir.cpp:1875:13:1875:13 | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() |
68
duplicateChiOperand
79
sideEffectWithoutPrimary
810
instructionWithoutSuccessor

cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ unexpectedOperand
33
duplicateOperand
44
missingPhiOperand
55
missingOperandType
6+
| ir.cpp:1877:13:1877:19 | ChiTotal | Operand 'ChiTotal' of instruction 'Chi' is missing a type in function '$@'. | ir.cpp:1875:13:1875:13 | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() |
7+
| ir.cpp:1878:13:1878:19 | ChiTotal | Operand 'ChiTotal' of instruction 'Chi' is missing a type in function '$@'. | ir.cpp:1875:13:1875:13 | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() | int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() |
68
duplicateChiOperand
79
sideEffectWithoutPrimary
810
instructionWithoutSuccessor

cpp/ql/test/library-tests/ir/ir/ir.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,4 +1851,39 @@ void magicvars() {
18511851
const char *strfunc = __func__;
18521852
}
18531853

1854+
namespace missing_declaration_entries {
1855+
struct S {};
1856+
1857+
template<typename A, typename B> struct pair{};
1858+
1859+
template<typename T> struct Bar1 {
1860+
typedef S* pointer;
1861+
1862+
void* missing_type_decl_entry(pointer p) {
1863+
typedef pair<pointer, bool> _Res;
1864+
return p;
1865+
}
1866+
};
1867+
1868+
void test1() {
1869+
Bar1<int> b;
1870+
b.missing_type_decl_entry(nullptr);
1871+
}
1872+
1873+
template<typename T> struct Bar2 {
1874+
1875+
int two_missing_variable_declaration_entries() {
1876+
int x[10], y[10];
1877+
*x = 10;
1878+
*y = 10;
1879+
return *x + *y;
1880+
}
1881+
};
1882+
1883+
void test2() {
1884+
Bar2<int> b;
1885+
b.two_missing_variable_declaration_entries();
1886+
}
1887+
}
1888+
18541889
// semmle-extractor-options: -std=c++17 --clang

cpp/ql/test/library-tests/ir/ir/operand_locations.expected

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8650,6 +8650,95 @@
86508650
| ir.cpp:1851:17:1851:23 | Address | &:r1851_1 |
86518651
| ir.cpp:1851:27:1851:34 | StoreValue | r1851_3 |
86528652
| ir.cpp:1851:27:1851:34 | Unary | r1851_2 |
8653+
| ir.cpp:1862:15:1862:15 | Address | &:r1862_5 |
8654+
| ir.cpp:1862:15:1862:15 | Address | &:r1862_5 |
8655+
| ir.cpp:1862:15:1862:15 | Address | &:r1862_7 |
8656+
| ir.cpp:1862:15:1862:15 | Address | &:r1862_7 |
8657+
| ir.cpp:1862:15:1862:15 | Address | &:r1862_15 |
8658+
| ir.cpp:1862:15:1862:15 | ChiPartial | partial:m1862_3 |
8659+
| ir.cpp:1862:15:1862:15 | ChiTotal | total:m1862_2 |
8660+
| ir.cpp:1862:15:1862:15 | Load | m1862_6 |
8661+
| ir.cpp:1862:15:1862:15 | Load | m1864_5 |
8662+
| ir.cpp:1862:15:1862:15 | SideEffect | m1862_3 |
8663+
| ir.cpp:1862:15:1862:15 | SideEffect | m1862_8 |
8664+
| ir.cpp:1862:47:1862:47 | Address | &:r1862_9 |
8665+
| ir.cpp:1862:47:1862:47 | Address | &:r1862_9 |
8666+
| ir.cpp:1862:47:1862:47 | Address | &:r1862_11 |
8667+
| ir.cpp:1862:47:1862:47 | Address | &:r1862_11 |
8668+
| ir.cpp:1862:47:1862:47 | Load | m1862_10 |
8669+
| ir.cpp:1862:47:1862:47 | SideEffect | m1862_12 |
8670+
| ir.cpp:1864:13:1864:21 | Address | &:r1864_1 |
8671+
| ir.cpp:1864:20:1864:20 | Address | &:r1864_2 |
8672+
| ir.cpp:1864:20:1864:20 | Load | m1862_10 |
8673+
| ir.cpp:1864:20:1864:20 | StoreValue | r1864_4 |
8674+
| ir.cpp:1864:20:1864:20 | Unary | r1864_3 |
8675+
| ir.cpp:1868:10:1868:14 | ChiPartial | partial:m1868_3 |
8676+
| ir.cpp:1868:10:1868:14 | ChiTotal | total:m1868_2 |
8677+
| ir.cpp:1868:10:1868:14 | SideEffect | ~m1870_12 |
8678+
| ir.cpp:1869:19:1869:19 | Address | &:r1869_1 |
8679+
| ir.cpp:1870:9:1870:9 | Address | &:r1870_1 |
8680+
| ir.cpp:1870:9:1870:9 | Address | &:r1870_1 |
8681+
| ir.cpp:1870:9:1870:9 | Arg(this) | this:r1870_1 |
8682+
| ir.cpp:1870:9:1870:9 | ChiPartial | partial:m1870_9 |
8683+
| ir.cpp:1870:9:1870:9 | ChiTotal | total:m1869_2 |
8684+
| ir.cpp:1870:9:1870:9 | SideEffect | m1869_2 |
8685+
| ir.cpp:1870:11:1870:33 | CallTarget | func:r1870_2 |
8686+
| ir.cpp:1870:11:1870:33 | ChiPartial | partial:m1870_5 |
8687+
| ir.cpp:1870:11:1870:33 | ChiTotal | total:m1868_4 |
8688+
| ir.cpp:1870:11:1870:33 | SideEffect | ~m1868_4 |
8689+
| ir.cpp:1870:35:1870:41 | Address | &:r1870_3 |
8690+
| ir.cpp:1870:35:1870:41 | Address | &:r1870_3 |
8691+
| ir.cpp:1870:35:1870:41 | Arg(0) | 0:r1870_3 |
8692+
| ir.cpp:1870:35:1870:41 | ChiPartial | partial:m1870_11 |
8693+
| ir.cpp:1870:35:1870:41 | ChiTotal | total:m1870_6 |
8694+
| ir.cpp:1870:35:1870:41 | SideEffect | ~m1870_6 |
8695+
| ir.cpp:1875:13:1875:13 | Address | &:r1875_5 |
8696+
| ir.cpp:1875:13:1875:13 | Address | &:r1875_5 |
8697+
| ir.cpp:1875:13:1875:13 | Address | &:r1875_7 |
8698+
| ir.cpp:1875:13:1875:13 | Address | &:r1875_7 |
8699+
| ir.cpp:1875:13:1875:13 | Address | &:r1875_10 |
8700+
| ir.cpp:1875:13:1875:13 | ChiPartial | partial:m1875_3 |
8701+
| ir.cpp:1875:13:1875:13 | ChiTotal | total:m1875_2 |
8702+
| ir.cpp:1875:13:1875:13 | Load | m1875_6 |
8703+
| ir.cpp:1875:13:1875:13 | Load | m1879_9 |
8704+
| ir.cpp:1875:13:1875:13 | SideEffect | m1875_3 |
8705+
| ir.cpp:1875:13:1875:13 | SideEffect | m1875_8 |
8706+
| ir.cpp:1877:13:1877:14 | Address | &:r1877_4 |
8707+
| ir.cpp:1877:13:1877:19 | ChiPartial | partial:m1877_5 |
8708+
| ir.cpp:1877:13:1877:19 | ChiTotal | total:~m? |
8709+
| ir.cpp:1877:14:1877:14 | Unary | r1877_2 |
8710+
| ir.cpp:1877:14:1877:14 | Unary | r1877_3 |
8711+
| ir.cpp:1877:18:1877:19 | StoreValue | r1877_1 |
8712+
| ir.cpp:1878:13:1878:14 | Address | &:r1878_4 |
8713+
| ir.cpp:1878:13:1878:19 | ChiPartial | partial:m1878_5 |
8714+
| ir.cpp:1878:13:1878:19 | ChiTotal | total:~m? |
8715+
| ir.cpp:1878:14:1878:14 | Unary | r1878_2 |
8716+
| ir.cpp:1878:14:1878:14 | Unary | r1878_3 |
8717+
| ir.cpp:1878:18:1878:19 | StoreValue | r1878_1 |
8718+
| ir.cpp:1879:13:1879:27 | Address | &:r1879_1 |
8719+
| ir.cpp:1879:20:1879:21 | Left | r1879_4 |
8720+
| ir.cpp:1879:20:1879:21 | Load | m1877_5 |
8721+
| ir.cpp:1879:20:1879:26 | StoreValue | r1879_8 |
8722+
| ir.cpp:1879:21:1879:21 | Address | &:r1879_3 |
8723+
| ir.cpp:1879:21:1879:21 | Unary | r1879_2 |
8724+
| ir.cpp:1879:25:1879:26 | Load | m1878_5 |
8725+
| ir.cpp:1879:25:1879:26 | Right | r1879_7 |
8726+
| ir.cpp:1879:26:1879:26 | Address | &:r1879_6 |
8727+
| ir.cpp:1879:26:1879:26 | Unary | r1879_5 |
8728+
| ir.cpp:1883:10:1883:14 | ChiPartial | partial:m1883_3 |
8729+
| ir.cpp:1883:10:1883:14 | ChiTotal | total:m1883_2 |
8730+
| ir.cpp:1883:10:1883:14 | SideEffect | ~m1885_5 |
8731+
| ir.cpp:1884:19:1884:19 | Address | &:r1884_1 |
8732+
| ir.cpp:1885:9:1885:9 | Address | &:r1885_1 |
8733+
| ir.cpp:1885:9:1885:9 | Address | &:r1885_1 |
8734+
| ir.cpp:1885:9:1885:9 | Arg(this) | this:r1885_1 |
8735+
| ir.cpp:1885:9:1885:9 | ChiPartial | partial:m1885_7 |
8736+
| ir.cpp:1885:9:1885:9 | ChiTotal | total:m1884_2 |
8737+
| ir.cpp:1885:9:1885:9 | SideEffect | m1884_2 |
8738+
| ir.cpp:1885:11:1885:50 | CallTarget | func:r1885_2 |
8739+
| ir.cpp:1885:11:1885:50 | ChiPartial | partial:m1885_4 |
8740+
| ir.cpp:1885:11:1885:50 | ChiTotal | total:m1883_4 |
8741+
| ir.cpp:1885:11:1885:50 | SideEffect | ~m1883_4 |
86538742
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
86548743
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
86558744
| perf-regression.cpp:6:3:6:5 | Address | &:r6_7 |

0 commit comments

Comments
 (0)