Skip to content

Commit 5d8b203

Browse files
authored
Merge pull request github#13758 from jketema/val-cat-tests
C++: Add more IR tests
2 parents e723661 + e2de94b commit 5d8b203

File tree

4 files changed

+349
-0
lines changed

4 files changed

+349
-0
lines changed

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

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14596,6 +14596,141 @@ ir.cpp:
1459614596
# 1935| Type = [IntType] int
1459714597
# 1935| ValueCategory = prvalue
1459814598
# 1936| getStmt(2): [ReturnStmt] return ...
14599+
# 1938| [CopyAssignmentOperator] D& D::operator=(D const&)
14600+
# 1938| <params>:
14601+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14602+
#-----| Type = [LValueReferenceType] const D &
14603+
# 1938| [MoveAssignmentOperator] D& D::operator=(D&&)
14604+
# 1938| <params>:
14605+
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
14606+
#-----| Type = [RValueReferenceType] D &&
14607+
# 1942| [MemberFunction] D& D::ReferenceStaticMemberFunction()
14608+
# 1942| <params>:
14609+
# 1942| getEntryPoint(): [BlockStmt] { ... }
14610+
# 1943| getStmt(0): [ReturnStmt] return ...
14611+
# 1943| getExpr(): [VariableAccess] x
14612+
# 1943| Type = [Class] D
14613+
# 1943| ValueCategory = lvalue
14614+
# 1943| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
14615+
# 1943| Type = [LValueReferenceType] D &
14616+
# 1943| ValueCategory = prvalue
14617+
# 1945| [MemberFunction] D D::ObjectStaticMemberFunction()
14618+
# 1945| <params>:
14619+
# 1945| getEntryPoint(): [BlockStmt] { ... }
14620+
# 1946| getStmt(0): [ReturnStmt] return ...
14621+
# 1946| getExpr(): [VariableAccess] x
14622+
# 1946| Type = [Class] D
14623+
# 1946| ValueCategory = prvalue(load)
14624+
# 1950| [TopLevelFunction] void test_static_member_functions_with_reference_return()
14625+
# 1950| <params>:
14626+
# 1950| getEntryPoint(): [BlockStmt] { ... }
14627+
# 1951| getStmt(0): [DeclStmt] declaration
14628+
# 1951| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d
14629+
# 1951| Type = [Class] D
14630+
# 1953| getStmt(1): [ExprStmt] ExprStmt
14631+
# 1953| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction
14632+
# 1953| Type = [LValueReferenceType] D &
14633+
# 1953| ValueCategory = prvalue
14634+
# 1953| getQualifier(): [VariableAccess] d
14635+
# 1953| Type = [Class] D
14636+
# 1953| ValueCategory = lvalue
14637+
# 1953| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
14638+
# 1953| Type = [Class] D
14639+
# 1953| ValueCategory = lvalue
14640+
# 1954| getStmt(2): [ExprStmt] ExprStmt
14641+
# 1954| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction
14642+
# 1954| Type = [LValueReferenceType] D &
14643+
# 1954| ValueCategory = prvalue
14644+
# 1954| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
14645+
# 1954| Type = [Class] D
14646+
# 1954| ValueCategory = lvalue
14647+
# 1955| getStmt(3): [ExprStmt] ExprStmt
14648+
# 1955| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction
14649+
# 1955| Type = [Class] D
14650+
# 1955| ValueCategory = prvalue
14651+
# 1955| getQualifier(): [VariableAccess] d
14652+
# 1955| Type = [Class] D
14653+
# 1955| ValueCategory = lvalue
14654+
# 1956| getStmt(4): [ExprStmt] ExprStmt
14655+
# 1956| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction
14656+
# 1956| Type = [Class] D
14657+
# 1956| ValueCategory = prvalue
14658+
# 1958| getStmt(5): [DeclStmt] declaration
14659+
# 1958| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
14660+
# 1958| Type = [Class] D
14661+
# 1959| getStmt(6): [ExprStmt] ExprStmt
14662+
# 1959| getExpr(): [AssignExpr] ... = ...
14663+
# 1959| Type = [Class] D
14664+
# 1959| ValueCategory = lvalue
14665+
# 1959| getLValue(): [VariableAccess] x
14666+
# 1959| Type = [Class] D
14667+
# 1959| ValueCategory = lvalue
14668+
# 1959| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction
14669+
# 1959| Type = [LValueReferenceType] D &
14670+
# 1959| ValueCategory = prvalue
14671+
# 1959| getQualifier(): [VariableAccess] d
14672+
# 1959| Type = [Class] D
14673+
# 1959| ValueCategory = lvalue
14674+
# 1959| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
14675+
# 1959| Type = [Class] D
14676+
# 1959| ValueCategory = prvalue(load)
14677+
# 1960| getStmt(7): [DeclStmt] declaration
14678+
# 1960| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
14679+
# 1960| Type = [Class] D
14680+
# 1961| getStmt(8): [ExprStmt] ExprStmt
14681+
# 1961| getExpr(): [AssignExpr] ... = ...
14682+
# 1961| Type = [Class] D
14683+
# 1961| ValueCategory = lvalue
14684+
# 1961| getLValue(): [VariableAccess] y
14685+
# 1961| Type = [Class] D
14686+
# 1961| ValueCategory = lvalue
14687+
# 1961| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction
14688+
# 1961| Type = [LValueReferenceType] D &
14689+
# 1961| ValueCategory = prvalue
14690+
# 1961| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
14691+
# 1961| Type = [Class] D
14692+
# 1961| ValueCategory = prvalue(load)
14693+
# 1962| getStmt(9): [DeclStmt] declaration
14694+
# 1962| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j
14695+
# 1962| Type = [Class] D
14696+
# 1963| getStmt(10): [ExprStmt] ExprStmt
14697+
# 1963| getExpr(): [AssignExpr] ... = ...
14698+
# 1963| Type = [Class] D
14699+
# 1963| ValueCategory = lvalue
14700+
# 1963| getLValue(): [VariableAccess] j
14701+
# 1963| Type = [Class] D
14702+
# 1963| ValueCategory = lvalue
14703+
# 1963| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction
14704+
# 1963| Type = [Class] D
14705+
# 1963| ValueCategory = prvalue
14706+
# 1963| getQualifier(): [VariableAccess] d
14707+
# 1963| Type = [Class] D
14708+
# 1963| ValueCategory = lvalue
14709+
# 1964| getStmt(11): [DeclStmt] declaration
14710+
# 1964| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k
14711+
# 1964| Type = [Class] D
14712+
# 1965| getStmt(12): [ExprStmt] ExprStmt
14713+
# 1965| getExpr(): [AssignExpr] ... = ...
14714+
# 1965| Type = [Class] D
14715+
# 1965| ValueCategory = lvalue
14716+
# 1965| getLValue(): [VariableAccess] k
14717+
# 1965| Type = [Class] D
14718+
# 1965| ValueCategory = lvalue
14719+
# 1965| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction
14720+
# 1965| Type = [Class] D
14721+
# 1965| ValueCategory = prvalue
14722+
# 1966| getStmt(13): [ReturnStmt] return ...
14723+
# 1968| [TopLevelFunction] void test_volatile()
14724+
# 1968| <params>:
14725+
# 1968| getEntryPoint(): [BlockStmt] { ... }
14726+
# 1969| getStmt(0): [DeclStmt] declaration
14727+
# 1969| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
14728+
# 1969| Type = [SpecifiedType] volatile int
14729+
# 1970| getStmt(1): [ExprStmt] ExprStmt
14730+
# 1970| getExpr(): [VariableAccess] x
14731+
# 1970| Type = [IntType] int
14732+
# 1970| ValueCategory = prvalue(load)
14733+
# 1971| getStmt(2): [ReturnStmt] return ...
1459914734
perf-regression.cpp:
1460014735
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
1460114736
# 4| <params>:

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1935,4 +1935,39 @@ void test_assign_with_assign_operation() {
19351935
i = (j += 40);
19361936
}
19371937

1938+
class D {
1939+
static D x;
1940+
1941+
public:
1942+
static D& ReferenceStaticMemberFunction() {
1943+
return x;
1944+
}
1945+
static D ObjectStaticMemberFunction() {
1946+
return x;
1947+
}
1948+
};
1949+
1950+
void test_static_member_functions_with_reference_return() {
1951+
D d;
1952+
1953+
d.ReferenceStaticMemberFunction();
1954+
D::ReferenceStaticMemberFunction();
1955+
d.ObjectStaticMemberFunction();
1956+
D::ObjectStaticMemberFunction();
1957+
1958+
D x;
1959+
x = d.ReferenceStaticMemberFunction();
1960+
D y;
1961+
y = D::ReferenceStaticMemberFunction();
1962+
D j;
1963+
j = d.ObjectStaticMemberFunction();
1964+
D k;
1965+
k = D::ObjectStaticMemberFunction();
1966+
}
1967+
1968+
void test_volatile() {
1969+
volatile int x;
1970+
x;
1971+
}
1972+
19381973
// semmle-extractor-options: -std=c++17 --clang

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

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8891,6 +8891,83 @@
88918891
| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 |
88928892
| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 |
88938893
| ir.cpp:1935:13:1935:14 | Right | r1935_1 |
8894+
| ir.cpp:1942:15:1942:43 | Address | &:r1942_5 |
8895+
| ir.cpp:1942:15:1942:43 | ChiPartial | partial:m1942_3 |
8896+
| ir.cpp:1942:15:1942:43 | ChiTotal | total:m1942_2 |
8897+
| ir.cpp:1942:15:1942:43 | Load | m1943_4 |
8898+
| ir.cpp:1942:15:1942:43 | SideEffect | m1942_3 |
8899+
| ir.cpp:1943:9:1943:17 | Address | &:r1943_1 |
8900+
| ir.cpp:1943:16:1943:16 | StoreValue | r1943_3 |
8901+
| ir.cpp:1943:16:1943:16 | Unary | r1943_2 |
8902+
| ir.cpp:1945:14:1945:39 | Address | &:r1945_5 |
8903+
| ir.cpp:1945:14:1945:39 | ChiPartial | partial:m1945_3 |
8904+
| ir.cpp:1945:14:1945:39 | ChiTotal | total:m1945_2 |
8905+
| ir.cpp:1945:14:1945:39 | Load | m1946_4 |
8906+
| ir.cpp:1945:14:1945:39 | SideEffect | m1945_3 |
8907+
| ir.cpp:1946:9:1946:17 | Address | &:r1946_1 |
8908+
| ir.cpp:1946:16:1946:16 | Address | &:r1946_2 |
8909+
| ir.cpp:1946:16:1946:16 | Load | ~m1945_3 |
8910+
| ir.cpp:1946:16:1946:16 | StoreValue | r1946_3 |
8911+
| ir.cpp:1950:6:1950:55 | ChiPartial | partial:m1950_3 |
8912+
| ir.cpp:1950:6:1950:55 | ChiTotal | total:m1950_2 |
8913+
| ir.cpp:1950:6:1950:55 | SideEffect | ~m1965_4 |
8914+
| ir.cpp:1951:7:1951:7 | Address | &:r1951_1 |
8915+
| ir.cpp:1953:7:1953:35 | CallTarget | func:r1953_2 |
8916+
| ir.cpp:1953:7:1953:35 | ChiPartial | partial:m1953_4 |
8917+
| ir.cpp:1953:7:1953:35 | ChiTotal | total:m1950_4 |
8918+
| ir.cpp:1953:7:1953:35 | SideEffect | ~m1950_4 |
8919+
| ir.cpp:1953:7:1953:35 | Unary | r1953_3 |
8920+
| ir.cpp:1954:5:1954:36 | CallTarget | func:r1954_1 |
8921+
| ir.cpp:1954:5:1954:36 | ChiPartial | partial:m1954_3 |
8922+
| ir.cpp:1954:5:1954:36 | ChiTotal | total:m1953_5 |
8923+
| ir.cpp:1954:5:1954:36 | SideEffect | ~m1953_5 |
8924+
| ir.cpp:1954:5:1954:36 | Unary | r1954_2 |
8925+
| ir.cpp:1955:7:1955:32 | CallTarget | func:r1955_2 |
8926+
| ir.cpp:1955:7:1955:32 | ChiPartial | partial:m1955_4 |
8927+
| ir.cpp:1955:7:1955:32 | ChiTotal | total:m1954_4 |
8928+
| ir.cpp:1955:7:1955:32 | SideEffect | ~m1954_4 |
8929+
| ir.cpp:1956:5:1956:33 | CallTarget | func:r1956_1 |
8930+
| ir.cpp:1956:5:1956:33 | ChiPartial | partial:m1956_3 |
8931+
| ir.cpp:1956:5:1956:33 | ChiTotal | total:m1955_5 |
8932+
| ir.cpp:1956:5:1956:33 | SideEffect | ~m1955_5 |
8933+
| ir.cpp:1958:7:1958:7 | Address | &:r1958_1 |
8934+
| ir.cpp:1959:5:1959:5 | Address | &:r1959_7 |
8935+
| ir.cpp:1959:11:1959:39 | Address | &:r1959_3 |
8936+
| ir.cpp:1959:11:1959:39 | CallTarget | func:r1959_2 |
8937+
| ir.cpp:1959:11:1959:39 | ChiPartial | partial:m1959_4 |
8938+
| ir.cpp:1959:11:1959:39 | ChiTotal | total:m1956_4 |
8939+
| ir.cpp:1959:11:1959:39 | SideEffect | ~m1956_4 |
8940+
| ir.cpp:1959:40:1959:42 | Load | ~m1959_5 |
8941+
| ir.cpp:1959:40:1959:42 | StoreValue | r1959_6 |
8942+
| ir.cpp:1960:7:1960:7 | Address | &:r1960_1 |
8943+
| ir.cpp:1961:5:1961:5 | Address | &:r1961_6 |
8944+
| ir.cpp:1961:9:1961:40 | Address | &:r1961_2 |
8945+
| ir.cpp:1961:9:1961:40 | CallTarget | func:r1961_1 |
8946+
| ir.cpp:1961:9:1961:40 | ChiPartial | partial:m1961_3 |
8947+
| ir.cpp:1961:9:1961:40 | ChiTotal | total:m1959_5 |
8948+
| ir.cpp:1961:9:1961:40 | SideEffect | ~m1959_5 |
8949+
| ir.cpp:1961:41:1961:43 | Load | ~m1961_4 |
8950+
| ir.cpp:1961:41:1961:43 | StoreValue | r1961_5 |
8951+
| ir.cpp:1962:7:1962:7 | Address | &:r1962_1 |
8952+
| ir.cpp:1963:5:1963:5 | Address | &:r1963_6 |
8953+
| ir.cpp:1963:11:1963:36 | CallTarget | func:r1963_2 |
8954+
| ir.cpp:1963:11:1963:36 | ChiPartial | partial:m1963_4 |
8955+
| ir.cpp:1963:11:1963:36 | ChiTotal | total:m1961_4 |
8956+
| ir.cpp:1963:11:1963:36 | SideEffect | ~m1961_4 |
8957+
| ir.cpp:1963:11:1963:36 | StoreValue | r1963_3 |
8958+
| ir.cpp:1964:7:1964:7 | Address | &:r1964_1 |
8959+
| ir.cpp:1965:5:1965:5 | Address | &:r1965_5 |
8960+
| ir.cpp:1965:9:1965:37 | CallTarget | func:r1965_1 |
8961+
| ir.cpp:1965:9:1965:37 | ChiPartial | partial:m1965_3 |
8962+
| ir.cpp:1965:9:1965:37 | ChiTotal | total:m1963_5 |
8963+
| ir.cpp:1965:9:1965:37 | SideEffect | ~m1963_5 |
8964+
| ir.cpp:1965:9:1965:37 | StoreValue | r1965_2 |
8965+
| ir.cpp:1968:6:1968:18 | ChiPartial | partial:m1968_3 |
8966+
| ir.cpp:1968:6:1968:18 | ChiTotal | total:m1968_2 |
8967+
| ir.cpp:1968:6:1968:18 | SideEffect | m1968_3 |
8968+
| ir.cpp:1969:18:1969:18 | Address | &:r1969_1 |
8969+
| ir.cpp:1970:5:1970:5 | Address | &:r1970_1 |
8970+
| ir.cpp:1970:5:1970:5 | Load | m1969_2 |
88948971
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
88958972
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
88968973
| perf-regression.cpp:6:3:6:5 | Address | &:r6_7 |

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

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10266,6 +10266,108 @@ ir.cpp:
1026610266
# 1933| v1933_5(void) = AliasedUse : ~m?
1026710267
# 1933| v1933_6(void) = ExitFunction :
1026810268

10269+
# 1942| D& D::ReferenceStaticMemberFunction()
10270+
# 1942| Block 0
10271+
# 1942| v1942_1(void) = EnterFunction :
10272+
# 1942| mu1942_2(unknown) = AliasedDefinition :
10273+
# 1942| mu1942_3(unknown) = InitializeNonLocal :
10274+
# 1943| r1943_1(glval<D &>) = VariableAddress[#return] :
10275+
# 1943| r1943_2(glval<D>) = VariableAddress[x] :
10276+
# 1943| r1943_3(D &) = CopyValue : r1943_2
10277+
# 1943| mu1943_4(D &) = Store[#return] : &:r1943_1, r1943_3
10278+
# 1942| r1942_4(glval<D &>) = VariableAddress[#return] :
10279+
# 1942| v1942_5(void) = ReturnValue : &:r1942_4, ~m?
10280+
# 1942| v1942_6(void) = AliasedUse : ~m?
10281+
# 1942| v1942_7(void) = ExitFunction :
10282+
10283+
# 1945| D D::ObjectStaticMemberFunction()
10284+
# 1945| Block 0
10285+
# 1945| v1945_1(void) = EnterFunction :
10286+
# 1945| mu1945_2(unknown) = AliasedDefinition :
10287+
# 1945| mu1945_3(unknown) = InitializeNonLocal :
10288+
# 1946| r1946_1(glval<D>) = VariableAddress[#return] :
10289+
# 1946| r1946_2(glval<D>) = VariableAddress[x] :
10290+
# 1946| r1946_3(D) = Load[x] : &:r1946_2, ~m?
10291+
# 1946| mu1946_4(D) = Store[#return] : &:r1946_1, r1946_3
10292+
# 1945| r1945_4(glval<D>) = VariableAddress[#return] :
10293+
# 1945| v1945_5(void) = ReturnValue : &:r1945_4, ~m?
10294+
# 1945| v1945_6(void) = AliasedUse : ~m?
10295+
# 1945| v1945_7(void) = ExitFunction :
10296+
10297+
# 1950| void test_static_member_functions_with_reference_return()
10298+
# 1950| Block 0
10299+
# 1950| v1950_1(void) = EnterFunction :
10300+
# 1950| mu1950_2(unknown) = AliasedDefinition :
10301+
# 1950| mu1950_3(unknown) = InitializeNonLocal :
10302+
# 1951| r1951_1(glval<D>) = VariableAddress[d] :
10303+
# 1951| mu1951_2(D) = Uninitialized[d] : &:r1951_1
10304+
# 1953| r1953_1(glval<D>) = VariableAddress[d] :
10305+
# 1953| r1953_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] :
10306+
# 1953| r1953_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1953_2
10307+
# 1953| mu1953_4(unknown) = ^CallSideEffect : ~m?
10308+
# 1953| r1953_5(glval<D>) = CopyValue : r1953_3
10309+
# 1954| r1954_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] :
10310+
# 1954| r1954_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1954_1
10311+
# 1954| mu1954_3(unknown) = ^CallSideEffect : ~m?
10312+
# 1954| r1954_4(glval<D>) = CopyValue : r1954_2
10313+
# 1955| r1955_1(glval<D>) = VariableAddress[d] :
10314+
# 1955| r1955_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] :
10315+
# 1955| r1955_3(D) = Call[ObjectStaticMemberFunction] : func:r1955_2
10316+
# 1955| mu1955_4(unknown) = ^CallSideEffect : ~m?
10317+
# 1956| r1956_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] :
10318+
# 1956| r1956_2(D) = Call[ObjectStaticMemberFunction] : func:r1956_1
10319+
# 1956| mu1956_3(unknown) = ^CallSideEffect : ~m?
10320+
# 1958| r1958_1(glval<D>) = VariableAddress[x] :
10321+
# 1958| mu1958_2(D) = Uninitialized[x] : &:r1958_1
10322+
# 1959| r1959_1(glval<D>) = VariableAddress[d] :
10323+
# 1959| r1959_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] :
10324+
# 1959| r1959_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1959_2
10325+
# 1959| mu1959_4(unknown) = ^CallSideEffect : ~m?
10326+
# 1959| r1959_5(D) = Load[?] : &:r1959_3, ~m?
10327+
# 1959| r1959_6(glval<D>) = VariableAddress[x] :
10328+
# 1959| mu1959_7(D) = Store[x] : &:r1959_6, r1959_5
10329+
# 1960| r1960_1(glval<D>) = VariableAddress[y] :
10330+
# 1960| mu1960_2(D) = Uninitialized[y] : &:r1960_1
10331+
# 1961| r1961_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] :
10332+
# 1961| r1961_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_1
10333+
# 1961| mu1961_3(unknown) = ^CallSideEffect : ~m?
10334+
# 1961| r1961_4(D) = Load[?] : &:r1961_2, ~m?
10335+
# 1961| r1961_5(glval<D>) = VariableAddress[y] :
10336+
# 1961| mu1961_6(D) = Store[y] : &:r1961_5, r1961_4
10337+
# 1962| r1962_1(glval<D>) = VariableAddress[j] :
10338+
# 1962| mu1962_2(D) = Uninitialized[j] : &:r1962_1
10339+
# 1963| r1963_1(glval<D>) = VariableAddress[d] :
10340+
# 1963| r1963_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] :
10341+
# 1963| r1963_3(D) = Call[ObjectStaticMemberFunction] : func:r1963_2
10342+
# 1963| mu1963_4(unknown) = ^CallSideEffect : ~m?
10343+
# 1963| r1963_5(glval<D>) = VariableAddress[j] :
10344+
# 1963| mu1963_6(D) = Store[j] : &:r1963_5, r1963_3
10345+
# 1964| r1964_1(glval<D>) = VariableAddress[k] :
10346+
# 1964| mu1964_2(D) = Uninitialized[k] : &:r1964_1
10347+
# 1965| r1965_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] :
10348+
# 1965| r1965_2(D) = Call[ObjectStaticMemberFunction] : func:r1965_1
10349+
# 1965| mu1965_3(unknown) = ^CallSideEffect : ~m?
10350+
# 1965| r1965_4(glval<D>) = VariableAddress[k] :
10351+
# 1965| mu1965_5(D) = Store[k] : &:r1965_4, r1965_2
10352+
# 1966| v1966_1(void) = NoOp :
10353+
# 1950| v1950_4(void) = ReturnVoid :
10354+
# 1950| v1950_5(void) = AliasedUse : ~m?
10355+
# 1950| v1950_6(void) = ExitFunction :
10356+
10357+
# 1968| void test_volatile()
10358+
# 1968| Block 0
10359+
# 1968| v1968_1(void) = EnterFunction :
10360+
# 1968| mu1968_2(unknown) = AliasedDefinition :
10361+
# 1968| mu1968_3(unknown) = InitializeNonLocal :
10362+
# 1969| r1969_1(glval<int>) = VariableAddress[x] :
10363+
# 1969| mu1969_2(int) = Uninitialized[x] : &:r1969_1
10364+
# 1970| r1970_1(glval<int>) = VariableAddress[x] :
10365+
# 1970| r1970_2(int) = Load[x] : &:r1970_1, ~m?
10366+
# 1971| v1971_1(void) = NoOp :
10367+
# 1968| v1968_4(void) = ReturnVoid :
10368+
# 1968| v1968_5(void) = AliasedUse : ~m?
10369+
# 1968| v1968_6(void) = ExitFunction :
10370+
1026910371
perf-regression.cpp:
1027010372
# 6| void Big::Big()
1027110373
# 6| Block 0

0 commit comments

Comments
 (0)