C++: Add more sizeof VLA tests

This commit is contained in:
Jeroen Ketema
2025-09-01 10:59:17 +02:00
parent dc78330529
commit 5bd08e8174
9 changed files with 666 additions and 228 deletions

View File

@@ -24589,178 +24589,413 @@ ir.cpp:
# 2779| Type = [CTypedefType,Size_t] size_t
# 2779| getParameter(2): [Parameter] len3
# 2779| Type = [PlainCharType] char
# 2780| getEntryPoint(): [BlockStmt] { ... }
# 2781| getStmt(0): [DeclStmt] declaration
# 2781| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1
# 2781| Type = [ArrayType] char[]
# 2781| getStmt(1): [VlaDimensionStmt] VLA dimension size
# 2781| getDimensionExpr(): [VariableAccess] len1
# 2781| Type = [IntType] int
# 2781| ValueCategory = prvalue(load)
# 2781| getStmt(2): [VlaDeclStmt] VLA declaration
# 2782| getStmt(3): [DeclStmt] declaration
# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
# 2779| getEntryPoint(): [BlockStmt] { ... }
# 2780| getStmt(0): [DeclStmt] declaration
# 2780| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1
# 2780| Type = [ArrayType] char[]
# 2780| getStmt(1): [VlaDimensionStmt] VLA dimension size
# 2780| getDimensionExpr(): [VariableAccess] len1
# 2780| Type = [IntType] int
# 2780| ValueCategory = prvalue(load)
# 2780| getStmt(2): [VlaDeclStmt] VLA declaration
# 2781| getStmt(3): [DeclStmt] declaration
# 2781| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
# 2781| Type = [CTypedefType,Size_t] size_t
# 2781| getVariable().getInitializer(): [Initializer] initializer for x
# 2781| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2781| Type = [LongType] unsigned long
# 2781| ValueCategory = prvalue
# 2781| getExprOperand(): [VariableAccess] tmp1
# 2781| Type = [ArrayType] char[]
# 2781| ValueCategory = lvalue
# 2781| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2781| Type = [ArrayType] char[]
# 2781| ValueCategory = lvalue
# 2782| getStmt(4): [DeclStmt] declaration
# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2
# 2782| Type = [ArrayType] int[][]
# 2782| getStmt(5): [VlaDimensionStmt] VLA dimension size
# 2782| getDimensionExpr(): [VariableAccess] len1
# 2782| Type = [IntType] int
# 2782| ValueCategory = prvalue(load)
# 2782| getStmt(6): [VlaDimensionStmt] VLA dimension size
# 2782| getDimensionExpr(): [VariableAccess] len2
# 2782| Type = [CTypedefType,Size_t] size_t
# 2782| getVariable().getInitializer(): [Initializer] initializer for x
# 2782| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2782| Type = [LongType] unsigned long
# 2782| ValueCategory = prvalue
# 2782| getExprOperand(): [VariableAccess] tmp1
# 2782| Type = [ArrayType] char[]
# 2782| ValueCategory = lvalue
# 2782| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2782| Type = [ArrayType] char[]
# 2782| ValueCategory = lvalue
# 2783| getStmt(4): [DeclStmt] declaration
# 2783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2
# 2783| Type = [ArrayType] int[][]
# 2783| getStmt(5): [VlaDimensionStmt] VLA dimension size
# 2783| getDimensionExpr(): [VariableAccess] len1
# 2783| Type = [IntType] int
# 2783| ValueCategory = prvalue(load)
# 2783| getStmt(6): [VlaDimensionStmt] VLA dimension size
# 2783| getDimensionExpr(): [VariableAccess] len2
# 2782| ValueCategory = prvalue(load)
# 2782| getStmt(7): [VlaDeclStmt] VLA declaration
# 2783| getStmt(8): [DeclStmt] declaration
# 2783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
# 2783| Type = [CTypedefType,Size_t] size_t
# 2783| ValueCategory = prvalue(load)
# 2783| getStmt(7): [VlaDeclStmt] VLA declaration
# 2784| getStmt(8): [DeclStmt] declaration
# 2784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
# 2783| getVariable().getInitializer(): [Initializer] initializer for y
# 2783| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2783| Type = [LongType] unsigned long
# 2783| ValueCategory = prvalue
# 2783| getExprOperand(): [VariableAccess] tmp2
# 2783| Type = [ArrayType] int[][]
# 2783| ValueCategory = lvalue
# 2783| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2783| Type = [ArrayType] int[][]
# 2783| ValueCategory = lvalue
# 2784| getStmt(9): [DeclStmt] declaration
# 2784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z
# 2784| Type = [CTypedefType,Size_t] size_t
# 2784| getVariable().getInitializer(): [Initializer] initializer for y
# 2784| getVariable().getInitializer(): [Initializer] initializer for z
# 2784| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2784| Type = [LongType] unsigned long
# 2784| ValueCategory = prvalue
# 2784| getExprOperand(): [VariableAccess] tmp2
# 2784| Type = [ArrayType] int[][]
# 2784| getExprOperand(): [PointerDereferenceExpr] * ...
# 2784| Type = [ArrayType] int[]
# 2784| ValueCategory = lvalue
# 2784| getOperand(): [VariableAccess] tmp2
# 2784| Type = [ArrayType] int[][]
# 2784| ValueCategory = lvalue
# 2784| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2784| Type = [PointerType] int(*)[]
# 2784| ValueCategory = prvalue
# 2784| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2784| Type = [ArrayType] int[][]
# 2784| Type = [ArrayType] int[]
# 2784| ValueCategory = lvalue
# 2785| getStmt(9): [DeclStmt] declaration
# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z
# 2785| getStmt(10): [DeclStmt] declaration
# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp3
# 2785| Type = [ArrayType] int[][][]
# 2785| getStmt(11): [VlaDimensionStmt] VLA dimension size
# 2785| getDimensionExpr(): [VariableAccess] len1
# 2785| Type = [IntType] int
# 2785| ValueCategory = prvalue(load)
# 2785| getStmt(12): [VlaDimensionStmt] VLA dimension size
# 2785| getDimensionExpr(): [VariableAccess] len2
# 2785| Type = [CTypedefType,Size_t] size_t
# 2785| getVariable().getInitializer(): [Initializer] initializer for z
# 2785| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2785| Type = [LongType] unsigned long
# 2785| ValueCategory = prvalue
# 2785| getExprOperand(): [PointerDereferenceExpr] * ...
# 2785| Type = [ArrayType] int[]
# 2785| ValueCategory = lvalue
# 2785| getOperand(): [VariableAccess] tmp2
# 2785| Type = [ArrayType] int[][]
# 2785| ValueCategory = lvalue
# 2785| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2785| Type = [PointerType] int(*)[]
# 2785| ValueCategory = prvalue
# 2785| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2785| Type = [ArrayType] int[]
# 2785| ValueCategory = lvalue
# 2786| getStmt(10): [DeclStmt] declaration
# 2786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp3
# 2786| Type = [ArrayType] int[][][]
# 2786| getStmt(11): [VlaDimensionStmt] VLA dimension size
# 2786| getDimensionExpr(): [VariableAccess] len1
# 2786| Type = [IntType] int
# 2786| ValueCategory = prvalue(load)
# 2786| getStmt(12): [VlaDimensionStmt] VLA dimension size
# 2786| getDimensionExpr(): [VariableAccess] len2
# 2785| ValueCategory = prvalue(load)
# 2785| getStmt(13): [VlaDimensionStmt] VLA dimension size
# 2785| getDimensionExpr(): [VariableAccess] len3
# 2785| Type = [PlainCharType] char
# 2785| ValueCategory = prvalue(load)
# 2785| getStmt(14): [VlaDeclStmt] VLA declaration
# 2786| getStmt(15): [DeclStmt] declaration
# 2786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w
# 2786| Type = [CTypedefType,Size_t] size_t
# 2786| ValueCategory = prvalue(load)
# 2786| getStmt(13): [VlaDimensionStmt] VLA dimension size
# 2786| getDimensionExpr(): [VariableAccess] len3
# 2786| Type = [PlainCharType] char
# 2786| ValueCategory = prvalue(load)
# 2786| getStmt(14): [VlaDeclStmt] VLA declaration
# 2787| getStmt(15): [DeclStmt] declaration
# 2787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w
# 2786| getVariable().getInitializer(): [Initializer] initializer for w
# 2786| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2786| Type = [LongType] unsigned long
# 2786| ValueCategory = prvalue
# 2786| getExprOperand(): [VariableAccess] tmp3
# 2786| Type = [ArrayType] int[][][]
# 2786| ValueCategory = lvalue
# 2786| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2786| Type = [ArrayType] int[][][]
# 2786| ValueCategory = lvalue
# 2787| getStmt(16): [DeclStmt] declaration
# 2787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
# 2787| Type = [CTypedefType,Size_t] size_t
# 2787| getVariable().getInitializer(): [Initializer] initializer for w
# 2787| getVariable().getInitializer(): [Initializer] initializer for v
# 2787| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2787| Type = [LongType] unsigned long
# 2787| ValueCategory = prvalue
# 2787| getExprOperand(): [VariableAccess] tmp3
# 2787| Type = [ArrayType] int[][][]
# 2787| getExprOperand(): [PointerDereferenceExpr] * ...
# 2787| Type = [ArrayType] int[][]
# 2787| ValueCategory = lvalue
# 2787| getOperand(): [VariableAccess] tmp3
# 2787| Type = [ArrayType] int[][][]
# 2787| ValueCategory = lvalue
# 2787| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2787| Type = [PointerType] int(*)[][]
# 2787| ValueCategory = prvalue
# 2787| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2787| Type = [ArrayType] int[][][]
# 2787| Type = [ArrayType] int[][]
# 2787| ValueCategory = lvalue
# 2788| getStmt(16): [DeclStmt] declaration
# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
# 2788| getStmt(17): [DeclStmt] declaration
# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u
# 2788| Type = [CTypedefType,Size_t] size_t
# 2788| getVariable().getInitializer(): [Initializer] initializer for v
# 2788| getVariable().getInitializer(): [Initializer] initializer for u
# 2788| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2788| Type = [LongType] unsigned long
# 2788| ValueCategory = prvalue
# 2788| getExprOperand(): [PointerDereferenceExpr] * ...
# 2788| Type = [ArrayType] int[][]
# 2788| Type = [ArrayType] int[]
# 2788| ValueCategory = lvalue
# 2788| getOperand(): [VariableAccess] tmp3
# 2788| Type = [ArrayType] int[][][]
# 2788| getOperand(): [PointerDereferenceExpr] * ...
# 2788| Type = [ArrayType] int[][]
# 2788| ValueCategory = lvalue
# 2788| getOperand(): [VariableAccess] tmp3
# 2788| Type = [ArrayType] int[][][]
# 2788| ValueCategory = lvalue
# 2788| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2788| Type = [PointerType] int(*)[][]
# 2788| ValueCategory = prvalue
# 2788| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2788| Type = [PointerType] int(*)[][]
# 2788| Type = [PointerType] int(*)[]
# 2788| ValueCategory = prvalue
# 2788| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2788| Type = [ArrayType] int[][]
# 2788| Type = [ArrayType] int[]
# 2788| ValueCategory = lvalue
# 2789| getStmt(17): [DeclStmt] declaration
# 2789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u
# 2789| getStmt(18): [DeclStmt] declaration
# 2789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t
# 2789| Type = [CTypedefType,Size_t] size_t
# 2789| getVariable().getInitializer(): [Initializer] initializer for u
# 2789| getVariable().getInitializer(): [Initializer] initializer for t
# 2789| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2789| Type = [LongType] unsigned long
# 2789| Value = [SizeofExprOperator] 4
# 2789| ValueCategory = prvalue
# 2789| getExprOperand(): [PointerDereferenceExpr] * ...
# 2789| Type = [ArrayType] int[]
# 2789| Type = [IntType] int
# 2789| ValueCategory = lvalue
# 2789| getOperand(): [PointerDereferenceExpr] * ...
# 2789| Type = [ArrayType] int[][]
# 2789| Type = [ArrayType] int[]
# 2789| ValueCategory = lvalue
# 2789| getOperand(): [VariableAccess] tmp3
# 2789| Type = [ArrayType] int[][][]
# 2789| getOperand(): [PointerDereferenceExpr] * ...
# 2789| Type = [ArrayType] int[][]
# 2789| ValueCategory = lvalue
# 2789| getOperand(): [VariableAccess] tmp3
# 2789| Type = [ArrayType] int[][][]
# 2789| ValueCategory = lvalue
# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2789| Type = [PointerType] int(*)[][]
# 2789| ValueCategory = prvalue
# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2789| Type = [PointerType] int(*)[][]
# 2789| Type = [PointerType] int(*)[]
# 2789| ValueCategory = prvalue
# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2789| Type = [PointerType] int(*)[]
# 2789| Type = [IntPointerType] int *
# 2789| ValueCategory = prvalue
# 2789| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2789| Type = [ArrayType] int[]
# 2789| Type = [IntType] int
# 2789| ValueCategory = lvalue
# 2790| getStmt(18): [DeclStmt] declaration
# 2790| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t
# 2790| Type = [CTypedefType,Size_t] size_t
# 2790| getVariable().getInitializer(): [Initializer] initializer for t
# 2790| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2790| Type = [LongType] unsigned long
# 2790| Value = [SizeofExprOperator] 4
# 2790| ValueCategory = prvalue
# 2790| getExprOperand(): [PointerDereferenceExpr] * ...
# 2790| Type = [IntType] int
# 2790| ValueCategory = lvalue
# 2790| getOperand(): [PointerDereferenceExpr] * ...
# 2790| Type = [ArrayType] int[]
# 2790| ValueCategory = lvalue
# 2790| getOperand(): [PointerDereferenceExpr] * ...
# 2790| Type = [ArrayType] int[][]
# 2790| ValueCategory = lvalue
# 2790| getOperand(): [VariableAccess] tmp3
# 2790| Type = [ArrayType] int[][][]
# 2790| ValueCategory = lvalue
# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2790| Type = [PointerType] int(*)[][]
# 2790| ValueCategory = prvalue
# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2790| Type = [PointerType] int(*)[]
# 2790| ValueCategory = prvalue
# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2790| Type = [IntPointerType] int *
# 2790| ValueCategory = prvalue
# 2790| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2790| Type = [IntType] int
# 2790| ValueCategory = lvalue
# 2791| getStmt(19): [ReturnStmt] return ...
# 2790| getStmt(19): [ReturnStmt] return ...
# 2792| [TopLevelFunction] void vla_sizeof_test2(int, size_t, char)
# 2792| <params>:
# 2792| getParameter(0): [Parameter] len1
# 2792| Type = [IntType] int
# 2792| getParameter(1): [Parameter] len2
# 2792| Type = [CTypedefType,Size_t] size_t
# 2792| getParameter(2): [Parameter] len3
# 2792| Type = [PlainCharType] char
# 2792| getEntryPoint(): [BlockStmt] { ... }
# 2793| getStmt(0): [DeclStmt] declaration
# 2793| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1
# 2793| Type = [ArrayType] int[][]
# 2793| getStmt(1): [VlaDimensionStmt] VLA dimension size
# 2793| getDimensionExpr(): [VariableAccess] len1
# 2793| Type = [IntType] int
# 2793| ValueCategory = prvalue(load)
# 2793| getStmt(2): [VlaDimensionStmt] VLA dimension size
# 2793| getDimensionExpr(): [VariableAccess] len2
# 2793| Type = [CTypedefType,Size_t] size_t
# 2793| ValueCategory = prvalue(load)
# 2793| getStmt(3): [VlaDeclStmt] VLA declaration
# 2794| getStmt(4): [DeclStmt] declaration
# 2794| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z
# 2794| Type = [CTypedefType,Size_t] size_t
# 2794| getVariable().getInitializer(): [Initializer] initializer for z
# 2794| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2794| Type = [LongType] unsigned long
# 2794| ValueCategory = prvalue
# 2794| getExprOperand(): [ArrayExpr] access to array
# 2794| Type = [ArrayType] int[]
# 2794| ValueCategory = lvalue
# 2794| getArrayBase(): [VariableAccess] tmp1
# 2794| Type = [ArrayType] int[][]
# 2794| ValueCategory = lvalue
# 2794| getArrayOffset(): [Literal] 1
# 2794| Type = [IntType] int
# 2794| Value = [Literal] 1
# 2794| ValueCategory = prvalue
# 2794| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2794| Type = [PointerType] int(*)[]
# 2794| ValueCategory = prvalue
# 2794| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2794| Type = [ArrayType] int[]
# 2794| ValueCategory = lvalue
# 2795| getStmt(5): [DeclStmt] declaration
# 2795| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2
# 2795| Type = [ArrayType] int[][][]
# 2795| getStmt(6): [VlaDimensionStmt] VLA dimension size
# 2795| getDimensionExpr(): [VariableAccess] len1
# 2795| Type = [IntType] int
# 2795| ValueCategory = prvalue(load)
# 2795| getStmt(7): [VlaDimensionStmt] VLA dimension size
# 2795| getDimensionExpr(): [VariableAccess] len2
# 2795| Type = [CTypedefType,Size_t] size_t
# 2795| ValueCategory = prvalue(load)
# 2795| getStmt(8): [VlaDimensionStmt] VLA dimension size
# 2795| getDimensionExpr(): [VariableAccess] len3
# 2795| Type = [PlainCharType] char
# 2795| ValueCategory = prvalue(load)
# 2795| getStmt(9): [VlaDeclStmt] VLA declaration
# 2796| getStmt(10): [DeclStmt] declaration
# 2796| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
# 2796| Type = [CTypedefType,Size_t] size_t
# 2796| getVariable().getInitializer(): [Initializer] initializer for v
# 2796| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2796| Type = [LongType] unsigned long
# 2796| ValueCategory = prvalue
# 2796| getExprOperand(): [ArrayExpr] access to array
# 2796| Type = [ArrayType] int[][]
# 2796| ValueCategory = lvalue
# 2796| getArrayBase(): [VariableAccess] tmp2
# 2796| Type = [ArrayType] int[][][]
# 2796| ValueCategory = lvalue
# 2796| getArrayOffset(): [Literal] 1
# 2796| Type = [IntType] int
# 2796| Value = [Literal] 1
# 2796| ValueCategory = prvalue
# 2796| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2796| Type = [PointerType] int(*)[][]
# 2796| ValueCategory = prvalue
# 2796| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2796| Type = [ArrayType] int[][]
# 2796| ValueCategory = lvalue
# 2797| getStmt(11): [DeclStmt] declaration
# 2797| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u
# 2797| Type = [CTypedefType,Size_t] size_t
# 2797| getVariable().getInitializer(): [Initializer] initializer for u
# 2797| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2797| Type = [LongType] unsigned long
# 2797| ValueCategory = prvalue
# 2797| getExprOperand(): [ArrayExpr] access to array
# 2797| Type = [ArrayType] int[]
# 2797| ValueCategory = lvalue
# 2797| getArrayBase(): [ArrayExpr] access to array
# 2797| Type = [ArrayType] int[][]
# 2797| ValueCategory = lvalue
# 2797| getArrayBase(): [VariableAccess] tmp2
# 2797| Type = [ArrayType] int[][][]
# 2797| ValueCategory = lvalue
# 2797| getArrayOffset(): [Literal] 1
# 2797| Type = [IntType] int
# 2797| Value = [Literal] 1
# 2797| ValueCategory = prvalue
# 2797| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2797| Type = [PointerType] int(*)[][]
# 2797| ValueCategory = prvalue
# 2797| getArrayOffset(): [Literal] 2
# 2797| Type = [IntType] int
# 2797| Value = [Literal] 2
# 2797| ValueCategory = prvalue
# 2797| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2797| Type = [PointerType] int(*)[]
# 2797| ValueCategory = prvalue
# 2797| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2797| Type = [ArrayType] int[]
# 2797| ValueCategory = lvalue
# 2798| getStmt(12): [DeclStmt] declaration
# 2798| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t
# 2798| Type = [CTypedefType,Size_t] size_t
# 2798| getVariable().getInitializer(): [Initializer] initializer for t
# 2798| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2798| Type = [LongType] unsigned long
# 2798| Value = [SizeofExprOperator] 4
# 2798| ValueCategory = prvalue
# 2798| getExprOperand(): [ArrayExpr] access to array
# 2798| Type = [IntType] int
# 2798| ValueCategory = lvalue
# 2798| getArrayBase(): [ArrayExpr] access to array
# 2798| Type = [ArrayType] int[]
# 2798| ValueCategory = lvalue
# 2798| getArrayBase(): [ArrayExpr] access to array
# 2798| Type = [ArrayType] int[][]
# 2798| ValueCategory = lvalue
# 2798| getArrayBase(): [VariableAccess] tmp2
# 2798| Type = [ArrayType] int[][][]
# 2798| ValueCategory = lvalue
# 2798| getArrayOffset(): [Literal] 1
# 2798| Type = [IntType] int
# 2798| Value = [Literal] 1
# 2798| ValueCategory = prvalue
# 2798| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2798| Type = [PointerType] int(*)[][]
# 2798| ValueCategory = prvalue
# 2798| getArrayOffset(): [Literal] 2
# 2798| Type = [IntType] int
# 2798| Value = [Literal] 2
# 2798| ValueCategory = prvalue
# 2798| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2798| Type = [PointerType] int(*)[]
# 2798| ValueCategory = prvalue
# 2798| getArrayOffset(): [Literal] 3
# 2798| Type = [IntType] int
# 2798| Value = [Literal] 3
# 2798| ValueCategory = prvalue
# 2798| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2798| Type = [IntPointerType] int *
# 2798| ValueCategory = prvalue
# 2798| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2798| Type = [IntType] int
# 2798| ValueCategory = lvalue
# 2799| getStmt(13): [ReturnStmt] return ...
# 2801| [TopLevelFunction] size_t vla_sizeof_test3(int, size_t, char, bool)
# 2801| <params>:
# 2801| getParameter(0): [Parameter] len1
# 2801| Type = [IntType] int
# 2801| getParameter(1): [Parameter] len2
# 2801| Type = [CTypedefType,Size_t] size_t
# 2801| getParameter(2): [Parameter] len3
# 2801| Type = [PlainCharType] char
# 2801| getParameter(3): [Parameter] b
# 2801| Type = [BoolType] bool
# 2801| getEntryPoint(): [BlockStmt] { ... }
# 2802| getStmt(0): [DeclStmt] declaration
# 2802| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr
# 2802| Type = [CTypedefType,LocalTypedefType] arr
# 2802| getStmt(1): [VlaDimensionStmt] VLA dimension size
# 2802| getDimensionExpr(): [VariableAccess] len1
# 2802| Type = [IntType] int
# 2802| ValueCategory = prvalue(load)
# 2802| getStmt(2): [VlaDimensionStmt] VLA dimension size
# 2802| getDimensionExpr(): [VariableAccess] len2
# 2802| Type = [CTypedefType,Size_t] size_t
# 2802| ValueCategory = prvalue(load)
# 2802| getStmt(3): [VlaDeclStmt] VLA declaration
# 2803| getStmt(4): [DeclStmt] declaration
# 2803| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr2
# 2803| Type = [CTypedefType,LocalTypedefType] arr2
# 2803| getStmt(5): [VlaDeclStmt] VLA declaration
# 2804| getStmt(6): [DeclStmt] declaration
# 2804| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr3
# 2804| Type = [CTypedefType,LocalTypedefType] arr3
# 2804| getStmt(7): [VlaDimensionStmt] VLA dimension size
# 2804| getDimensionExpr(): [VariableAccess] len3
# 2804| Type = [PlainCharType] char
# 2804| ValueCategory = prvalue(load)
# 2804| getStmt(8): [VlaDeclStmt] VLA declaration
# 2806| getStmt(9): [IfStmt] if (...) ...
# 2806| getCondition(): [VariableAccess] b
# 2806| Type = [BoolType] bool
# 2806| ValueCategory = prvalue(load)
# 2806| getThen(): [BlockStmt] { ... }
# 2807| getStmt(0): [DeclStmt] declaration
# 2807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp
# 2807| Type = [CTypedefType,LocalTypedefType] arr3
# 2807| getStmt(1): [VlaDeclStmt] VLA declaration
# 2808| getStmt(2): [ReturnStmt] return ...
# 2808| getExpr(): [SizeofExprOperator] sizeof(<expr>)
# 2808| Type = [LongType] unsigned long
# 2808| ValueCategory = prvalue
# 2808| getExprOperand(): [ArrayExpr] access to array
# 2808| Type = [CTypedefType,LocalTypedefType] arr2
# 2808| ValueCategory = lvalue
# 2808| getArrayBase(): [VariableAccess] tmp
# 2808| Type = [CTypedefType,LocalTypedefType] arr3
# 2808| ValueCategory = lvalue
# 2808| getArrayOffset(): [Literal] 1
# 2808| Type = [IntType] int
# 2808| Value = [Literal] 1
# 2808| ValueCategory = prvalue
# 2808| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
# 2808| Type = [PointerType] arr2 *
# 2808| ValueCategory = prvalue
# 2808| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...)
# 2808| Type = [CTypedefType,LocalTypedefType] arr2
# 2808| ValueCategory = lvalue
# 2811| getStmt(10): [ReturnStmt] return ...
# 2811| getExpr(): [Literal] 0
# 2811| Type = [IntType] int
# 2811| Value = [Literal] 0
# 2811| ValueCategory = prvalue
# 2811| getExpr().getFullyConverted(): [CStyleCast] (size_t)...
# 2811| Conversion = [IntegralConversion] integral conversion
# 2811| Type = [CTypedefType,Size_t] size_t
# 2811| Value = [CStyleCast] 0
# 2811| ValueCategory = prvalue
ir23.cpp:
# 1| [TopLevelFunction] bool consteval_1()
# 1| <params>:

View File

@@ -20442,63 +20442,128 @@ ir.cpp:
# 2779| m2779_8(unsigned long) = InitializeParameter[len2] : &:r2779_7
# 2779| r2779_9(glval<char>) = VariableAddress[len3] :
# 2779| m2779_10(char) = InitializeParameter[len3] : &:r2779_9
# 2781| r2781_1(glval<char[]>) = VariableAddress[tmp1] :
# 2781| m2781_2(char[]) = Uninitialized[tmp1] : &:r2781_1
# 2781| r2781_3(glval<int>) = VariableAddress[len1] :
# 2781| r2781_4(int) = Load[len1] : &:r2781_3, m2779_6
# 2781| v2781_5(void) = NoOp :
# 2782| r2782_1(glval<unsigned long>) = VariableAddress[x] :
# 2782| r2782_2(unsigned long) = Constant[1] :
# 2782| r2782_3(unsigned long) = Mul : r2782_2, r2781_4
# 2782| m2782_4(unsigned long) = Store[x] : &:r2782_1, r2782_3
# 2783| r2783_1(glval<int[][]>) = VariableAddress[tmp2] :
# 2783| m2783_2(int[][]) = Uninitialized[tmp2] : &:r2783_1
# 2783| r2783_3(glval<int>) = VariableAddress[len1] :
# 2783| r2783_4(int) = Load[len1] : &:r2783_3, m2779_6
# 2783| r2783_5(glval<unsigned long>) = VariableAddress[len2] :
# 2783| r2783_6(unsigned long) = Load[len2] : &:r2783_5, m2779_8
# 2783| v2783_7(void) = NoOp :
# 2784| r2784_1(glval<unsigned long>) = VariableAddress[y] :
# 2780| r2780_1(glval<char[]>) = VariableAddress[tmp1] :
# 2780| m2780_2(char[]) = Uninitialized[tmp1] : &:r2780_1
# 2780| r2780_3(glval<int>) = VariableAddress[len1] :
# 2780| r2780_4(int) = Load[len1] : &:r2780_3, m2779_6
# 2780| v2780_5(void) = NoOp :
# 2781| r2781_1(glval<unsigned long>) = VariableAddress[x] :
# 2781| r2781_2(unsigned long) = Constant[1] :
# 2781| r2781_3(unsigned long) = Mul : r2781_2, r2780_4
# 2781| m2781_4(unsigned long) = Store[x] : &:r2781_1, r2781_3
# 2782| r2782_1(glval<int[][]>) = VariableAddress[tmp2] :
# 2782| m2782_2(int[][]) = Uninitialized[tmp2] : &:r2782_1
# 2782| r2782_3(glval<int>) = VariableAddress[len1] :
# 2782| r2782_4(int) = Load[len1] : &:r2782_3, m2779_6
# 2782| r2782_5(glval<unsigned long>) = VariableAddress[len2] :
# 2782| r2782_6(unsigned long) = Load[len2] : &:r2782_5, m2779_8
# 2782| v2782_7(void) = NoOp :
# 2783| r2783_1(glval<unsigned long>) = VariableAddress[y] :
# 2783| r2783_2(unsigned long) = Constant[4] :
# 2783| r2783_3(unsigned long) = Mul : r2783_2, r2782_4
# 2783| r2783_4(unsigned long) = Mul : r2783_3, r2782_6
# 2783| m2783_5(unsigned long) = Store[y] : &:r2783_1, r2783_4
# 2784| r2784_1(glval<unsigned long>) = VariableAddress[z] :
# 2784| r2784_2(unsigned long) = Constant[4] :
# 2784| r2784_3(unsigned long) = Mul : r2784_2, r2783_4
# 2784| r2784_4(unsigned long) = Mul : r2784_3, r2783_6
# 2784| m2784_5(unsigned long) = Store[y] : &:r2784_1, r2784_4
# 2785| r2785_1(glval<unsigned long>) = VariableAddress[z] :
# 2785| r2785_2(unsigned long) = Constant[4] :
# 2785| r2785_3(unsigned long) = Mul : r2785_2, r2783_6
# 2785| m2785_4(unsigned long) = Store[z] : &:r2785_1, r2785_3
# 2786| r2786_1(glval<int[][][]>) = VariableAddress[tmp3] :
# 2786| m2786_2(int[][][]) = Uninitialized[tmp3] : &:r2786_1
# 2786| r2786_3(glval<int>) = VariableAddress[len1] :
# 2786| r2786_4(int) = Load[len1] : &:r2786_3, m2779_6
# 2786| r2786_5(glval<unsigned long>) = VariableAddress[len2] :
# 2786| r2786_6(unsigned long) = Load[len2] : &:r2786_5, m2779_8
# 2786| r2786_7(glval<char>) = VariableAddress[len3] :
# 2786| r2786_8(char) = Load[len3] : &:r2786_7, m2779_10
# 2786| v2786_9(void) = NoOp :
# 2787| r2787_1(glval<unsigned long>) = VariableAddress[w] :
# 2784| r2784_3(unsigned long) = Mul : r2784_2, r2782_6
# 2784| m2784_4(unsigned long) = Store[z] : &:r2784_1, r2784_3
# 2785| r2785_1(glval<int[][][]>) = VariableAddress[tmp3] :
# 2785| m2785_2(int[][][]) = Uninitialized[tmp3] : &:r2785_1
# 2785| r2785_3(glval<int>) = VariableAddress[len1] :
# 2785| r2785_4(int) = Load[len1] : &:r2785_3, m2779_6
# 2785| r2785_5(glval<unsigned long>) = VariableAddress[len2] :
# 2785| r2785_6(unsigned long) = Load[len2] : &:r2785_5, m2779_8
# 2785| r2785_7(glval<char>) = VariableAddress[len3] :
# 2785| r2785_8(char) = Load[len3] : &:r2785_7, m2779_10
# 2785| v2785_9(void) = NoOp :
# 2786| r2786_1(glval<unsigned long>) = VariableAddress[w] :
# 2786| r2786_2(unsigned long) = Constant[4] :
# 2786| r2786_3(unsigned long) = Mul : r2786_2, r2785_4
# 2786| r2786_4(unsigned long) = Mul : r2786_3, r2785_6
# 2786| r2786_5(unsigned long) = Mul : r2786_4, r2785_8
# 2786| m2786_6(unsigned long) = Store[w] : &:r2786_1, r2786_5
# 2787| r2787_1(glval<unsigned long>) = VariableAddress[v] :
# 2787| r2787_2(unsigned long) = Constant[4] :
# 2787| r2787_3(unsigned long) = Mul : r2787_2, r2786_4
# 2787| r2787_4(unsigned long) = Mul : r2787_3, r2786_6
# 2787| r2787_5(unsigned long) = Mul : r2787_4, r2786_8
# 2787| m2787_6(unsigned long) = Store[w] : &:r2787_1, r2787_5
# 2788| r2788_1(glval<unsigned long>) = VariableAddress[v] :
# 2787| r2787_3(unsigned long) = Mul : r2787_2, r2785_6
# 2787| r2787_4(unsigned long) = Mul : r2787_3, r2785_8
# 2787| m2787_5(unsigned long) = Store[v] : &:r2787_1, r2787_4
# 2788| r2788_1(glval<unsigned long>) = VariableAddress[u] :
# 2788| r2788_2(unsigned long) = Constant[4] :
# 2788| r2788_3(unsigned long) = Mul : r2788_2, r2786_6
# 2788| r2788_4(unsigned long) = Mul : r2788_3, r2786_8
# 2788| m2788_5(unsigned long) = Store[v] : &:r2788_1, r2788_4
# 2789| r2789_1(glval<unsigned long>) = VariableAddress[u] :
# 2788| r2788_3(unsigned long) = Mul : r2788_2, r2785_8
# 2788| m2788_4(unsigned long) = Store[u] : &:r2788_1, r2788_3
# 2789| r2789_1(glval<unsigned long>) = VariableAddress[t] :
# 2789| r2789_2(unsigned long) = Constant[4] :
# 2789| r2789_3(unsigned long) = Mul : r2789_2, r2786_8
# 2789| m2789_4(unsigned long) = Store[u] : &:r2789_1, r2789_3
# 2790| r2790_1(glval<unsigned long>) = VariableAddress[t] :
# 2790| r2790_2(unsigned long) = Constant[4] :
# 2790| m2790_3(unsigned long) = Store[t] : &:r2790_1, r2790_2
# 2791| v2791_1(void) = NoOp :
# 2789| m2789_3(unsigned long) = Store[t] : &:r2789_1, r2789_2
# 2790| v2790_1(void) = NoOp :
# 2779| v2779_11(void) = ReturnVoid :
# 2779| v2779_12(void) = AliasedUse : m2779_3
# 2779| v2779_13(void) = ExitFunction :
# 2792| void vla_sizeof_test2(int, size_t, char)
# 2792| Block 0
# 2792| v2792_1(void) = EnterFunction :
# 2792| m2792_2(unknown) = AliasedDefinition :
# 2792| m2792_3(unknown) = InitializeNonLocal :
# 2792| m2792_4(unknown) = Chi : total:m2792_2, partial:m2792_3
# 2792| r2792_5(glval<int>) = VariableAddress[len1] :
# 2792| m2792_6(int) = InitializeParameter[len1] : &:r2792_5
# 2792| r2792_7(glval<unsigned long>) = VariableAddress[len2] :
# 2792| m2792_8(unsigned long) = InitializeParameter[len2] : &:r2792_7
# 2792| r2792_9(glval<char>) = VariableAddress[len3] :
# 2792| m2792_10(char) = InitializeParameter[len3] : &:r2792_9
# 2793| r2793_1(glval<int[][]>) = VariableAddress[tmp1] :
# 2793| m2793_2(int[][]) = Uninitialized[tmp1] : &:r2793_1
# 2793| r2793_3(glval<int>) = VariableAddress[len1] :
# 2793| r2793_4(int) = Load[len1] : &:r2793_3, m2792_6
# 2793| r2793_5(glval<unsigned long>) = VariableAddress[len2] :
# 2793| r2793_6(unsigned long) = Load[len2] : &:r2793_5, m2792_8
# 2793| v2793_7(void) = NoOp :
# 2794| r2794_1(glval<unsigned long>) = VariableAddress[z] :
# 2801| size_t vla_sizeof_test3(int, size_t, char, bool)
# 2801| Block 0
# 2801| v2801_1(void) = EnterFunction :
# 2801| m2801_2(unknown) = AliasedDefinition :
# 2801| m2801_3(unknown) = InitializeNonLocal :
# 2801| m2801_4(unknown) = Chi : total:m2801_2, partial:m2801_3
# 2801| r2801_5(glval<int>) = VariableAddress[len1] :
# 2801| m2801_6(int) = InitializeParameter[len1] : &:r2801_5
# 2801| r2801_7(glval<unsigned long>) = VariableAddress[len2] :
# 2801| m2801_8(unsigned long) = InitializeParameter[len2] : &:r2801_7
# 2801| r2801_9(glval<char>) = VariableAddress[len3] :
# 2801| m2801_10(char) = InitializeParameter[len3] : &:r2801_9
# 2801| r2801_11(glval<bool>) = VariableAddress[b] :
# 2801| m2801_12(bool) = InitializeParameter[b] : &:r2801_11
# 2802| r2802_1(glval<int>) = VariableAddress[len1] :
# 2802| r2802_2(int) = Load[len1] : &:r2802_1, m2801_6
# 2802| r2802_3(glval<unsigned long>) = VariableAddress[len2] :
# 2802| r2802_4(unsigned long) = Load[len2] : &:r2802_3, m2801_8
# 2802| v2802_5(void) = NoOp :
# 2803| v2803_1(void) = NoOp :
# 2804| r2804_1(glval<char>) = VariableAddress[len3] :
# 2804| r2804_2(char) = Load[len3] : &:r2804_1, m2801_10
# 2804| v2804_3(void) = NoOp :
# 2806| r2806_1(glval<bool>) = VariableAddress[b] :
# 2806| r2806_2(bool) = Load[b] : &:r2806_1, m2801_12
# 2806| v2806_3(void) = ConditionalBranch : r2806_2
#-----| False -> Block 2
#-----| True -> Block 1
# 2807| Block 1
# 2807| r2807_1(glval<long[][][]>) = VariableAddress[tmp] :
# 2807| m2807_2(long[][][]) = Uninitialized[tmp] : &:r2807_1
# 2807| v2807_3(void) = NoOp :
# 2808| r2808_1(glval<unsigned long>) = VariableAddress[#return] :
# 2811| Block 2
# 2811| r2811_1(glval<unsigned long>) = VariableAddress[#return] :
# 2811| r2811_2(unsigned long) = Constant[0] :
# 2811| m2811_3(unsigned long) = Store[#return] : &:r2811_1, r2811_2
# 2801| r2801_13(glval<unsigned long>) = VariableAddress[#return] :
# 2801| v2801_14(void) = ReturnValue : &:r2801_13, m2811_3
# 2801| v2801_15(void) = AliasedUse : m2801_3
# 2801| v2801_16(void) = ExitFunction :
ir23.cpp:
# 1| bool consteval_1()
# 1| Block 0

View File

@@ -6,6 +6,8 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| ir.cpp:2794:10:2794:10 | VariableAddress: definition of z | Instruction 'VariableAddress: definition of z' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:5:2808:26 | VariableAddress: return ... | Instruction 'VariableAddress: return ...' has no successors in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction

View File

@@ -6,6 +6,8 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| ir.cpp:2794:10:2794:10 | VariableAddress: definition of z | Instruction 'VariableAddress: definition of z' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:5:2808:26 | VariableAddress: return ... | Instruction 'VariableAddress: return ...' has no successors in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction

View File

@@ -2776,8 +2776,7 @@ void test_allocation_with_initializer() {
long* p2 = new long(42);
}
void vla_sizeof_test(int len1, size_t len2, char len3)
{
void vla_sizeof_test(int len1, size_t len2, char len3) {
char tmp1[len1];
size_t x = sizeof(tmp1);
int tmp2[len1][len2];
@@ -2790,4 +2789,26 @@ void vla_sizeof_test(int len1, size_t len2, char len3)
size_t t = sizeof(***tmp3);
}
void vla_sizeof_test2(int len1, size_t len2, char len3) {
int tmp1[len1][len2];
size_t z = sizeof(tmp1[1]);
int tmp2[len1][len2][len3];
size_t v = sizeof(tmp2[1]);
size_t u = sizeof(tmp2[1][2]);
size_t t = sizeof(tmp2[1][2][3]);
}
size_t vla_sizeof_test3(int len1, size_t len2, char len3, bool b) {
typedef long arr[len1][len2];
typedef arr arr2;
typedef arr2 arr3[len3];
if (b) {
arr3 tmp;
return sizeof(tmp[1]);
}
return 0;
}
// semmle-extractor-options: -std=c++20 --clang

View File

@@ -1,4 +1,8 @@
missingOperand
| ir.cpp:2794:14:2794:28 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2796:14:2796:28 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2797:14:2797:31 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:12:2808:25 | Store: sizeof(<expr>) | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
unexpectedOperand
duplicateOperand
missingPhiOperand
@@ -6,6 +10,10 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| ir.cpp:2794:10:2794:10 | VariableAddress: definition of z | Instruction 'VariableAddress: definition of z' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2796:10:2796:10 | VariableAddress: definition of v | Instruction 'VariableAddress: definition of v' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2797:10:2797:10 | VariableAddress: definition of u | Instruction 'VariableAddress: definition of u' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:5:2808:26 | VariableAddress: return ... | Instruction 'VariableAddress: return ...' has no successors in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction
@@ -21,6 +29,10 @@ lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
| 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() |
| ir.cpp:2794:10:2794:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2796:10:2796:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2797:10:2797:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:5:2808:26 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated

View File

@@ -18588,63 +18588,160 @@ ir.cpp:
# 2779| mu2779_7(unsigned long) = InitializeParameter[len2] : &:r2779_6
# 2779| r2779_8(glval<char>) = VariableAddress[len3] :
# 2779| mu2779_9(char) = InitializeParameter[len3] : &:r2779_8
# 2781| r2781_1(glval<char[]>) = VariableAddress[tmp1] :
# 2781| mu2781_2(char[]) = Uninitialized[tmp1] : &:r2781_1
# 2781| r2781_3(glval<int>) = VariableAddress[len1] :
# 2781| r2781_4(int) = Load[len1] : &:r2781_3, ~m?
# 2781| v2781_5(void) = NoOp :
# 2782| r2782_1(glval<unsigned long>) = VariableAddress[x] :
# 2782| r2782_2(unsigned long) = Constant[1] :
# 2782| r2782_3(unsigned long) = Mul : r2782_2, r2781_4
# 2782| mu2782_4(unsigned long) = Store[x] : &:r2782_1, r2782_3
# 2783| r2783_1(glval<int[][]>) = VariableAddress[tmp2] :
# 2783| mu2783_2(int[][]) = Uninitialized[tmp2] : &:r2783_1
# 2783| r2783_3(glval<int>) = VariableAddress[len1] :
# 2783| r2783_4(int) = Load[len1] : &:r2783_3, ~m?
# 2783| r2783_5(glval<unsigned long>) = VariableAddress[len2] :
# 2783| r2783_6(unsigned long) = Load[len2] : &:r2783_5, ~m?
# 2783| v2783_7(void) = NoOp :
# 2784| r2784_1(glval<unsigned long>) = VariableAddress[y] :
# 2780| r2780_1(glval<char[]>) = VariableAddress[tmp1] :
# 2780| mu2780_2(char[]) = Uninitialized[tmp1] : &:r2780_1
# 2780| r2780_3(glval<int>) = VariableAddress[len1] :
# 2780| r2780_4(int) = Load[len1] : &:r2780_3, ~m?
# 2780| v2780_5(void) = NoOp :
# 2781| r2781_1(glval<unsigned long>) = VariableAddress[x] :
# 2781| r2781_2(unsigned long) = Constant[1] :
# 2781| r2781_3(unsigned long) = Mul : r2781_2, r2780_4
# 2781| mu2781_4(unsigned long) = Store[x] : &:r2781_1, r2781_3
# 2782| r2782_1(glval<int[][]>) = VariableAddress[tmp2] :
# 2782| mu2782_2(int[][]) = Uninitialized[tmp2] : &:r2782_1
# 2782| r2782_3(glval<int>) = VariableAddress[len1] :
# 2782| r2782_4(int) = Load[len1] : &:r2782_3, ~m?
# 2782| r2782_5(glval<unsigned long>) = VariableAddress[len2] :
# 2782| r2782_6(unsigned long) = Load[len2] : &:r2782_5, ~m?
# 2782| v2782_7(void) = NoOp :
# 2783| r2783_1(glval<unsigned long>) = VariableAddress[y] :
# 2783| r2783_2(unsigned long) = Constant[4] :
# 2783| r2783_3(unsigned long) = Mul : r2783_2, r2782_4
# 2783| r2783_4(unsigned long) = Mul : r2783_3, r2782_6
# 2783| mu2783_5(unsigned long) = Store[y] : &:r2783_1, r2783_4
# 2784| r2784_1(glval<unsigned long>) = VariableAddress[z] :
# 2784| r2784_2(unsigned long) = Constant[4] :
# 2784| r2784_3(unsigned long) = Mul : r2784_2, r2783_4
# 2784| r2784_4(unsigned long) = Mul : r2784_3, r2783_6
# 2784| mu2784_5(unsigned long) = Store[y] : &:r2784_1, r2784_4
# 2785| r2785_1(glval<unsigned long>) = VariableAddress[z] :
# 2785| r2785_2(unsigned long) = Constant[4] :
# 2785| r2785_3(unsigned long) = Mul : r2785_2, r2783_6
# 2785| mu2785_4(unsigned long) = Store[z] : &:r2785_1, r2785_3
# 2786| r2786_1(glval<int[][][]>) = VariableAddress[tmp3] :
# 2786| mu2786_2(int[][][]) = Uninitialized[tmp3] : &:r2786_1
# 2786| r2786_3(glval<int>) = VariableAddress[len1] :
# 2786| r2786_4(int) = Load[len1] : &:r2786_3, ~m?
# 2786| r2786_5(glval<unsigned long>) = VariableAddress[len2] :
# 2786| r2786_6(unsigned long) = Load[len2] : &:r2786_5, ~m?
# 2786| r2786_7(glval<char>) = VariableAddress[len3] :
# 2786| r2786_8(char) = Load[len3] : &:r2786_7, ~m?
# 2786| v2786_9(void) = NoOp :
# 2787| r2787_1(glval<unsigned long>) = VariableAddress[w] :
# 2784| r2784_3(unsigned long) = Mul : r2784_2, r2782_6
# 2784| mu2784_4(unsigned long) = Store[z] : &:r2784_1, r2784_3
# 2785| r2785_1(glval<int[][][]>) = VariableAddress[tmp3] :
# 2785| mu2785_2(int[][][]) = Uninitialized[tmp3] : &:r2785_1
# 2785| r2785_3(glval<int>) = VariableAddress[len1] :
# 2785| r2785_4(int) = Load[len1] : &:r2785_3, ~m?
# 2785| r2785_5(glval<unsigned long>) = VariableAddress[len2] :
# 2785| r2785_6(unsigned long) = Load[len2] : &:r2785_5, ~m?
# 2785| r2785_7(glval<char>) = VariableAddress[len3] :
# 2785| r2785_8(char) = Load[len3] : &:r2785_7, ~m?
# 2785| v2785_9(void) = NoOp :
# 2786| r2786_1(glval<unsigned long>) = VariableAddress[w] :
# 2786| r2786_2(unsigned long) = Constant[4] :
# 2786| r2786_3(unsigned long) = Mul : r2786_2, r2785_4
# 2786| r2786_4(unsigned long) = Mul : r2786_3, r2785_6
# 2786| r2786_5(unsigned long) = Mul : r2786_4, r2785_8
# 2786| mu2786_6(unsigned long) = Store[w] : &:r2786_1, r2786_5
# 2787| r2787_1(glval<unsigned long>) = VariableAddress[v] :
# 2787| r2787_2(unsigned long) = Constant[4] :
# 2787| r2787_3(unsigned long) = Mul : r2787_2, r2786_4
# 2787| r2787_4(unsigned long) = Mul : r2787_3, r2786_6
# 2787| r2787_5(unsigned long) = Mul : r2787_4, r2786_8
# 2787| mu2787_6(unsigned long) = Store[w] : &:r2787_1, r2787_5
# 2788| r2788_1(glval<unsigned long>) = VariableAddress[v] :
# 2787| r2787_3(unsigned long) = Mul : r2787_2, r2785_6
# 2787| r2787_4(unsigned long) = Mul : r2787_3, r2785_8
# 2787| mu2787_5(unsigned long) = Store[v] : &:r2787_1, r2787_4
# 2788| r2788_1(glval<unsigned long>) = VariableAddress[u] :
# 2788| r2788_2(unsigned long) = Constant[4] :
# 2788| r2788_3(unsigned long) = Mul : r2788_2, r2786_6
# 2788| r2788_4(unsigned long) = Mul : r2788_3, r2786_8
# 2788| mu2788_5(unsigned long) = Store[v] : &:r2788_1, r2788_4
# 2789| r2789_1(glval<unsigned long>) = VariableAddress[u] :
# 2788| r2788_3(unsigned long) = Mul : r2788_2, r2785_8
# 2788| mu2788_4(unsigned long) = Store[u] : &:r2788_1, r2788_3
# 2789| r2789_1(glval<unsigned long>) = VariableAddress[t] :
# 2789| r2789_2(unsigned long) = Constant[4] :
# 2789| r2789_3(unsigned long) = Mul : r2789_2, r2786_8
# 2789| mu2789_4(unsigned long) = Store[u] : &:r2789_1, r2789_3
# 2790| r2790_1(glval<unsigned long>) = VariableAddress[t] :
# 2790| r2790_2(unsigned long) = Constant[4] :
# 2790| mu2790_3(unsigned long) = Store[t] : &:r2790_1, r2790_2
# 2791| v2791_1(void) = NoOp :
# 2789| mu2789_3(unsigned long) = Store[t] : &:r2789_1, r2789_2
# 2790| v2790_1(void) = NoOp :
# 2779| v2779_10(void) = ReturnVoid :
# 2779| v2779_11(void) = AliasedUse : ~m?
# 2779| v2779_12(void) = ExitFunction :
# 2792| void vla_sizeof_test2(int, size_t, char)
# 2792| Block 0
# 2792| v2792_1(void) = EnterFunction :
# 2792| mu2792_2(unknown) = AliasedDefinition :
# 2792| mu2792_3(unknown) = InitializeNonLocal :
# 2792| r2792_4(glval<int>) = VariableAddress[len1] :
# 2792| mu2792_5(int) = InitializeParameter[len1] : &:r2792_4
# 2792| r2792_6(glval<unsigned long>) = VariableAddress[len2] :
# 2792| mu2792_7(unsigned long) = InitializeParameter[len2] : &:r2792_6
# 2792| r2792_8(glval<char>) = VariableAddress[len3] :
# 2792| mu2792_9(char) = InitializeParameter[len3] : &:r2792_8
# 2793| r2793_1(glval<int[][]>) = VariableAddress[tmp1] :
# 2793| mu2793_2(int[][]) = Uninitialized[tmp1] : &:r2793_1
# 2793| r2793_3(glval<int>) = VariableAddress[len1] :
# 2793| r2793_4(int) = Load[len1] : &:r2793_3, ~m?
# 2793| r2793_5(glval<unsigned long>) = VariableAddress[len2] :
# 2793| r2793_6(unsigned long) = Load[len2] : &:r2793_5, ~m?
# 2793| v2793_7(void) = NoOp :
# 2794| r2794_1(glval<unsigned long>) = VariableAddress[z] :
# 2794| Block 1
# 2794| mu2794_2(unsigned long) = Store[z] : &:r2794_1
# 2795| r2795_1(glval<int[][][]>) = VariableAddress[tmp2] :
# 2795| mu2795_2(int[][][]) = Uninitialized[tmp2] : &:r2795_1
# 2795| r2795_3(glval<int>) = VariableAddress[len1] :
# 2795| r2795_4(int) = Load[len1] : &:r2795_3, ~m?
# 2795| r2795_5(glval<unsigned long>) = VariableAddress[len2] :
# 2795| r2795_6(unsigned long) = Load[len2] : &:r2795_5, ~m?
# 2795| r2795_7(glval<char>) = VariableAddress[len3] :
# 2795| r2795_8(char) = Load[len3] : &:r2795_7, ~m?
# 2795| v2795_9(void) = NoOp :
# 2796| r2796_1(glval<unsigned long>) = VariableAddress[v] :
# 2796| Block 2
# 2796| mu2796_2(unsigned long) = Store[v] : &:r2796_1
# 2797| r2797_1(glval<unsigned long>) = VariableAddress[u] :
# 2797| Block 3
# 2797| mu2797_2(unsigned long) = Store[u] : &:r2797_1
# 2798| r2798_1(glval<unsigned long>) = VariableAddress[t] :
# 2798| r2798_2(unsigned long) = Constant[4] :
# 2798| mu2798_3(unsigned long) = Store[t] : &:r2798_1, r2798_2
# 2799| v2799_1(void) = NoOp :
# 2792| v2792_10(void) = ReturnVoid :
# 2792| v2792_11(void) = AliasedUse : ~m?
# 2792| v2792_12(void) = ExitFunction :
# 2801| size_t vla_sizeof_test3(int, size_t, char, bool)
# 2801| Block 0
# 2801| v2801_1(void) = EnterFunction :
# 2801| mu2801_2(unknown) = AliasedDefinition :
# 2801| mu2801_3(unknown) = InitializeNonLocal :
# 2801| r2801_4(glval<int>) = VariableAddress[len1] :
# 2801| mu2801_5(int) = InitializeParameter[len1] : &:r2801_4
# 2801| r2801_6(glval<unsigned long>) = VariableAddress[len2] :
# 2801| mu2801_7(unsigned long) = InitializeParameter[len2] : &:r2801_6
# 2801| r2801_8(glval<char>) = VariableAddress[len3] :
# 2801| mu2801_9(char) = InitializeParameter[len3] : &:r2801_8
# 2801| r2801_10(glval<bool>) = VariableAddress[b] :
# 2801| mu2801_11(bool) = InitializeParameter[b] : &:r2801_10
# 2802| r2802_1(glval<int>) = VariableAddress[len1] :
# 2802| r2802_2(int) = Load[len1] : &:r2802_1, ~m?
# 2802| r2802_3(glval<unsigned long>) = VariableAddress[len2] :
# 2802| r2802_4(unsigned long) = Load[len2] : &:r2802_3, ~m?
# 2802| v2802_5(void) = NoOp :
# 2803| v2803_1(void) = NoOp :
# 2804| r2804_1(glval<char>) = VariableAddress[len3] :
# 2804| r2804_2(char) = Load[len3] : &:r2804_1, ~m?
# 2804| v2804_3(void) = NoOp :
# 2806| r2806_1(glval<bool>) = VariableAddress[b] :
# 2806| r2806_2(bool) = Load[b] : &:r2806_1, ~m?
# 2806| v2806_3(void) = ConditionalBranch : r2806_2
#-----| False -> Block 4
#-----| True -> Block 2
# 2801| Block 1
# 2801| r2801_12(glval<unsigned long>) = VariableAddress[#return] :
# 2801| v2801_13(void) = ReturnValue : &:r2801_12, ~m?
# 2801| v2801_14(void) = AliasedUse : ~m?
# 2801| v2801_15(void) = ExitFunction :
# 2807| Block 2
# 2807| r2807_1(glval<long[][][]>) = VariableAddress[tmp] :
# 2807| mu2807_2(long[][][]) = Uninitialized[tmp] : &:r2807_1
# 2807| v2807_3(void) = NoOp :
# 2808| r2808_1(glval<unsigned long>) = VariableAddress[#return] :
# 2808| Block 3
# 2808| mu2808_2(unsigned long) = Store[#return] : &:r2808_1
#-----| Goto -> Block 1
# 2811| Block 4
# 2811| r2811_1(glval<unsigned long>) = VariableAddress[#return] :
# 2811| r2811_2(unsigned long) = Constant[0] :
# 2811| mu2811_3(unsigned long) = Store[#return] : &:r2811_1, r2811_2
#-----| Goto -> Block 1
ir23.cpp:
# 1| bool consteval_1()
# 1| Block 0

View File

@@ -6,6 +6,8 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| ir.cpp:2794:10:2794:10 | VariableAddress: definition of z | Instruction 'VariableAddress: definition of z' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:5:2808:26 | VariableAddress: return ... | Instruction 'VariableAddress: return ...' has no successors in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction

View File

@@ -6,6 +6,8 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| ir.cpp:2794:10:2794:10 | VariableAddress: definition of z | Instruction 'VariableAddress: definition of z' has no successors in function '$@'. | ir.cpp:2792:6:2792:21 | void vla_sizeof_test2(int, size_t, char) | void vla_sizeof_test2(int, size_t, char) |
| ir.cpp:2808:5:2808:26 | VariableAddress: return ... | Instruction 'VariableAddress: return ...' has no successors in function '$@'. | ir.cpp:2801:8:2801:23 | size_t vla_sizeof_test3(int, size_t, char, bool) | size_t vla_sizeof_test3(int, size_t, char, bool) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction