Skip to content

Commit d4746e0

Browse files
committed
C++: Add test with VLA.
1 parent 2ef1743 commit d4746e0

9 files changed

+86
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| ssa.cpp:402:7:402:7 | Uninitialized: definition of b | Instruction 'Uninitialized: definition of b' has no successors in function '$@'. | ssa.cpp:401:6:401:8 | void vla(int, int, int, bool) | void vla(int, int, int, bool) |
910
ambiguousSuccessors
1011
unexplainedLoop
1112
unnecessaryPhiInstruction

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| ssa.cpp:402:7:402:7 | Uninitialized: definition of b | Instruction 'Uninitialized: definition of b' has no successors in function '$@'. | ssa.cpp:401:6:401:8 | void vla(int, int, int, bool) | void vla(int, int, int, bool) |
910
ambiguousSuccessors
1011
unexplainedLoop
1112
unnecessaryPhiInstruction

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1814,3 +1814,20 @@ ssa.cpp:
18141814

18151815
# 383| Block 5
18161816
# 383| v383_17(void) = Unreached :
1817+
1818+
# 401| void vla(int, int, int, bool)
1819+
# 401| Block 0
1820+
# 401| v401_1(void) = EnterFunction :
1821+
# 401| m401_2(unknown) = AliasedDefinition :
1822+
# 401| m401_3(unknown) = InitializeNonLocal :
1823+
# 401| m401_4(unknown) = Chi : total:m401_2, partial:m401_3
1824+
# 401| r401_5(glval<int>) = VariableAddress[n1] :
1825+
# 401| m401_6(int) = InitializeParameter[n1] : &:r401_5
1826+
# 401| r401_7(glval<int>) = VariableAddress[n2] :
1827+
# 401| m401_8(int) = InitializeParameter[n2] : &:r401_7
1828+
# 401| r401_9(glval<int>) = VariableAddress[n3] :
1829+
# 401| m401_10(int) = InitializeParameter[n3] : &:r401_9
1830+
# 401| r401_11(glval<bool>) = VariableAddress[b1] :
1831+
# 401| m401_12(bool) = InitializeParameter[b1] : &:r401_11
1832+
# 402| r402_1(glval<int[]>) = VariableAddress[b] :
1833+
# 402| m402_2(int[]) = Uninitialized[b] : &:r402_1

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1804,3 +1804,20 @@ ssa.cpp:
18041804

18051805
# 383| Block 5
18061806
# 383| v383_17(void) = Unreached :
1807+
1808+
# 401| void vla(int, int, int, bool)
1809+
# 401| Block 0
1810+
# 401| v401_1(void) = EnterFunction :
1811+
# 401| m401_2(unknown) = AliasedDefinition :
1812+
# 401| m401_3(unknown) = InitializeNonLocal :
1813+
# 401| m401_4(unknown) = Chi : total:m401_2, partial:m401_3
1814+
# 401| r401_5(glval<int>) = VariableAddress[n1] :
1815+
# 401| m401_6(int) = InitializeParameter[n1] : &:r401_5
1816+
# 401| r401_7(glval<int>) = VariableAddress[n2] :
1817+
# 401| m401_8(int) = InitializeParameter[n2] : &:r401_7
1818+
# 401| r401_9(glval<int>) = VariableAddress[n3] :
1819+
# 401| m401_10(int) = InitializeParameter[n3] : &:r401_9
1820+
# 401| r401_11(glval<bool>) = VariableAddress[b1] :
1821+
# 401| m401_12(bool) = InitializeParameter[b1] : &:r401_11
1822+
# 402| r402_1(glval<int[]>) = VariableAddress[b] :
1823+
# 402| m402_2(int[]) = Uninitialized[b] : &:r402_1

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,4 +396,20 @@ int FusedBlockPhiOperand(int x, int y, int z, bool b1) {
396396
}
397397

398398
return ret;
399+
}
400+
401+
void vla(int n1, int n2, int n3, bool b1) {
402+
int b[n1];
403+
int c[n1][n2];
404+
405+
*b = 0;
406+
b[0] = 1;
407+
408+
**(c + 1) = 0;
409+
410+
if(b1) {
411+
int b[n1];
412+
} else {
413+
int b[n2];
414+
}
399415
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| ssa.cpp:402:7:402:7 | Uninitialized: definition of b | Instruction 'Uninitialized: definition of b' has no successors in function '$@'. | ssa.cpp:401:6:401:8 | void vla(int, int, int, bool) | void vla(int, int, int, bool) |
910
ambiguousSuccessors
1011
unexplainedLoop
1112
unnecessaryPhiInstruction

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| ssa.cpp:402:7:402:7 | Uninitialized: definition of b | Instruction 'Uninitialized: definition of b' has no successors in function '$@'. | ssa.cpp:401:6:401:8 | void vla(int, int, int, bool) | void vla(int, int, int, bool) |
910
ambiguousSuccessors
1011
unexplainedLoop
1112
unnecessaryPhiInstruction

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,3 +1695,19 @@ ssa.cpp:
16951695
# 383| v383_13(void) = ReturnValue : &:r383_12, m398_5
16961696
# 383| v383_14(void) = AliasedUse : ~m?
16971697
# 383| v383_15(void) = ExitFunction :
1698+
1699+
# 401| void vla(int, int, int, bool)
1700+
# 401| Block 0
1701+
# 401| v401_1(void) = EnterFunction :
1702+
# 401| mu401_2(unknown) = AliasedDefinition :
1703+
# 401| mu401_3(unknown) = InitializeNonLocal :
1704+
# 401| r401_4(glval<int>) = VariableAddress[n1] :
1705+
# 401| m401_5(int) = InitializeParameter[n1] : &:r401_4
1706+
# 401| r401_6(glval<int>) = VariableAddress[n2] :
1707+
# 401| m401_7(int) = InitializeParameter[n2] : &:r401_6
1708+
# 401| r401_8(glval<int>) = VariableAddress[n3] :
1709+
# 401| m401_9(int) = InitializeParameter[n3] : &:r401_8
1710+
# 401| r401_10(glval<bool>) = VariableAddress[b1] :
1711+
# 401| m401_11(bool) = InitializeParameter[b1] : &:r401_10
1712+
# 402| r402_1(glval<int[]>) = VariableAddress[b] :
1713+
# 402| mu402_2(int[]) = Uninitialized[b] : &:r402_1

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,3 +1695,19 @@ ssa.cpp:
16951695
# 383| v383_13(void) = ReturnValue : &:r383_12, m398_5
16961696
# 383| v383_14(void) = AliasedUse : ~m?
16971697
# 383| v383_15(void) = ExitFunction :
1698+
1699+
# 401| void vla(int, int, int, bool)
1700+
# 401| Block 0
1701+
# 401| v401_1(void) = EnterFunction :
1702+
# 401| mu401_2(unknown) = AliasedDefinition :
1703+
# 401| mu401_3(unknown) = InitializeNonLocal :
1704+
# 401| r401_4(glval<int>) = VariableAddress[n1] :
1705+
# 401| m401_5(int) = InitializeParameter[n1] : &:r401_4
1706+
# 401| r401_6(glval<int>) = VariableAddress[n2] :
1707+
# 401| m401_7(int) = InitializeParameter[n2] : &:r401_6
1708+
# 401| r401_8(glval<int>) = VariableAddress[n3] :
1709+
# 401| m401_9(int) = InitializeParameter[n3] : &:r401_8
1710+
# 401| r401_10(glval<bool>) = VariableAddress[b1] :
1711+
# 401| m401_11(bool) = InitializeParameter[b1] : &:r401_10
1712+
# 402| r402_1(glval<int[]>) = VariableAddress[b] :
1713+
# 402| mu402_2(int[]) = Uninitialized[b] : &:r402_1

0 commit comments

Comments
 (0)