Skip to content

Commit 30d7238

Browse files
author
Robert Marsh
committed
C++: fix missing getPrimaryInstruction
1 parent fffe3c2 commit 30d7238

File tree

9 files changed

+5
-1580
lines changed

9 files changed

+5
-1580
lines changed

cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,11 @@ class TranslatedSideEffect extends TranslatedElement, TTranslatedArgumentSideEff
520520
op instanceof Opcode::IndirectReadSideEffect
521521
}
522522

523+
override Instruction getPrimaryInstructionForSideEffect(InstructionTag tag) {
524+
tag = OnlyInstructionTag() and
525+
result = getTranslatedExpr(call).getInstruction(CallTag())
526+
}
527+
523528
final override int getInstructionIndex(InstructionTag tag) {
524529
tag = OnlyInstructionTag() and
525530
result = index

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

Lines changed: 0 additions & 152 deletions
Large diffs are not rendered by default.

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

Lines changed: 0 additions & 156 deletions
Large diffs are not rendered by default.

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

Lines changed: 0 additions & 156 deletions
Large diffs are not rendered by default.

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ duplicateOperand
44
missingPhiOperand
55
missingOperandType
66
sideEffectWithoutPrimary
7-
| ssa.cpp:97:10:97:11 | BufferMayWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:95:6:95:30 | IR: MustExactlyOverlapEscaped | void MustExactlyOverlapEscaped(Point) |
8-
| ssa.cpp:97:10:97:11 | IndirectReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:95:6:95:30 | IR: MustExactlyOverlapEscaped | void MustExactlyOverlapEscaped(Point) |
9-
| ssa.cpp:108:10:108:11 | BufferMayWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:105:6:105:30 | IR: MustTotallyOverlapEscaped | void MustTotallyOverlapEscaped(Point) |
10-
| ssa.cpp:108:10:108:11 | IndirectReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:105:6:105:30 | IR: MustTotallyOverlapEscaped | void MustTotallyOverlapEscaped(Point) |
11-
| ssa.cpp:119:10:119:11 | BufferMayWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:116:6:116:31 | IR: MayPartiallyOverlapEscaped | void MayPartiallyOverlapEscaped(int, int) |
12-
| ssa.cpp:119:10:119:11 | IndirectReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:116:6:116:31 | IR: MayPartiallyOverlapEscaped | void MayPartiallyOverlapEscaped(int, int) |
13-
| ssa.cpp:209:10:209:11 | SizedBufferMustWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:207:5:207:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) |
14-
| ssa.cpp:209:14:209:15 | SizedBufferReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:207:5:207:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) |
157
instructionWithoutSuccessor
168
ambiguousSuccessors
179
unexplainedLoop

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ duplicateOperand
44
missingPhiOperand
55
missingOperandType
66
sideEffectWithoutPrimary
7-
| ssa.cpp:97:10:97:11 | BufferMayWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:95:6:95:30 | IR: MustExactlyOverlapEscaped | void MustExactlyOverlapEscaped(Point) |
8-
| ssa.cpp:97:10:97:11 | IndirectReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:95:6:95:30 | IR: MustExactlyOverlapEscaped | void MustExactlyOverlapEscaped(Point) |
9-
| ssa.cpp:108:10:108:11 | BufferMayWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:105:6:105:30 | IR: MustTotallyOverlapEscaped | void MustTotallyOverlapEscaped(Point) |
10-
| ssa.cpp:108:10:108:11 | IndirectReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:105:6:105:30 | IR: MustTotallyOverlapEscaped | void MustTotallyOverlapEscaped(Point) |
11-
| ssa.cpp:119:10:119:11 | BufferMayWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:116:6:116:31 | IR: MayPartiallyOverlapEscaped | void MayPartiallyOverlapEscaped(int, int) |
12-
| ssa.cpp:119:10:119:11 | IndirectReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:116:6:116:31 | IR: MayPartiallyOverlapEscaped | void MayPartiallyOverlapEscaped(int, int) |
13-
| ssa.cpp:209:10:209:11 | SizedBufferMustWriteSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:207:5:207:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) |
14-
| ssa.cpp:209:14:209:15 | SizedBufferReadSideEffect: (void *)... | Side effect instruction missing primary instruction in function $@ | ssa.cpp:207:5:207:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) |
157
instructionWithoutSuccessor
168
ambiguousSuccessors
179
unexplainedLoop

cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected

Lines changed: 0 additions & 362 deletions
Large diffs are not rendered by default.

cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected

Lines changed: 0 additions & 374 deletions
Large diffs are not rendered by default.

cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected

Lines changed: 0 additions & 364 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)