Skip to content

Commit 4033ed3

Browse files
committed
C++: Add evil testcase.
1 parent 52682e2 commit 4033ed3

File tree

5 files changed

+153
-0
lines changed

5 files changed

+153
-0
lines changed

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,45 @@ ssa.c:
121121
# 17| v17_6(void) = AliasedUse : m17_3
122122
# 17| v17_7(void) = ExitFunction :
123123

124+
# 28| void test_foo_array_and_int()
125+
# 28| Block 0
126+
# 28| v28_1(void) = EnterFunction :
127+
# 28| m28_2(unknown) = AliasedDefinition :
128+
# 28| m28_3(unknown) = InitializeNonLocal :
129+
# 28| m28_4(unknown) = Chi : total:m28_2, partial:m28_3
130+
# 29| r29_1(glval<Foo_array_and_int>) = VariableAddress[f] :
131+
# 29| m29_2(Foo_array_and_int) = Uninitialized[f] : &:r29_1
132+
# 29| r29_3(glval<int[2]>) = FieldAddress[x] : r29_1
133+
# 29| r29_4(int) = Constant[0] :
134+
# 29| r29_5(glval<int>) = PointerAdd[4] : r29_3, r29_4
135+
# 29| r29_6(int) = Constant[0] :
136+
# 29| m29_7(int) = Store[?] : &:r29_5, r29_6
137+
# 29| m29_8(Foo_array_and_int) = Chi : total:m29_2, partial:m29_7
138+
# 29| r29_9(int) = Constant[1] :
139+
# 29| r29_10(glval<int>) = PointerAdd[4] : r29_3, r29_9
140+
# 29| r29_11(int) = Constant[1] :
141+
# 29| m29_12(int) = Store[?] : &:r29_10, r29_11
142+
# 29| m29_13(Foo_array_and_int) = Chi : total:m29_8, partial:m29_12
143+
# 29| r29_14(glval<int[2]>) = FieldAddress[x] : r29_1
144+
# 29| r29_15(int) = Constant[0] :
145+
# 29| r29_16(glval<int>) = PointerAdd[4] : r29_14, r29_15
146+
# 29| r29_17(int) = Constant[42] :
147+
# 29| m29_18(int) = Store[?] : &:r29_16, r29_17
148+
# 29| m29_19(Foo_array_and_int) = Chi : total:m29_13, partial:m29_18
149+
# 29| r29_20(int) = Constant[1] :
150+
# 29| r29_21(glval<int>) = PointerAdd[4] : r29_14, r29_20
151+
# 29| r29_22(int) = Constant[0] :
152+
# 29| m29_23(int) = Store[?] : &:r29_21, r29_22
153+
# 29| m29_24(Foo_array_and_int) = Chi : total:m29_19, partial:m29_23
154+
# 29| r29_25(glval<int>) = FieldAddress[y] : r29_1
155+
# 29| r29_26(int) = Constant[42] :
156+
# 29| m29_27(int) = Store[?] : &:r29_25, r29_26
157+
# 29| m29_28(Foo_array_and_int) = Chi : total:m29_24, partial:m29_27
158+
# 30| v30_1(void) = NoOp :
159+
# 28| v28_5(void) = ReturnVoid :
160+
# 28| v28_6(void) = AliasedUse : m28_3
161+
# 28| v28_7(void) = ExitFunction :
162+
124163
ssa.cpp:
125164
# 13| int ChiPhiNode(Point*, bool, bool)
126165
# 13| Block 0

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,45 @@ ssa.c:
121121
# 17| v17_6(void) = AliasedUse : m17_3
122122
# 17| v17_7(void) = ExitFunction :
123123

124+
# 28| void test_foo_array_and_int()
125+
# 28| Block 0
126+
# 28| v28_1(void) = EnterFunction :
127+
# 28| m28_2(unknown) = AliasedDefinition :
128+
# 28| m28_3(unknown) = InitializeNonLocal :
129+
# 28| m28_4(unknown) = Chi : total:m28_2, partial:m28_3
130+
# 29| r29_1(glval<Foo_array_and_int>) = VariableAddress[f] :
131+
# 29| m29_2(Foo_array_and_int) = Uninitialized[f] : &:r29_1
132+
# 29| r29_3(glval<int[2]>) = FieldAddress[x] : r29_1
133+
# 29| r29_4(int) = Constant[0] :
134+
# 29| r29_5(glval<int>) = PointerAdd[4] : r29_3, r29_4
135+
# 29| r29_6(int) = Constant[0] :
136+
# 29| m29_7(int) = Store[?] : &:r29_5, r29_6
137+
# 29| m29_8(Foo_array_and_int) = Chi : total:m29_2, partial:m29_7
138+
# 29| r29_9(int) = Constant[1] :
139+
# 29| r29_10(glval<int>) = PointerAdd[4] : r29_3, r29_9
140+
# 29| r29_11(int) = Constant[1] :
141+
# 29| m29_12(int) = Store[?] : &:r29_10, r29_11
142+
# 29| m29_13(Foo_array_and_int) = Chi : total:m29_8, partial:m29_12
143+
# 29| r29_14(glval<int[2]>) = FieldAddress[x] : r29_1
144+
# 29| r29_15(int) = Constant[0] :
145+
# 29| r29_16(glval<int>) = PointerAdd[4] : r29_14, r29_15
146+
# 29| r29_17(int) = Constant[42] :
147+
# 29| m29_18(int) = Store[?] : &:r29_16, r29_17
148+
# 29| m29_19(Foo_array_and_int) = Chi : total:m29_13, partial:m29_18
149+
# 29| r29_20(int) = Constant[1] :
150+
# 29| r29_21(glval<int>) = PointerAdd[4] : r29_14, r29_20
151+
# 29| r29_22(int) = Constant[0] :
152+
# 29| m29_23(int) = Store[?] : &:r29_21, r29_22
153+
# 29| m29_24(Foo_array_and_int) = Chi : total:m29_19, partial:m29_23
154+
# 29| r29_25(glval<int>) = FieldAddress[y] : r29_1
155+
# 29| r29_26(int) = Constant[42] :
156+
# 29| m29_27(int) = Store[?] : &:r29_25, r29_26
157+
# 29| m29_28(Foo_array_and_int) = Chi : total:m29_24, partial:m29_27
158+
# 30| v30_1(void) = NoOp :
159+
# 28| v28_5(void) = ReturnVoid :
160+
# 28| v28_6(void) = AliasedUse : m28_3
161+
# 28| v28_7(void) = ExitFunction :
162+
124163
ssa.cpp:
125164
# 13| int ChiPhiNode(Point*, bool, bool)
126165
# 13| Block 0

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,13 @@ void non_repeated_designators() {
1818
int x[2] = {[0] = 1234, [1] = 5678};
1919

2020
int y[2] = {[1] = 1234, [0] = 5678};
21+
}
22+
23+
struct Foo_array_and_int {
24+
int x[2];
25+
int y;
26+
};
27+
28+
void test_foo_array_and_int() {
29+
struct Foo_array_and_int f = { .x = {0, 1}, .x[0] = 42, .y = 42 };
2130
}

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,39 @@ ssa.c:
105105
# 17| v17_5(void) = AliasedUse : ~m?
106106
# 17| v17_6(void) = ExitFunction :
107107

108+
# 28| void test_foo_array_and_int()
109+
# 28| Block 0
110+
# 28| v28_1(void) = EnterFunction :
111+
# 28| mu28_2(unknown) = AliasedDefinition :
112+
# 28| mu28_3(unknown) = InitializeNonLocal :
113+
# 29| r29_1(glval<Foo_array_and_int>) = VariableAddress[f] :
114+
# 29| mu29_2(Foo_array_and_int) = Uninitialized[f] : &:r29_1
115+
# 29| r29_3(glval<int[2]>) = FieldAddress[x] : r29_1
116+
# 29| r29_4(int) = Constant[0] :
117+
# 29| r29_5(glval<int>) = PointerAdd[4] : r29_3, r29_4
118+
# 29| r29_6(int) = Constant[0] :
119+
# 29| mu29_7(int) = Store[?] : &:r29_5, r29_6
120+
# 29| r29_8(int) = Constant[1] :
121+
# 29| r29_9(glval<int>) = PointerAdd[4] : r29_3, r29_8
122+
# 29| r29_10(int) = Constant[1] :
123+
# 29| mu29_11(int) = Store[?] : &:r29_9, r29_10
124+
# 29| r29_12(glval<int[2]>) = FieldAddress[x] : r29_1
125+
# 29| r29_13(int) = Constant[0] :
126+
# 29| r29_14(glval<int>) = PointerAdd[4] : r29_12, r29_13
127+
# 29| r29_15(int) = Constant[42] :
128+
# 29| mu29_16(int) = Store[?] : &:r29_14, r29_15
129+
# 29| r29_17(int) = Constant[1] :
130+
# 29| r29_18(glval<int>) = PointerAdd[4] : r29_12, r29_17
131+
# 29| r29_19(int) = Constant[0] :
132+
# 29| mu29_20(int) = Store[?] : &:r29_18, r29_19
133+
# 29| r29_21(glval<int>) = FieldAddress[y] : r29_1
134+
# 29| r29_22(int) = Constant[42] :
135+
# 29| mu29_23(int) = Store[?] : &:r29_21, r29_22
136+
# 30| v30_1(void) = NoOp :
137+
# 28| v28_4(void) = ReturnVoid :
138+
# 28| v28_5(void) = AliasedUse : ~m?
139+
# 28| v28_6(void) = ExitFunction :
140+
108141
ssa.cpp:
109142
# 13| int ChiPhiNode(Point*, bool, bool)
110143
# 13| Block 0

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,39 @@ ssa.c:
105105
# 17| v17_5(void) = AliasedUse : ~m?
106106
# 17| v17_6(void) = ExitFunction :
107107

108+
# 28| void test_foo_array_and_int()
109+
# 28| Block 0
110+
# 28| v28_1(void) = EnterFunction :
111+
# 28| mu28_2(unknown) = AliasedDefinition :
112+
# 28| mu28_3(unknown) = InitializeNonLocal :
113+
# 29| r29_1(glval<Foo_array_and_int>) = VariableAddress[f] :
114+
# 29| mu29_2(Foo_array_and_int) = Uninitialized[f] : &:r29_1
115+
# 29| r29_3(glval<int[2]>) = FieldAddress[x] : r29_1
116+
# 29| r29_4(int) = Constant[0] :
117+
# 29| r29_5(glval<int>) = PointerAdd[4] : r29_3, r29_4
118+
# 29| r29_6(int) = Constant[0] :
119+
# 29| mu29_7(int) = Store[?] : &:r29_5, r29_6
120+
# 29| r29_8(int) = Constant[1] :
121+
# 29| r29_9(glval<int>) = PointerAdd[4] : r29_3, r29_8
122+
# 29| r29_10(int) = Constant[1] :
123+
# 29| mu29_11(int) = Store[?] : &:r29_9, r29_10
124+
# 29| r29_12(glval<int[2]>) = FieldAddress[x] : r29_1
125+
# 29| r29_13(int) = Constant[0] :
126+
# 29| r29_14(glval<int>) = PointerAdd[4] : r29_12, r29_13
127+
# 29| r29_15(int) = Constant[42] :
128+
# 29| mu29_16(int) = Store[?] : &:r29_14, r29_15
129+
# 29| r29_17(int) = Constant[1] :
130+
# 29| r29_18(glval<int>) = PointerAdd[4] : r29_12, r29_17
131+
# 29| r29_19(int) = Constant[0] :
132+
# 29| mu29_20(int) = Store[?] : &:r29_18, r29_19
133+
# 29| r29_21(glval<int>) = FieldAddress[y] : r29_1
134+
# 29| r29_22(int) = Constant[42] :
135+
# 29| mu29_23(int) = Store[?] : &:r29_21, r29_22
136+
# 30| v30_1(void) = NoOp :
137+
# 28| v28_4(void) = ReturnVoid :
138+
# 28| v28_5(void) = AliasedUse : ~m?
139+
# 28| v28_6(void) = ExitFunction :
140+
108141
ssa.cpp:
109142
# 13| int ChiPhiNode(Point*, bool, bool)
110143
# 13| Block 0

0 commit comments

Comments
 (0)