Skip to content

Commit d1dd05e

Browse files
committed
Rust: Fix SSA inconsistencies
1 parent 2b2bd17 commit d1dd05e

File tree

3 files changed

+4
-11
lines changed

3 files changed

+4
-11
lines changed

rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,6 @@ private predicate writesCapturedVariable(BasicBlock bb, Variable v) {
144144
getACapturedVariableAccess(bb, v) instanceof VariableWriteAccess
145145
}
146146

147-
/** Holds if `bb` contains a captured read to variable `v`. */
148-
pragma[nomagic]
149-
private predicate readsCapturedVariable(BasicBlock bb, Variable v) {
150-
variableReadCertain(_, _, getACapturedVariableAccess(bb, v), _)
151-
}
152-
153147
/**
154148
* Holds if captured variable `v` is read directly inside `scope`,
155149
* or inside a (transitively) nested scope of `scope`.
@@ -229,7 +223,7 @@ private module Cached {
229223
*/
230224
cached
231225
predicate capturedEntryWrite(EntryBasicBlock bb, int i, Variable v) {
232-
readsCapturedVariable(bb.getASuccessor*(), v) and
226+
exists(getACapturedVariableAccess(bb.getASuccessor*(), v)) and
233227
i = -1
234228
}
235229

rust/ql/test/library-tests/variables/CONSISTENCY/SsaConsistency.expected

Lines changed: 0 additions & 4 deletions
This file was deleted.

rust/ql/test/library-tests/variables/Ssa.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ definition
167167
| main.rs:621:5:621:5 | x | main.rs:620:9:620:9 | x |
168168
| main.rs:626:13:626:13 | x | main.rs:626:13:626:13 | x |
169169
| main.rs:627:13:627:15 | cap | main.rs:627:13:627:15 | cap |
170+
| main.rs:627:19:632:5 | <captured entry> x | main.rs:626:13:626:13 | x |
170171
| main.rs:627:20:627:20 | b | main.rs:627:20:627:20 | b |
171172
| main.rs:629:17:631:9 | SSA phi(x) | main.rs:626:13:626:13 | x |
172173
| main.rs:630:13:630:13 | x | main.rs:626:13:626:13 | x |
@@ -548,6 +549,7 @@ phi
548549
| main.rs:284:20:284:55 | SSA phi(a9) | main.rs:284:20:284:55 | a9 | main.rs:284:53:284:54 | a9 |
549550
| main.rs:494:13:503:5 | SSA phi(x) | main.rs:490:13:490:13 | x | main.rs:496:9:496:9 | x |
550551
| main.rs:494:13:503:5 | SSA phi(x) | main.rs:490:13:490:13 | x | main.rs:500:9:500:9 | x |
552+
| main.rs:629:17:631:9 | SSA phi(x) | main.rs:626:13:626:13 | x | main.rs:627:19:632:5 | <captured entry> x |
551553
| main.rs:629:17:631:9 | SSA phi(x) | main.rs:626:13:626:13 | x | main.rs:630:13:630:13 | x |
552554
phiReadNode
553555
| main.rs:108:11:109:12 | SSA phi read(s1) | main.rs:106:9:106:10 | s1 |
@@ -591,6 +593,7 @@ ultimateDef
591593
| main.rs:284:20:284:55 | SSA phi(a9) | main.rs:284:53:284:54 | a9 |
592594
| main.rs:494:13:503:5 | SSA phi(x) | main.rs:496:9:496:9 | x |
593595
| main.rs:494:13:503:5 | SSA phi(x) | main.rs:500:9:500:9 | x |
596+
| main.rs:629:17:631:9 | SSA phi(x) | main.rs:627:19:632:5 | <captured entry> x |
594597
| main.rs:629:17:631:9 | SSA phi(x) | main.rs:630:13:630:13 | x |
595598
assigns
596599
| main.rs:18:9:18:10 | x1 | main.rs:18:14:18:16 | "a" |

0 commit comments

Comments
 (0)