Member predicate ControlFlowElement::controlsBlock

Holds if basic block controlled is controlled by this control flow element with conditional value s. That is, controlled can only be reached from the callable entry point by going via the s edge out of some basic block ending with this element.

This predicate is different from

exists(ConditionBlock cb |
  cb.getLastNode() = this.getAControlFlowNode() |
  cb.controls(controlled, s)

as control flow splitting is taken into account.

predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s)