# Member predicate BasicBlocks::ConditionBlock::controlsSubCond

Holds if basic block `controlled`

is controlled by this basic block with
Boolean value `testIsTrue`

. That is, `controlled`

can only be reached from
the callable entry point by going via the true edge (`testIsTrue = true`

)
or false edge (`testIsTrue = false`

) out of this basic block.

Moreover, `cond`

is a sub expression of the expression ending this basic
block that must have evaluated to `condIsTrue`

. For example, in

```
if (x & !y)
f(x, y);
```

`f(x, y)`

is controlled by `x & !y`

evaluating to `true`

, but also by sub
conditions `x`

and `y`

evaluating to `true`

and `false`

, respectively.

`predicate controlsSubCond(BasicBlock controlled, boolean testIsTrue, Expr cond, boolean condIsTrue)`