Data contained in this edge type.

interface Data {
    __lara_flow__control_flow_edge: {
        isFake: boolean;
        version: "1";
    };
    id: string;
    source: string;
    target: string;
}

Hierarchy (view full)

Properties

__lara_flow__control_flow_edge: {
    isFake: boolean;
    version: "1";
}

Type declaration

  • isFake: boolean

    Whether the edge is fake. Fake edges guarantee that this control flow path is actually never followed in runtime, even though the edge might be needed for algorithms to work properly (for instance, to maintain post-dominance properties).

    For a concrete example, consider the following code:

    if (true) {
        ...
    } else {
        ...
    }
    

    Although it may make sense to represent this as a conditional node with two outgoing control flow edges, in practice, the else branch is never executed. Therefore, it may make sense to mark the edge connecting the if branch to the else branch as fake.

    Another example is the following code:

    goback:
    ...
    goto goback;
    ...
    

    This is effectively an infinite loop. However, to ensure that the end of the function post-dominates the loop, it may be necessary to have a fake edge connecting the goto statement to the next statement.

  • version: "1"
id: string

The unique identifier of this edge.

source: string

The unique identifier of the source node of this edge.

target: string

The unique identifier of the target node of this edge.