Skip to content

Commit 3daefa8

Browse files
committed
C++: Add more tests.
1 parent 6dd6488 commit 3daefa8

File tree

5 files changed

+257
-0
lines changed

5 files changed

+257
-0
lines changed

cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,72 @@ ssa.c:
5555
# 6| v6_6(void) = AliasedUse : m6_3
5656
# 6| v6_7(void) = ExitFunction :
5757

58+
# 11| void named_designators_2()
59+
# 11| Block 0
60+
# 11| v11_1(void) = EnterFunction :
61+
# 11| m11_2(unknown) = AliasedDefinition :
62+
# 11| m11_3(unknown) = InitializeNonLocal :
63+
# 11| m11_4(unknown) = Chi : total:m11_2, partial:m11_3
64+
# 12| r12_1(glval<Foo2>) = VariableAddress[foo] :
65+
# 12| m12_2(Foo2) = Uninitialized[foo] : &:r12_1
66+
# 12| r12_3(glval<int>) = FieldAddress[x] : r12_1
67+
# 12| r12_4(int) = Constant[1234] :
68+
# 12| m12_5(int) = Store[?] : &:r12_3, r12_4
69+
# 12| m12_6(Foo2) = Chi : total:m12_2, partial:m12_5
70+
# 12| r12_7(glval<int>) = FieldAddress[y] : r12_1
71+
# 12| r12_8(int) = Constant[5678] :
72+
# 12| m12_9(int) = Store[?] : &:r12_7, r12_8
73+
# 12| m12_10(Foo2) = Chi : total:m12_6, partial:m12_9
74+
# 14| r14_1(glval<Foo2>) = VariableAddress[foo_swapped] :
75+
# 14| m14_2(Foo2) = Uninitialized[foo_swapped] : &:r14_1
76+
# 14| r14_3(glval<int>) = FieldAddress[x] : r14_1
77+
# 14| r14_4(int) = Constant[1234] :
78+
# 14| m14_5(int) = Store[?] : &:r14_3, r14_4
79+
# 14| m14_6(Foo2) = Chi : total:m14_2, partial:m14_5
80+
# 14| r14_7(glval<int>) = FieldAddress[y] : r14_1
81+
# 14| r14_8(int) = Constant[5678] :
82+
# 14| m14_9(int) = Store[?] : &:r14_7, r14_8
83+
# 14| m14_10(Foo2) = Chi : total:m14_6, partial:m14_9
84+
# 15| v15_1(void) = NoOp :
85+
# 11| v11_5(void) = ReturnVoid :
86+
# 11| v11_6(void) = AliasedUse : m11_3
87+
# 11| v11_7(void) = ExitFunction :
88+
89+
# 17| void non_repeated_designators()
90+
# 17| Block 0
91+
# 17| v17_1(void) = EnterFunction :
92+
# 17| m17_2(unknown) = AliasedDefinition :
93+
# 17| m17_3(unknown) = InitializeNonLocal :
94+
# 17| m17_4(unknown) = Chi : total:m17_2, partial:m17_3
95+
# 18| r18_1(glval<int[2]>) = VariableAddress[x] :
96+
# 18| m18_2(int[2]) = Uninitialized[x] : &:r18_1
97+
# 18| r18_3(int) = Constant[0] :
98+
# 18| r18_4(glval<int>) = PointerAdd[4] : r18_1, r18_3
99+
# 18| r18_5(int) = Constant[1234] :
100+
# 18| m18_6(int) = Store[?] : &:r18_4, r18_5
101+
# 18| m18_7(int[2]) = Chi : total:m18_2, partial:m18_6
102+
# 18| r18_8(int) = Constant[1] :
103+
# 18| r18_9(glval<int>) = PointerAdd[4] : r18_1, r18_8
104+
# 18| r18_10(int) = Constant[5678] :
105+
# 18| m18_11(int) = Store[?] : &:r18_9, r18_10
106+
# 18| m18_12(int[2]) = Chi : total:m18_7, partial:m18_11
107+
# 20| r20_1(glval<int[2]>) = VariableAddress[y] :
108+
# 20| m20_2(int[2]) = Uninitialized[y] : &:r20_1
109+
# 20| r20_3(int) = Constant[0] :
110+
# 20| r20_4(glval<int>) = PointerAdd[4] : r20_1, r20_3
111+
# 20| r20_5(int) = Constant[5678] :
112+
# 20| m20_6(int) = Store[?] : &:r20_4, r20_5
113+
# 20| m20_7(int[2]) = Chi : total:m20_2, partial:m20_6
114+
# 20| r20_8(int) = Constant[1] :
115+
# 20| r20_9(glval<int>) = PointerAdd[4] : r20_1, r20_8
116+
# 20| r20_10(int) = Constant[1234] :
117+
# 20| m20_11(int) = Store[?] : &:r20_9, r20_10
118+
# 20| m20_12(int[2]) = Chi : total:m20_7, partial:m20_11
119+
# 21| v21_1(void) = NoOp :
120+
# 17| v17_5(void) = ReturnVoid :
121+
# 17| v17_6(void) = AliasedUse : m17_3
122+
# 17| v17_7(void) = ExitFunction :
123+
58124
ssa.cpp:
59125
# 13| int ChiPhiNode(Point*, bool, bool)
60126
# 13| Block 0

cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir_unsound.expected

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,72 @@ ssa.c:
5555
# 6| v6_6(void) = AliasedUse : m6_3
5656
# 6| v6_7(void) = ExitFunction :
5757

58+
# 11| void named_designators_2()
59+
# 11| Block 0
60+
# 11| v11_1(void) = EnterFunction :
61+
# 11| m11_2(unknown) = AliasedDefinition :
62+
# 11| m11_3(unknown) = InitializeNonLocal :
63+
# 11| m11_4(unknown) = Chi : total:m11_2, partial:m11_3
64+
# 12| r12_1(glval<Foo2>) = VariableAddress[foo] :
65+
# 12| m12_2(Foo2) = Uninitialized[foo] : &:r12_1
66+
# 12| r12_3(glval<int>) = FieldAddress[x] : r12_1
67+
# 12| r12_4(int) = Constant[1234] :
68+
# 12| m12_5(int) = Store[?] : &:r12_3, r12_4
69+
# 12| m12_6(Foo2) = Chi : total:m12_2, partial:m12_5
70+
# 12| r12_7(glval<int>) = FieldAddress[y] : r12_1
71+
# 12| r12_8(int) = Constant[5678] :
72+
# 12| m12_9(int) = Store[?] : &:r12_7, r12_8
73+
# 12| m12_10(Foo2) = Chi : total:m12_6, partial:m12_9
74+
# 14| r14_1(glval<Foo2>) = VariableAddress[foo_swapped] :
75+
# 14| m14_2(Foo2) = Uninitialized[foo_swapped] : &:r14_1
76+
# 14| r14_3(glval<int>) = FieldAddress[x] : r14_1
77+
# 14| r14_4(int) = Constant[1234] :
78+
# 14| m14_5(int) = Store[?] : &:r14_3, r14_4
79+
# 14| m14_6(Foo2) = Chi : total:m14_2, partial:m14_5
80+
# 14| r14_7(glval<int>) = FieldAddress[y] : r14_1
81+
# 14| r14_8(int) = Constant[5678] :
82+
# 14| m14_9(int) = Store[?] : &:r14_7, r14_8
83+
# 14| m14_10(Foo2) = Chi : total:m14_6, partial:m14_9
84+
# 15| v15_1(void) = NoOp :
85+
# 11| v11_5(void) = ReturnVoid :
86+
# 11| v11_6(void) = AliasedUse : m11_3
87+
# 11| v11_7(void) = ExitFunction :
88+
89+
# 17| void non_repeated_designators()
90+
# 17| Block 0
91+
# 17| v17_1(void) = EnterFunction :
92+
# 17| m17_2(unknown) = AliasedDefinition :
93+
# 17| m17_3(unknown) = InitializeNonLocal :
94+
# 17| m17_4(unknown) = Chi : total:m17_2, partial:m17_3
95+
# 18| r18_1(glval<int[2]>) = VariableAddress[x] :
96+
# 18| m18_2(int[2]) = Uninitialized[x] : &:r18_1
97+
# 18| r18_3(int) = Constant[0] :
98+
# 18| r18_4(glval<int>) = PointerAdd[4] : r18_1, r18_3
99+
# 18| r18_5(int) = Constant[1234] :
100+
# 18| m18_6(int) = Store[?] : &:r18_4, r18_5
101+
# 18| m18_7(int[2]) = Chi : total:m18_2, partial:m18_6
102+
# 18| r18_8(int) = Constant[1] :
103+
# 18| r18_9(glval<int>) = PointerAdd[4] : r18_1, r18_8
104+
# 18| r18_10(int) = Constant[5678] :
105+
# 18| m18_11(int) = Store[?] : &:r18_9, r18_10
106+
# 18| m18_12(int[2]) = Chi : total:m18_7, partial:m18_11
107+
# 20| r20_1(glval<int[2]>) = VariableAddress[y] :
108+
# 20| m20_2(int[2]) = Uninitialized[y] : &:r20_1
109+
# 20| r20_3(int) = Constant[0] :
110+
# 20| r20_4(glval<int>) = PointerAdd[4] : r20_1, r20_3
111+
# 20| r20_5(int) = Constant[5678] :
112+
# 20| m20_6(int) = Store[?] : &:r20_4, r20_5
113+
# 20| m20_7(int[2]) = Chi : total:m20_2, partial:m20_6
114+
# 20| r20_8(int) = Constant[1] :
115+
# 20| r20_9(glval<int>) = PointerAdd[4] : r20_1, r20_8
116+
# 20| r20_10(int) = Constant[1234] :
117+
# 20| m20_11(int) = Store[?] : &:r20_9, r20_10
118+
# 20| m20_12(int[2]) = Chi : total:m20_7, partial:m20_11
119+
# 21| v21_1(void) = NoOp :
120+
# 17| v17_5(void) = ReturnVoid :
121+
# 17| v17_6(void) = AliasedUse : m17_3
122+
# 17| v17_7(void) = ExitFunction :
123+
58124
ssa.cpp:
59125
# 13| int ChiPhiNode(Point*, bool, bool)
60126
# 13| Block 0

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,17 @@ void named_designators() {
55

66
void repeated_designators() {
77
int x[1] = {[0] = 1234, [0] = 5678};
8+
}
9+
10+
struct Foo2 { int x; int y; };
11+
void named_designators_2() {
12+
struct Foo2 foo = {.x = 1234, .y = 5678};
13+
14+
struct Foo2 foo_swapped = {.y = 5678, .x = 1234};
15+
}
16+
17+
void non_repeated_designators() {
18+
int x[2] = {[0] = 1234, [1] = 5678};
19+
20+
int y[2] = {[1] = 1234, [0] = 5678};
821
}

cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,62 @@ ssa.c:
4949
# 6| v6_5(void) = AliasedUse : ~m?
5050
# 6| v6_6(void) = ExitFunction :
5151

52+
# 11| void named_designators_2()
53+
# 11| Block 0
54+
# 11| v11_1(void) = EnterFunction :
55+
# 11| mu11_2(unknown) = AliasedDefinition :
56+
# 11| mu11_3(unknown) = InitializeNonLocal :
57+
# 12| r12_1(glval<Foo2>) = VariableAddress[foo] :
58+
# 12| mu12_2(Foo2) = Uninitialized[foo] : &:r12_1
59+
# 12| r12_3(glval<int>) = FieldAddress[x] : r12_1
60+
# 12| r12_4(int) = Constant[1234] :
61+
# 12| mu12_5(int) = Store[?] : &:r12_3, r12_4
62+
# 12| r12_6(glval<int>) = FieldAddress[y] : r12_1
63+
# 12| r12_7(int) = Constant[5678] :
64+
# 12| mu12_8(int) = Store[?] : &:r12_6, r12_7
65+
# 14| r14_1(glval<Foo2>) = VariableAddress[foo_swapped] :
66+
# 14| mu14_2(Foo2) = Uninitialized[foo_swapped] : &:r14_1
67+
# 14| r14_3(glval<int>) = FieldAddress[x] : r14_1
68+
# 14| r14_4(int) = Constant[1234] :
69+
# 14| mu14_5(int) = Store[?] : &:r14_3, r14_4
70+
# 14| r14_6(glval<int>) = FieldAddress[y] : r14_1
71+
# 14| r14_7(int) = Constant[5678] :
72+
# 14| mu14_8(int) = Store[?] : &:r14_6, r14_7
73+
# 15| v15_1(void) = NoOp :
74+
# 11| v11_4(void) = ReturnVoid :
75+
# 11| v11_5(void) = AliasedUse : ~m?
76+
# 11| v11_6(void) = ExitFunction :
77+
78+
# 17| void non_repeated_designators()
79+
# 17| Block 0
80+
# 17| v17_1(void) = EnterFunction :
81+
# 17| mu17_2(unknown) = AliasedDefinition :
82+
# 17| mu17_3(unknown) = InitializeNonLocal :
83+
# 18| r18_1(glval<int[2]>) = VariableAddress[x] :
84+
# 18| mu18_2(int[2]) = Uninitialized[x] : &:r18_1
85+
# 18| r18_3(int) = Constant[0] :
86+
# 18| r18_4(glval<int>) = PointerAdd[4] : r18_1, r18_3
87+
# 18| r18_5(int) = Constant[1234] :
88+
# 18| mu18_6(int) = Store[?] : &:r18_4, r18_5
89+
# 18| r18_7(int) = Constant[1] :
90+
# 18| r18_8(glval<int>) = PointerAdd[4] : r18_1, r18_7
91+
# 18| r18_9(int) = Constant[5678] :
92+
# 18| mu18_10(int) = Store[?] : &:r18_8, r18_9
93+
# 20| r20_1(glval<int[2]>) = VariableAddress[y] :
94+
# 20| mu20_2(int[2]) = Uninitialized[y] : &:r20_1
95+
# 20| r20_3(int) = Constant[0] :
96+
# 20| r20_4(glval<int>) = PointerAdd[4] : r20_1, r20_3
97+
# 20| r20_5(int) = Constant[5678] :
98+
# 20| mu20_6(int) = Store[?] : &:r20_4, r20_5
99+
# 20| r20_7(int) = Constant[1] :
100+
# 20| r20_8(glval<int>) = PointerAdd[4] : r20_1, r20_7
101+
# 20| r20_9(int) = Constant[1234] :
102+
# 20| mu20_10(int) = Store[?] : &:r20_8, r20_9
103+
# 21| v21_1(void) = NoOp :
104+
# 17| v17_4(void) = ReturnVoid :
105+
# 17| v17_5(void) = AliasedUse : ~m?
106+
# 17| v17_6(void) = ExitFunction :
107+
52108
ssa.cpp:
53109
# 13| int ChiPhiNode(Point*, bool, bool)
54110
# 13| Block 0

cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir_unsound.expected

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,62 @@ ssa.c:
4949
# 6| v6_5(void) = AliasedUse : ~m?
5050
# 6| v6_6(void) = ExitFunction :
5151

52+
# 11| void named_designators_2()
53+
# 11| Block 0
54+
# 11| v11_1(void) = EnterFunction :
55+
# 11| mu11_2(unknown) = AliasedDefinition :
56+
# 11| mu11_3(unknown) = InitializeNonLocal :
57+
# 12| r12_1(glval<Foo2>) = VariableAddress[foo] :
58+
# 12| mu12_2(Foo2) = Uninitialized[foo] : &:r12_1
59+
# 12| r12_3(glval<int>) = FieldAddress[x] : r12_1
60+
# 12| r12_4(int) = Constant[1234] :
61+
# 12| mu12_5(int) = Store[?] : &:r12_3, r12_4
62+
# 12| r12_6(glval<int>) = FieldAddress[y] : r12_1
63+
# 12| r12_7(int) = Constant[5678] :
64+
# 12| mu12_8(int) = Store[?] : &:r12_6, r12_7
65+
# 14| r14_1(glval<Foo2>) = VariableAddress[foo_swapped] :
66+
# 14| mu14_2(Foo2) = Uninitialized[foo_swapped] : &:r14_1
67+
# 14| r14_3(glval<int>) = FieldAddress[x] : r14_1
68+
# 14| r14_4(int) = Constant[1234] :
69+
# 14| mu14_5(int) = Store[?] : &:r14_3, r14_4
70+
# 14| r14_6(glval<int>) = FieldAddress[y] : r14_1
71+
# 14| r14_7(int) = Constant[5678] :
72+
# 14| mu14_8(int) = Store[?] : &:r14_6, r14_7
73+
# 15| v15_1(void) = NoOp :
74+
# 11| v11_4(void) = ReturnVoid :
75+
# 11| v11_5(void) = AliasedUse : ~m?
76+
# 11| v11_6(void) = ExitFunction :
77+
78+
# 17| void non_repeated_designators()
79+
# 17| Block 0
80+
# 17| v17_1(void) = EnterFunction :
81+
# 17| mu17_2(unknown) = AliasedDefinition :
82+
# 17| mu17_3(unknown) = InitializeNonLocal :
83+
# 18| r18_1(glval<int[2]>) = VariableAddress[x] :
84+
# 18| mu18_2(int[2]) = Uninitialized[x] : &:r18_1
85+
# 18| r18_3(int) = Constant[0] :
86+
# 18| r18_4(glval<int>) = PointerAdd[4] : r18_1, r18_3
87+
# 18| r18_5(int) = Constant[1234] :
88+
# 18| mu18_6(int) = Store[?] : &:r18_4, r18_5
89+
# 18| r18_7(int) = Constant[1] :
90+
# 18| r18_8(glval<int>) = PointerAdd[4] : r18_1, r18_7
91+
# 18| r18_9(int) = Constant[5678] :
92+
# 18| mu18_10(int) = Store[?] : &:r18_8, r18_9
93+
# 20| r20_1(glval<int[2]>) = VariableAddress[y] :
94+
# 20| mu20_2(int[2]) = Uninitialized[y] : &:r20_1
95+
# 20| r20_3(int) = Constant[0] :
96+
# 20| r20_4(glval<int>) = PointerAdd[4] : r20_1, r20_3
97+
# 20| r20_5(int) = Constant[5678] :
98+
# 20| mu20_6(int) = Store[?] : &:r20_4, r20_5
99+
# 20| r20_7(int) = Constant[1] :
100+
# 20| r20_8(glval<int>) = PointerAdd[4] : r20_1, r20_7
101+
# 20| r20_9(int) = Constant[1234] :
102+
# 20| mu20_10(int) = Store[?] : &:r20_8, r20_9
103+
# 21| v21_1(void) = NoOp :
104+
# 17| v17_4(void) = ReturnVoid :
105+
# 17| v17_5(void) = AliasedUse : ~m?
106+
# 17| v17_6(void) = ExitFunction :
107+
52108
ssa.cpp:
53109
# 13| int ChiPhiNode(Point*, bool, bool)
54110
# 13| Block 0

0 commit comments

Comments
 (0)