Skip to content

Commit f23316d

Browse files
committed
C++: Add sizeof VLA IR test cases
1 parent b361b0f commit f23316d

9 files changed

+331
-0
lines changed

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

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24581,6 +24581,186 @@ ir.cpp:
2458124581
# 2776| Value = [CStyleCast] 42
2458224582
# 2776| ValueCategory = prvalue
2458324583
# 2777| getStmt(2): [ReturnStmt] return ...
24584+
# 2779| [TopLevelFunction] void vla_sizeof_test(int, size_t, char)
24585+
# 2779| <params>:
24586+
# 2779| getParameter(0): [Parameter] len1
24587+
# 2779| Type = [IntType] int
24588+
# 2779| getParameter(1): [Parameter] len2
24589+
# 2779| Type = [CTypedefType,Size_t] size_t
24590+
# 2779| getParameter(2): [Parameter] len3
24591+
# 2779| Type = [PlainCharType] char
24592+
# 2780| getEntryPoint(): [BlockStmt] { ... }
24593+
# 2781| getStmt(0): [DeclStmt] declaration
24594+
# 2781| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1
24595+
# 2781| Type = [ArrayType] char[]
24596+
# 2781| getStmt(1): [VlaDimensionStmt] VLA dimension size
24597+
# 2781| getDimensionExpr(): [VariableAccess] len1
24598+
# 2781| Type = [IntType] int
24599+
# 2781| ValueCategory = prvalue(load)
24600+
# 2781| getStmt(2): [VlaDeclStmt] VLA declaration
24601+
# 2782| getStmt(3): [DeclStmt] declaration
24602+
# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
24603+
# 2782| Type = [CTypedefType,Size_t] size_t
24604+
# 2782| getVariable().getInitializer(): [Initializer] initializer for x
24605+
# 2782| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24606+
# 2782| Type = [LongType] unsigned long
24607+
# 2782| ValueCategory = prvalue
24608+
# 2782| getExprOperand(): [VariableAccess] tmp1
24609+
# 2782| Type = [ArrayType] char[]
24610+
# 2782| ValueCategory = lvalue
24611+
# 2782| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24612+
# 2782| Type = [ArrayType] char[]
24613+
# 2782| ValueCategory = lvalue
24614+
# 2783| getStmt(4): [DeclStmt] declaration
24615+
# 2783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2
24616+
# 2783| Type = [ArrayType] int[][]
24617+
# 2783| getStmt(5): [VlaDimensionStmt] VLA dimension size
24618+
# 2783| getDimensionExpr(): [VariableAccess] len1
24619+
# 2783| Type = [IntType] int
24620+
# 2783| ValueCategory = prvalue(load)
24621+
# 2783| getStmt(6): [VlaDimensionStmt] VLA dimension size
24622+
# 2783| getDimensionExpr(): [VariableAccess] len2
24623+
# 2783| Type = [CTypedefType,Size_t] size_t
24624+
# 2783| ValueCategory = prvalue(load)
24625+
# 2783| getStmt(7): [VlaDeclStmt] VLA declaration
24626+
# 2784| getStmt(8): [DeclStmt] declaration
24627+
# 2784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
24628+
# 2784| Type = [CTypedefType,Size_t] size_t
24629+
# 2784| getVariable().getInitializer(): [Initializer] initializer for y
24630+
# 2784| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24631+
# 2784| Type = [LongType] unsigned long
24632+
# 2784| ValueCategory = prvalue
24633+
# 2784| getExprOperand(): [VariableAccess] tmp2
24634+
# 2784| Type = [ArrayType] int[][]
24635+
# 2784| ValueCategory = lvalue
24636+
# 2784| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24637+
# 2784| Type = [ArrayType] int[][]
24638+
# 2784| ValueCategory = lvalue
24639+
# 2785| getStmt(9): [DeclStmt] declaration
24640+
# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z
24641+
# 2785| Type = [CTypedefType,Size_t] size_t
24642+
# 2785| getVariable().getInitializer(): [Initializer] initializer for z
24643+
# 2785| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24644+
# 2785| Type = [LongType] unsigned long
24645+
# 2785| ValueCategory = prvalue
24646+
# 2785| getExprOperand(): [PointerDereferenceExpr] * ...
24647+
# 2785| Type = [ArrayType] int[]
24648+
# 2785| ValueCategory = lvalue
24649+
# 2785| getOperand(): [VariableAccess] tmp2
24650+
# 2785| Type = [ArrayType] int[][]
24651+
# 2785| ValueCategory = lvalue
24652+
# 2785| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24653+
# 2785| Type = [PointerType] int(*)[]
24654+
# 2785| ValueCategory = prvalue
24655+
# 2785| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24656+
# 2785| Type = [ArrayType] int[]
24657+
# 2785| ValueCategory = lvalue
24658+
# 2786| getStmt(10): [DeclStmt] declaration
24659+
# 2786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp3
24660+
# 2786| Type = [ArrayType] int[][][]
24661+
# 2786| getStmt(11): [VlaDimensionStmt] VLA dimension size
24662+
# 2786| getDimensionExpr(): [VariableAccess] len1
24663+
# 2786| Type = [IntType] int
24664+
# 2786| ValueCategory = prvalue(load)
24665+
# 2786| getStmt(12): [VlaDimensionStmt] VLA dimension size
24666+
# 2786| getDimensionExpr(): [VariableAccess] len2
24667+
# 2786| Type = [CTypedefType,Size_t] size_t
24668+
# 2786| ValueCategory = prvalue(load)
24669+
# 2786| getStmt(13): [VlaDimensionStmt] VLA dimension size
24670+
# 2786| getDimensionExpr(): [VariableAccess] len3
24671+
# 2786| Type = [PlainCharType] char
24672+
# 2786| ValueCategory = prvalue(load)
24673+
# 2786| getStmt(14): [VlaDeclStmt] VLA declaration
24674+
# 2787| getStmt(15): [DeclStmt] declaration
24675+
# 2787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w
24676+
# 2787| Type = [CTypedefType,Size_t] size_t
24677+
# 2787| getVariable().getInitializer(): [Initializer] initializer for w
24678+
# 2787| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24679+
# 2787| Type = [LongType] unsigned long
24680+
# 2787| ValueCategory = prvalue
24681+
# 2787| getExprOperand(): [VariableAccess] tmp3
24682+
# 2787| Type = [ArrayType] int[][][]
24683+
# 2787| ValueCategory = lvalue
24684+
# 2787| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24685+
# 2787| Type = [ArrayType] int[][][]
24686+
# 2787| ValueCategory = lvalue
24687+
# 2788| getStmt(16): [DeclStmt] declaration
24688+
# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
24689+
# 2788| Type = [CTypedefType,Size_t] size_t
24690+
# 2788| getVariable().getInitializer(): [Initializer] initializer for v
24691+
# 2788| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24692+
# 2788| Type = [LongType] unsigned long
24693+
# 2788| ValueCategory = prvalue
24694+
# 2788| getExprOperand(): [PointerDereferenceExpr] * ...
24695+
# 2788| Type = [ArrayType] int[][]
24696+
# 2788| ValueCategory = lvalue
24697+
# 2788| getOperand(): [VariableAccess] tmp3
24698+
# 2788| Type = [ArrayType] int[][][]
24699+
# 2788| ValueCategory = lvalue
24700+
# 2788| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24701+
# 2788| Type = [PointerType] int(*)[][]
24702+
# 2788| ValueCategory = prvalue
24703+
# 2788| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24704+
# 2788| Type = [ArrayType] int[][]
24705+
# 2788| ValueCategory = lvalue
24706+
# 2789| getStmt(17): [DeclStmt] declaration
24707+
# 2789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u
24708+
# 2789| Type = [CTypedefType,Size_t] size_t
24709+
# 2789| getVariable().getInitializer(): [Initializer] initializer for u
24710+
# 2789| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24711+
# 2789| Type = [LongType] unsigned long
24712+
# 2789| ValueCategory = prvalue
24713+
# 2789| getExprOperand(): [PointerDereferenceExpr] * ...
24714+
# 2789| Type = [ArrayType] int[]
24715+
# 2789| ValueCategory = lvalue
24716+
# 2789| getOperand(): [PointerDereferenceExpr] * ...
24717+
# 2789| Type = [ArrayType] int[][]
24718+
# 2789| ValueCategory = lvalue
24719+
# 2789| getOperand(): [VariableAccess] tmp3
24720+
# 2789| Type = [ArrayType] int[][][]
24721+
# 2789| ValueCategory = lvalue
24722+
# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24723+
# 2789| Type = [PointerType] int(*)[][]
24724+
# 2789| ValueCategory = prvalue
24725+
# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24726+
# 2789| Type = [PointerType] int(*)[]
24727+
# 2789| ValueCategory = prvalue
24728+
# 2789| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24729+
# 2789| Type = [ArrayType] int[]
24730+
# 2789| ValueCategory = lvalue
24731+
# 2790| getStmt(18): [DeclStmt] declaration
24732+
# 2790| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t
24733+
# 2790| Type = [CTypedefType,Size_t] size_t
24734+
# 2790| getVariable().getInitializer(): [Initializer] initializer for t
24735+
# 2790| getExpr(): [SizeofExprOperator] sizeof(<expr>)
24736+
# 2790| Type = [LongType] unsigned long
24737+
# 2790| Value = [SizeofExprOperator] 4
24738+
# 2790| ValueCategory = prvalue
24739+
# 2790| getExprOperand(): [PointerDereferenceExpr] * ...
24740+
# 2790| Type = [IntType] int
24741+
# 2790| ValueCategory = lvalue
24742+
# 2790| getOperand(): [PointerDereferenceExpr] * ...
24743+
# 2790| Type = [ArrayType] int[]
24744+
# 2790| ValueCategory = lvalue
24745+
# 2790| getOperand(): [PointerDereferenceExpr] * ...
24746+
# 2790| Type = [ArrayType] int[][]
24747+
# 2790| ValueCategory = lvalue
24748+
# 2790| getOperand(): [VariableAccess] tmp3
24749+
# 2790| Type = [ArrayType] int[][][]
24750+
# 2790| ValueCategory = lvalue
24751+
# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24752+
# 2790| Type = [PointerType] int(*)[][]
24753+
# 2790| ValueCategory = prvalue
24754+
# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24755+
# 2790| Type = [PointerType] int(*)[]
24756+
# 2790| ValueCategory = prvalue
24757+
# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
24758+
# 2790| Type = [IntPointerType] int *
24759+
# 2790| ValueCategory = prvalue
24760+
# 2790| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
24761+
# 2790| Type = [IntType] int
24762+
# 2790| ValueCategory = lvalue
24763+
# 2791| getStmt(19): [ReturnStmt] return ...
2458424764
ir23.cpp:
2458524765
# 1| [TopLevelFunction] bool consteval_1()
2458624766
# 1| <params>:

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20430,6 +20430,25 @@ ir.cpp:
2043020430
# 2774| v2774_6(void) = AliasedUse : ~m2776_6
2043120431
# 2774| v2774_7(void) = ExitFunction :
2043220432

20433+
# 2779| void vla_sizeof_test(int, size_t, char)
20434+
# 2779| Block 0
20435+
# 2779| v2779_1(void) = EnterFunction :
20436+
# 2779| m2779_2(unknown) = AliasedDefinition :
20437+
# 2779| m2779_3(unknown) = InitializeNonLocal :
20438+
# 2779| m2779_4(unknown) = Chi : total:m2779_2, partial:m2779_3
20439+
# 2779| r2779_5(glval<int>) = VariableAddress[len1] :
20440+
# 2779| m2779_6(int) = InitializeParameter[len1] : &:r2779_5
20441+
# 2779| r2779_7(glval<unsigned long>) = VariableAddress[len2] :
20442+
# 2779| m2779_8(unsigned long) = InitializeParameter[len2] : &:r2779_7
20443+
# 2779| r2779_9(glval<char>) = VariableAddress[len3] :
20444+
# 2779| m2779_10(char) = InitializeParameter[len3] : &:r2779_9
20445+
# 2781| r2781_1(glval<char[]>) = VariableAddress[tmp1] :
20446+
# 2781| m2781_2(char[]) = Uninitialized[tmp1] : &:r2781_1
20447+
# 2781| r2781_3(glval<int>) = VariableAddress[len1] :
20448+
# 2781| r2781_4(int) = Load[len1] : &:r2781_3, m2779_6
20449+
# 2781| v2781_5(void) = NoOp :
20450+
# 2782| r2782_1(glval<unsigned long>) = VariableAddress[x] :
20451+
2043320452
ir23.cpp:
2043420453
# 1| bool consteval_1()
2043520454
# 1| Block 0

cpp/ql/test/library-tests/ir/ir/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+
| ir.cpp:2782:10:2782:10 | VariableAddress: definition of x | Instruction 'VariableAddress: definition of x' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
910
ambiguousSuccessors
1011
unexplainedLoop
1112
unnecessaryPhiInstruction

cpp/ql/test/library-tests/ir/ir/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+
| ir.cpp:2782:10:2782:10 | VariableAddress: definition of x | Instruction 'VariableAddress: definition of x' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
910
ambiguousSuccessors
1011
unexplainedLoop
1112
unnecessaryPhiInstruction

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2776,4 +2776,18 @@ void test_allocation_with_initializer() {
27762776
long* p2 = new long(42);
27772777
}
27782778

2779+
void vla_sizeof_test(int len1, size_t len2, char len3)
2780+
{
2781+
char tmp1[len1];
2782+
size_t x = sizeof(tmp1);
2783+
int tmp2[len1][len2];
2784+
size_t y = sizeof(tmp2);
2785+
size_t z = sizeof(*tmp2);
2786+
int tmp3[len1][len2][len3];
2787+
size_t w = sizeof(tmp3);
2788+
size_t v = sizeof(*tmp3);
2789+
size_t u = sizeof(**tmp3);
2790+
size_t t = sizeof(***tmp3);
2791+
}
2792+
27792793
// semmle-extractor-options: -std=c++20 --clang

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
11
missingOperand
2+
| ir.cpp:2782:14:2782:25 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
3+
| ir.cpp:2784:14:2784:25 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
4+
| ir.cpp:2785:14:2785:26 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
5+
| ir.cpp:2787:14:2787:25 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
6+
| ir.cpp:2788:14:2788:26 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
7+
| ir.cpp:2789:14:2789:27 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
28
unexpectedOperand
39
duplicateOperand
410
missingPhiOperand
511
missingOperandType
612
duplicateChiOperand
713
sideEffectWithoutPrimary
814
instructionWithoutSuccessor
15+
| ir.cpp:2782:10:2782:10 | VariableAddress: definition of x | Instruction 'VariableAddress: definition of x' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
16+
| ir.cpp:2782:21:2782:24 | VariableAddress: tmp1 | Instruction 'VariableAddress: tmp1' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
17+
| ir.cpp:2784:10:2784:10 | VariableAddress: definition of y | Instruction 'VariableAddress: definition of y' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
18+
| ir.cpp:2784:21:2784:24 | VariableAddress: tmp2 | Instruction 'VariableAddress: tmp2' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
19+
| ir.cpp:2785:10:2785:10 | VariableAddress: definition of z | Instruction 'VariableAddress: definition of z' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
20+
| ir.cpp:2785:21:2785:25 | CopyValue: * ... | Instruction 'CopyValue: * ...' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
21+
| ir.cpp:2787:10:2787:10 | VariableAddress: definition of w | Instruction 'VariableAddress: definition of w' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
22+
| ir.cpp:2787:21:2787:24 | VariableAddress: tmp3 | Instruction 'VariableAddress: tmp3' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
23+
| ir.cpp:2788:10:2788:10 | VariableAddress: definition of v | Instruction 'VariableAddress: definition of v' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
24+
| ir.cpp:2788:21:2788:25 | CopyValue: * ... | Instruction 'CopyValue: * ...' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
25+
| ir.cpp:2789:10:2789:10 | VariableAddress: definition of u | Instruction 'VariableAddress: definition of u' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
26+
| ir.cpp:2789:21:2789:26 | CopyValue: * ... | Instruction 'CopyValue: * ...' has no successors in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
927
ambiguousSuccessors
1028
unexplainedLoop
1129
unnecessaryPhiInstruction
@@ -21,6 +39,12 @@ lostReachability
2139
backEdgeCountMismatch
2240
useNotDominatedByDefinition
2341
| ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
42+
| ir.cpp:2782:10:2782:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
43+
| ir.cpp:2784:10:2784:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
44+
| ir.cpp:2785:10:2785:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
45+
| ir.cpp:2787:10:2787:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
46+
| ir.cpp:2788:10:2788:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
47+
| ir.cpp:2789:10:2789:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2779:6:2779:20 | void vla_sizeof_test(int, size_t, char) | void vla_sizeof_test(int, size_t, char) |
2448
switchInstructionWithoutDefaultEdge
2549
notMarkedAsConflated
2650
wronglyMarkedAsConflated

0 commit comments

Comments
 (0)