CodeQL library for C#
codeql/csharp-all 1.0.3-dev (changelog, source)

Member predicate BasicBlock::postDominates

Holds if this basic block post-dominates basic block bb.

That is, all paths reaching an exit point basic block from basic block bb must go through this basic block.


int M(string s) {
  try {
    return s.Length;
  finally {

The basic block on line 6 post-dominates the basic block on line 3 (all paths to the exit point of M from return s.Length; must go through the WriteLine call).

This predicate is reflexive, so for example Console.WriteLine("M"); post-dominates itself.

predicate postDominates(BasicBlock bb)