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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy