Files
codeql/rust/ql/test/library-tests/controlflow/BasicBlocks.ql
Arthur Baars 44a404571f Rust: fixes
2025-05-22 09:53:12 +02:00

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
}