mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
29 lines
948 B
Plaintext
29 lines
948 B
Plaintext
import rust
|
|
import codeql.rust.controlflow.ControlFlowGraph
|
|
import codeql.rust.controlflow.BasicBlocks
|
|
import TestUtils
|
|
|
|
query predicate dominates(BasicBlock bb1, BasicBlock bb2) {
|
|
toBeTested(bb1.getScope()) and bb1.dominates(bb2)
|
|
}
|
|
|
|
query predicate postDominance(BasicBlock bb1, BasicBlock bb2) {
|
|
toBeTested(bb1.getScope()) and bb1.postDominates(bb2)
|
|
}
|
|
|
|
query predicate immediateDominator(BasicBlock bb1, BasicBlock bb2) {
|
|
toBeTested(bb1.getScope()) and bb1.getImmediateDominator() = bb2
|
|
}
|
|
|
|
query predicate controls(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) {
|
|
toBeTested(bb1.getScope()) and bb1.edgeDominates(bb2, t)
|
|
}
|
|
|
|
query predicate successor(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) {
|
|
toBeTested(bb1.getScope()) and bb1.getASuccessor(t) = bb2
|
|
}
|
|
|
|
query predicate joinBlockPredecessor(JoinBasicBlock bb1, BasicBlock bb2, int i) {
|
|
toBeTested(bb1.getScope()) and bb1.getJoinBlockPredecessor(i) = bb2
|
|
}
|