Skip to content

Commit 5843326

Browse files
committed
C++: Update IR tests after better handling of init statements in the extractor
1 parent 3a2b0a2 commit 5843326

File tree

3 files changed

+190
-89
lines changed

3 files changed

+190
-89
lines changed

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19411,6 +19411,12 @@ ir.cpp:
1941119411
# 2207| Value = [CharLiteral] 97
1941219412
# 2207| ValueCategory = prvalue
1941319413
# 2208| getStmt(2): [BreakStmt] break;
19414+
# 2212| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
19415+
# 2212| Type = [VoidType] void
19416+
# 2212| ValueCategory = prvalue
19417+
# 2212| getQualifier(): [VariableAccess] x
19418+
# 2212| Type = [Class] ClassWithDestructor
19419+
# 2212| ValueCategory = lvalue
1941419420
# 2209| getStmt(3): [SwitchCase] default:
1941519421
# 2210| getStmt(4): [ExprStmt] ExprStmt
1941619422
# 2210| getExpr(): [FunctionCall] call to set_x
@@ -19424,6 +19430,12 @@ ir.cpp:
1942419430
# 2210| Value = [CharLiteral] 98
1942519431
# 2210| ValueCategory = prvalue
1942619432
# 2211| getStmt(5): [BreakStmt] break;
19433+
# 2212| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
19434+
# 2212| Type = [VoidType] void
19435+
# 2212| ValueCategory = prvalue
19436+
# 2212| getQualifier(): [VariableAccess] x
19437+
# 2212| Type = [Class] ClassWithDestructor
19438+
# 2212| ValueCategory = lvalue
1942719439
# 2212| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
1942819440
# 2212| Type = [VoidType] void
1942919441
# 2212| ValueCategory = prvalue
@@ -22504,9 +22516,21 @@ ir.cpp:
2250422516
# 2512| ValueCategory = prvalue
2250522517
# 2512| getStmt(1): [BlockStmt] { ... }
2250622518
# 2513| getStmt(0): [BreakStmt] break;
22519+
# 2518| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
22520+
# 2518| Type = [VoidType] void
22521+
# 2518| ValueCategory = prvalue
22522+
# 2518| getQualifier(): [VariableAccess] y
22523+
# 2518| Type = [Class] ClassWithDestructor
22524+
# 2518| ValueCategory = lvalue
2250722525
# 2515| getStmt(2): [SwitchCase] default:
2250822526
# 2515| getStmt(3): [BlockStmt] { ... }
2250922527
# 2516| getStmt(0): [BreakStmt] break;
22528+
# 2518| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
22529+
# 2518| Type = [VoidType] void
22530+
# 2518| ValueCategory = prvalue
22531+
# 2518| getQualifier(): [VariableAccess] y
22532+
# 2518| Type = [Class] ClassWithDestructor
22533+
# 2518| ValueCategory = lvalue
2251022534
# 2518| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
2251122535
# 2518| Type = [VoidType] void
2251222536
# 2518| ValueCategory = prvalue
@@ -22567,6 +22591,12 @@ ir.cpp:
2256722591
# 2527| getStmt(2): [SwitchCase] default:
2256822592
# 2527| getStmt(3): [BlockStmt] { ... }
2256922593
# 2528| getStmt(0): [BreakStmt] break;
22594+
# 2530| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
22595+
# 2530| Type = [VoidType] void
22596+
# 2530| ValueCategory = prvalue
22597+
# 2530| getQualifier(): [VariableAccess] y
22598+
# 2530| Type = [Class] ClassWithDestructor
22599+
# 2530| ValueCategory = lvalue
2257022600
# 2530| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
2257122601
# 2530| Type = [VoidType] void
2257222602
# 2530| ValueCategory = prvalue

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

Lines changed: 84 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15438,42 +15438,58 @@ ir.cpp:
1543815438
#-----| Default -> Block 6
1543915439

1544015440
# 2206| Block 5
15441-
# 2206| v2206_1(void) = NoOp :
15442-
# 2207| r2207_1(glval<ClassWithDestructor>) = VariableAddress[x] :
15443-
# 2207| r2207_2(glval<unknown>) = FunctionAddress[set_x] :
15444-
# 2207| r2207_3(char) = Constant[97] :
15445-
# 2207| v2207_4(void) = Call[set_x] : func:r2207_2, this:r2207_1, 0:r2207_3
15446-
# 2207| m2207_5(unknown) = ^CallSideEffect : ~m2205_6
15447-
# 2207| m2207_6(unknown) = Chi : total:m2205_6, partial:m2207_5
15448-
# 2207| v2207_7(void) = ^IndirectReadSideEffect[-1] : &:r2207_1, m2205_8
15449-
# 2207| m2207_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2207_1
15450-
# 2207| m2207_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2207_8
15451-
# 2208| v2208_1(void) = NoOp :
15441+
# 2206| v2206_1(void) = NoOp :
15442+
# 2207| r2207_1(glval<ClassWithDestructor>) = VariableAddress[x] :
15443+
# 2207| r2207_2(glval<unknown>) = FunctionAddress[set_x] :
15444+
# 2207| r2207_3(char) = Constant[97] :
15445+
# 2207| v2207_4(void) = Call[set_x] : func:r2207_2, this:r2207_1, 0:r2207_3
15446+
# 2207| m2207_5(unknown) = ^CallSideEffect : ~m2205_6
15447+
# 2207| m2207_6(unknown) = Chi : total:m2205_6, partial:m2207_5
15448+
# 2207| v2207_7(void) = ^IndirectReadSideEffect[-1] : &:r2207_1, m2205_8
15449+
# 2207| m2207_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2207_1
15450+
# 2207| m2207_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2207_8
15451+
# 2212| r2212_1(glval<ClassWithDestructor>) = VariableAddress[x] :
15452+
# 2212| r2212_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
15453+
# 2212| v2212_3(void) = Call[~ClassWithDestructor] : func:r2212_2, this:r2212_1
15454+
# 2212| m2212_4(unknown) = ^CallSideEffect : ~m2207_6
15455+
# 2212| m2212_5(unknown) = Chi : total:m2207_6, partial:m2212_4
15456+
# 2212| v2212_6(void) = ^IndirectReadSideEffect[-1] : &:r2212_1, m2207_9
15457+
# 2212| m2212_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2212_1
15458+
# 2212| m2212_8(ClassWithDestructor) = Chi : total:m2207_9, partial:m2212_7
15459+
# 2208| v2208_1(void) = NoOp :
1545215460
#-----| Goto -> Block 7
1545315461

1545415462
# 2209| Block 6
15455-
# 2209| v2209_1(void) = NoOp :
15456-
# 2210| r2210_1(glval<ClassWithDestructor>) = VariableAddress[x] :
15457-
# 2210| r2210_2(glval<unknown>) = FunctionAddress[set_x] :
15458-
# 2210| r2210_3(char) = Constant[98] :
15459-
# 2210| v2210_4(void) = Call[set_x] : func:r2210_2, this:r2210_1, 0:r2210_3
15460-
# 2210| m2210_5(unknown) = ^CallSideEffect : ~m2205_6
15461-
# 2210| m2210_6(unknown) = Chi : total:m2205_6, partial:m2210_5
15462-
# 2210| v2210_7(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, m2205_8
15463-
# 2210| m2210_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1
15464-
# 2210| m2210_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2210_8
15465-
# 2211| v2211_1(void) = NoOp :
15463+
# 2209| v2209_1(void) = NoOp :
15464+
# 2210| r2210_1(glval<ClassWithDestructor>) = VariableAddress[x] :
15465+
# 2210| r2210_2(glval<unknown>) = FunctionAddress[set_x] :
15466+
# 2210| r2210_3(char) = Constant[98] :
15467+
# 2210| v2210_4(void) = Call[set_x] : func:r2210_2, this:r2210_1, 0:r2210_3
15468+
# 2210| m2210_5(unknown) = ^CallSideEffect : ~m2205_6
15469+
# 2210| m2210_6(unknown) = Chi : total:m2205_6, partial:m2210_5
15470+
# 2210| v2210_7(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, m2205_8
15471+
# 2210| m2210_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1
15472+
# 2210| m2210_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2210_8
15473+
# 2212| r2212_9(glval<ClassWithDestructor>) = VariableAddress[x] :
15474+
# 2212| r2212_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
15475+
# 2212| v2212_11(void) = Call[~ClassWithDestructor] : func:r2212_10, this:r2212_9
15476+
# 2212| m2212_12(unknown) = ^CallSideEffect : ~m2210_6
15477+
# 2212| m2212_13(unknown) = Chi : total:m2210_6, partial:m2212_12
15478+
# 2212| v2212_14(void) = ^IndirectReadSideEffect[-1] : &:r2212_9, m2210_9
15479+
# 2212| m2212_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2212_9
15480+
# 2212| m2212_16(ClassWithDestructor) = Chi : total:m2210_9, partial:m2212_15
15481+
# 2211| v2211_1(void) = NoOp :
1546615482
#-----| Goto -> Block 7
1546715483

1546815484
# 2212| Block 7
15469-
# 2212| m2212_1(unknown) = Phi : from 5:~m2207_6, from 6:~m2210_6
15470-
# 2212| v2212_2(void) = NoOp :
15485+
# 2212| m2212_17(unknown) = Phi : from 5:~m2212_5, from 6:~m2212_13
15486+
# 2212| v2212_18(void) = NoOp :
1547115487
# 2214| r2214_1(glval<ClassWithDestructor>) = VariableAddress[x] :
1547215488
# 2214| m2214_2(ClassWithDestructor) = Uninitialized[x] : &:r2214_1
1547315489
# 2214| r2214_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
1547415490
# 2214| v2214_4(void) = Call[ClassWithDestructor] : func:r2214_3, this:r2214_1
15475-
# 2214| m2214_5(unknown) = ^CallSideEffect : ~m2212_1
15476-
# 2214| m2214_6(unknown) = Chi : total:m2212_1, partial:m2214_5
15491+
# 2214| m2214_5(unknown) = ^CallSideEffect : ~m2212_17
15492+
# 2214| m2214_6(unknown) = Chi : total:m2212_17, partial:m2214_5
1547715493
# 2214| m2214_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2214_1
1547815494
# 2214| m2214_8(ClassWithDestructor) = Chi : total:m2214_2, partial:m2214_7
1547915495
# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] :
@@ -18024,21 +18040,38 @@ ir.cpp:
1802418040
#-----| Default -> Block 2
1802518041

1802618042
# 2512| Block 1
18027-
# 2512| v2512_1(void) = NoOp :
18028-
# 2513| v2513_1(void) = NoOp :
18043+
# 2512| v2512_1(void) = NoOp :
18044+
# 2518| r2518_1(glval<ClassWithDestructor>) = VariableAddress[y] :
18045+
# 2518| r2518_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
18046+
# 2518| v2518_3(void) = Call[~ClassWithDestructor] : func:r2518_2, this:r2518_1
18047+
# 2518| m2518_4(unknown) = ^CallSideEffect : ~m2511_6
18048+
# 2518| m2518_5(unknown) = Chi : total:m2511_6, partial:m2518_4
18049+
# 2518| v2518_6(void) = ^IndirectReadSideEffect[-1] : &:r2518_1, m2511_8
18050+
# 2518| m2518_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2518_1
18051+
# 2518| m2518_8(ClassWithDestructor) = Chi : total:m2511_8, partial:m2518_7
18052+
# 2513| v2513_1(void) = NoOp :
1802918053
#-----| Goto -> Block 3
1803018054

1803118055
# 2515| Block 2
18032-
# 2515| v2515_1(void) = NoOp :
18033-
# 2516| v2516_1(void) = NoOp :
18056+
# 2515| v2515_1(void) = NoOp :
18057+
# 2518| r2518_9(glval<ClassWithDestructor>) = VariableAddress[y] :
18058+
# 2518| r2518_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
18059+
# 2518| v2518_11(void) = Call[~ClassWithDestructor] : func:r2518_10, this:r2518_9
18060+
# 2518| m2518_12(unknown) = ^CallSideEffect : ~m2511_6
18061+
# 2518| m2518_13(unknown) = Chi : total:m2511_6, partial:m2518_12
18062+
# 2518| v2518_14(void) = ^IndirectReadSideEffect[-1] : &:r2518_9, m2511_8
18063+
# 2518| m2518_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2518_9
18064+
# 2518| m2518_16(ClassWithDestructor) = Chi : total:m2511_8, partial:m2518_15
18065+
# 2516| v2516_1(void) = NoOp :
1803418066
#-----| Goto -> Block 3
1803518067

1803618068
# 2518| Block 3
18037-
# 2518| v2518_1(void) = NoOp :
18038-
# 2519| v2519_1(void) = NoOp :
18039-
# 2510| v2510_7(void) = ReturnVoid :
18040-
# 2510| v2510_8(void) = AliasedUse : ~m2511_6
18041-
# 2510| v2510_9(void) = ExitFunction :
18069+
# 2518| m2518_17(unknown) = Phi : from 1:~m2518_5, from 2:~m2518_13
18070+
# 2518| v2518_18(void) = NoOp :
18071+
# 2519| v2519_1(void) = NoOp :
18072+
# 2510| v2510_7(void) = ReturnVoid :
18073+
# 2510| v2510_8(void) = AliasedUse : ~m2518_17
18074+
# 2510| v2510_9(void) = ExitFunction :
1804218075

1804318076
# 2521| void destruction_in_switch_3(int)
1804418077
# 2521| Block 0
@@ -18092,17 +18125,25 @@ ir.cpp:
1809218125
#-----| Goto -> Block 3
1809318126

1809418127
# 2527| Block 2
18095-
# 2527| v2527_1(void) = NoOp :
18096-
# 2528| v2528_1(void) = NoOp :
18128+
# 2527| v2527_1(void) = NoOp :
18129+
# 2530| r2530_9(glval<ClassWithDestructor>) = VariableAddress[y] :
18130+
# 2530| r2530_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
18131+
# 2530| v2530_11(void) = Call[~ClassWithDestructor] : func:r2530_10, this:r2530_9
18132+
# 2530| m2530_12(unknown) = ^CallSideEffect : ~m2522_6
18133+
# 2530| m2530_13(unknown) = Chi : total:m2522_6, partial:m2530_12
18134+
# 2530| v2530_14(void) = ^IndirectReadSideEffect[-1] : &:r2530_9, m2522_8
18135+
# 2530| m2530_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2530_9
18136+
# 2530| m2530_16(ClassWithDestructor) = Chi : total:m2522_8, partial:m2530_15
18137+
# 2528| v2528_1(void) = NoOp :
1809718138
#-----| Goto -> Block 3
1809818139

1809918140
# 2530| Block 3
18100-
# 2530| m2530_9(unknown) = Phi : from 1:~m2530_5, from 2:~m2522_6
18101-
# 2530| v2530_10(void) = NoOp :
18102-
# 2531| v2531_1(void) = NoOp :
18103-
# 2521| v2521_7(void) = ReturnVoid :
18104-
# 2521| v2521_8(void) = AliasedUse : ~m2530_9
18105-
# 2521| v2521_9(void) = ExitFunction :
18141+
# 2530| m2530_17(unknown) = Phi : from 1:~m2530_5, from 2:~m2530_13
18142+
# 2530| v2530_18(void) = NoOp :
18143+
# 2531| v2531_1(void) = NoOp :
18144+
# 2521| v2521_7(void) = ReturnVoid :
18145+
# 2521| v2521_8(void) = AliasedUse : ~m2530_17
18146+
# 2521| v2521_9(void) = ExitFunction :
1810618147

1810718148
perf-regression.cpp:
1810818149
# 6| void Big::Big()

0 commit comments

Comments
 (0)