Skip to content

Commit 5bb6441

Browse files
author
Robert Marsh
committed
C++: Fix consistency issues with aggregate inits
1 parent a36c6f2 commit 5bb6441

13 files changed

Lines changed: 30 additions & 58 deletions

cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedGlobalVar.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class TranslatedGlobalOrNamespaceVarInit extends TranslatedInstructionContainer,
7373
result = getInstruction(InitializerVariableAddressTag())
7474
}
7575

76-
override Type getTargetType() { result = var.getType() }
76+
override Type getTargetType() { result = var.getUnspecifiedType() }
7777
}
7878

7979
TranslatedGlobalOrNamespaceVarInit getTranslatedVarInit(GlobalOrNamespaceVariable var) {

cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,11 @@ abstract class TranslatedElementInitialization extends TranslatedElement {
639639
/** DEPRECATED: Alias for getAst */
640640
deprecated override Locatable getAST() { result = getAst() }
641641

642-
final override Function getFunction() { result = initList.getEnclosingFunction() }
642+
final override Declaration getFunction() {
643+
result = initList.getEnclosingFunction()
644+
or
645+
result = initList.getEnclosingVariable().(GlobalOrNamespaceVariable)
646+
}
643647

644648
final override Instruction getFirstInstruction() { result = getInstruction(getElementIndexTag()) }
645649

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ unexplainedLoop
1515
unnecessaryPhiInstruction
1616
memoryOperandDefinitionIsUnmodeled
1717
operandAcrossFunctions
18-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
19-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
20-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
21-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
22-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
23-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
2418
instructionWithoutUniqueBlock
2519
containsLoopOfForwardEdges
2620
lostReachability
@@ -39,10 +33,6 @@ wronglyMarkedAsConflated
3933
| struct_init.cpp:11:12:11:20 | Chi: & ... | Instruction 'Chi: & ...' should not be marked as having a conflated result in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
4034
invalidOverlap
4135
nonUniqueEnclosingIRFunction
42-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
43-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
44-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
45-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
4636
fieldAddressOnNonPointer
4737
thisArgumentIsNonPointer
4838
missingCanonicalLanguageType

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ unexplainedLoop
1515
unnecessaryPhiInstruction
1616
memoryOperandDefinitionIsUnmodeled
1717
operandAcrossFunctions
18-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
19-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
20-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
21-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
22-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
23-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
2418
instructionWithoutUniqueBlock
2519
containsLoopOfForwardEdges
2620
lostReachability
@@ -39,10 +33,6 @@ wronglyMarkedAsConflated
3933
| struct_init.cpp:11:12:11:20 | Chi: & ... | Instruction 'Chi: & ...' should not be marked as having a conflated result in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
4034
invalidOverlap
4135
nonUniqueEnclosingIRFunction
42-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
43-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
44-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
45-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
4636
fieldAddressOnNonPointer
4737
thisArgumentIsNonPointer
4838
missingCanonicalLanguageType

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7698,6 +7698,12 @@
76987698
| smart_ptr.cpp:47:43:47:63 | Unary | r47_6 |
76997699
| struct_init.cpp:9:13:9:25 | Left | r9_2 |
77007700
| struct_init.cpp:9:13:9:25 | Left | r9_2 |
7701+
| struct_init.cpp:9:31:12:1 | Right | r9_3 |
7702+
| struct_init.cpp:9:31:12:1 | Right | r9_5 |
7703+
| struct_init.cpp:9:31:12:1 | Unary | r9_4 |
7704+
| struct_init.cpp:9:31:12:1 | Unary | r9_4 |
7705+
| struct_init.cpp:9:31:12:1 | Unary | r9_6 |
7706+
| struct_init.cpp:9:31:12:1 | Unary | r9_6 |
77017707
| struct_init.cpp:10:5:10:21 | Address | &:r10_1 |
77027708
| struct_init.cpp:10:5:10:21 | Address | &:r10_6 |
77037709
| struct_init.cpp:10:7:10:9 | ChiPartial | partial:m10_4 |

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,6 @@ unexplainedLoop
1212
unnecessaryPhiInstruction
1313
memoryOperandDefinitionIsUnmodeled
1414
operandAcrossFunctions
15-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
16-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
17-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
18-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
19-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
20-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
2115
instructionWithoutUniqueBlock
2216
containsLoopOfForwardEdges
2317
lostReachability
@@ -29,10 +23,6 @@ notMarkedAsConflated
2923
wronglyMarkedAsConflated
3024
invalidOverlap
3125
nonUniqueEnclosingIRFunction
32-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
33-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
34-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
35-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
3626
fieldAddressOnNonPointer
3727
thisArgumentIsNonPointer
3828
missingCanonicalLanguageType

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8924,23 +8924,27 @@ struct_init.cpp:
89248924
# 9| Block 0
89258925
# 9| v9_1(void) = EnterFunction :
89268926
# 9| r9_2(glval<Info[]>) = VariableAddress :
8927-
# 10| r10_1(glval<char *>) = FieldAddress[name] :
8927+
# 9| r9_3(int) = Constant[0] :
8928+
# 9| r9_4(glval<Info>) = PointerAdd[16] : r9_2, r9_3
8929+
# 10| r10_1(glval<char *>) = FieldAddress[name] : r9_4
89288930
# 10| r10_2(glval<char[2]>) = StringConstant :
89298931
# 10| r10_3(char *) = Convert : r10_2
89308932
# 10| mu10_4(char *) = Store[?] : &:r10_1, r10_3
8931-
# 10| r10_5(glval<..(*)(..)>) = FieldAddress[handler] :
8933+
# 10| r10_5(glval<..(*)(..)>) = FieldAddress[handler] : r9_4
89328934
# 10| r10_6(..(*)(..)) = FunctionAddress[handler1] :
89338935
# 10| mu10_7(..(*)(..)) = Store[?] : &:r10_5, r10_6
8934-
# 11| r11_1(glval<char *>) = FieldAddress[name] :
8936+
# 9| r9_5(int) = Constant[1] :
8937+
# 9| r9_6(glval<Info>) = PointerAdd[16] : r9_2, r9_5
8938+
# 11| r11_1(glval<char *>) = FieldAddress[name] : r9_6
89358939
# 11| r11_2(glval<char[2]>) = StringConstant :
89368940
# 11| r11_3(char *) = Convert : r11_2
89378941
# 11| mu11_4(char *) = Store[?] : &:r11_1, r11_3
8938-
# 11| r11_5(glval<..(*)(..)>) = FieldAddress[handler] :
8942+
# 11| r11_5(glval<..(*)(..)>) = FieldAddress[handler] : r9_6
89398943
# 11| r11_6(glval<..()(..)>) = FunctionAddress[handler2] :
89408944
# 11| r11_7(..(*)(..)) = CopyValue : r11_6
89418945
# 11| mu11_8(..(*)(..)) = Store[?] : &:r11_5, r11_7
8942-
# 9| v9_3(void) = ReturnVoid :
8943-
# 9| v9_4(void) = ExitFunction :
8946+
# 9| v9_7(void) = ReturnVoid :
8947+
# 9| v9_8(void) = ExitFunction :
89448948

89458949
# 14| Info* global_pointer
89468950

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@ unexplainedLoop
1111
unnecessaryPhiInstruction
1212
memoryOperandDefinitionIsUnmodeled
1313
operandAcrossFunctions
14-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
15-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
16-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
17-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
18-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
19-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
2014
instructionWithoutUniqueBlock
2115
containsLoopOfForwardEdges
2216
lostReachability
@@ -27,10 +21,6 @@ notMarkedAsConflated
2721
wronglyMarkedAsConflated
2822
invalidOverlap
2923
nonUniqueEnclosingIRFunction
30-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
31-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
32-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
33-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
3424
fieldAddressOnNonPointer
3525
thisArgumentIsNonPointer
3626
missingCanonicalLanguageType

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@ unexplainedLoop
1111
unnecessaryPhiInstruction
1212
memoryOperandDefinitionIsUnmodeled
1313
operandAcrossFunctions
14-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
15-
| struct_init.cpp:9:13:9:25 | Left | Operand 'Left' is used on instruction 'PointerAdd: {...}' in function '$@', but is defined on instruction 'VariableAddress: infos_in_file' in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] |
16-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
17-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
18-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
19-
| struct_init.cpp:9:31:12:1 | Unary | Operand 'Unary' is used on instruction 'FieldAddress: {...}' in function '$@', but is defined on instruction 'PointerAdd: {...}' in function '$@'. | struct_init.cpp:9:13:9:25 | Info infos_in_file[] | Info infos_in_file[] | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
2014
instructionWithoutUniqueBlock
2115
containsLoopOfForwardEdges
2216
lostReachability
@@ -27,10 +21,6 @@ notMarkedAsConflated
2721
wronglyMarkedAsConflated
2822
invalidOverlap
2923
nonUniqueEnclosingIRFunction
30-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
31-
| struct_init.cpp:9:31:12:1 | Constant: {...} | Instruction 'Constant: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
32-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
33-
| struct_init.cpp:9:31:12:1 | PointerAdd: {...} | Instruction 'PointerAdd: {...}' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
3424
fieldAddressOnNonPointer
3525
thisArgumentIsNonPointer
3626
missingCanonicalLanguageType

0 commit comments

Comments
 (0)