Shared: Also expose dataflow stage 1's forward flow predicate.

This commit is contained in:
Mathias Vorreiter Pedersen
2026-04-02 10:56:09 +01:00
parent 2d76b41293
commit 4d8b782695

View File

@@ -91,6 +91,10 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
class ApNil extends Ap;
predicate fwdFlow(Nd node);
predicate fwdFlow(Nd node, Ap ap);
predicate revFlow(Nd node);
predicate revFlow(Nd node, Ap ap);
@@ -634,7 +638,7 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
)
}
private predicate fwdFlow(NodeEx node) { fwdFlow(node, _) }
predicate fwdFlow(NodeEx node) { fwdFlow(node, _) }
pragma[nomagic]
private predicate fwdFlowReadSet(ContentSet c, NodeEx node, Cc cc) {
@@ -1291,6 +1295,13 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
import Stage1
import Stage1Common
predicate fwdFlow(Nd node) { Stage1::fwdFlow(node) }
predicate fwdFlow(Nd node, Ap ap) {
Stage1::fwdFlow(node) and
exists(ap)
}
predicate revFlow(NodeEx node, Ap ap) { Stage1::revFlow(node) and exists(ap) }
predicate toNormalSinkNode = toNormalSinkNodeEx/1;
@@ -1395,6 +1406,10 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
import Stage1Common
predicate fwdFlow(Nd node) { Stage1::fwdFlow(node.getNodeEx()) }
predicate fwdFlow(Nd node, Ap ap) { Stage1::fwdFlow(node.getNodeEx()) and exists(ap) }
predicate revFlow(Nd node) { Stage1::revFlow(node.getNodeEx()) }
predicate revFlow(Nd node, Ap ap) { Stage1::revFlow(node.getNodeEx()) and exists(ap) }