Table of Contents

Enum ControlFlowImprecision

Namespace
RDCore.SDK.Semantics.Flow
Assembly
RDCore.SDK.dll

What a ControlFlowGraph could not describe exactly, so that whoever asks it a question knows which answers to trust.

[Flags]
public enum ControlFlowImprecision

Fields

None = 0

Nothing is approximated.

Resumption = 4

The procedure uses Resume or Resume Next, which continue at the statement that raised the error: which one is known only at run time. The graph has no edge for it, so a path that only exists through one is not in it.

Subroutines = 2

The procedure uses GoSub or On…GoSub, and a Return goes back to the instruction after any of them: which one is known only at run time. The graph has the edges that are possible, and some that are not.

UnresolvedJump = 1

A jump lands nowhere: the label it names is not defined, which is a compile error. The graph has no edge for it.

Remarks

A graph with no imprecision has every edge control can take, and no edge it cannot (a condition that is not a literal can go either way). A graph that has some is still an answer: it says what it approximates, and an analysis that states a fact decides whether the approximation can make it a lie.