70 |
* If the block ends with a call that has been wrapped with a FLOW_TO, |
* If the block ends with a call that has been wrapped with a FLOW_TO, |
71 |
* then there will be one FALLSTHRU out edges and one or more FLOWSTO |
* then there will be one FALLSTHRU out edges and one or more FLOWSTO |
72 |
* out edges. |
* out edges. |
73 |
|
* |
74 |
|
* Control-flow to outside the CFG is represented by edges to the unique |
75 |
|
* STOP node. When such edges are to labels that are defined outside |
76 |
|
* the CFG, then JUMP, BRANCH, or SWITCH edges are used (as appropriate). |
77 |
|
* When such edges are to unkonwn places (e.g., traps, returns, and |
78 |
|
* indirect jumps), then an EXIT edge is used. There should never be |
79 |
|
* a FALLSTHRU or ENTRY edge to the STOP node. |
80 |
*) |
*) |
81 |
and edge_kind (* edge kinds *) |
and edge_kind (* edge kinds *) |
82 |
= ENTRY (* entry edge *) |
= ENTRY (* edge from START node *) |
83 |
| EXIT (* exit edge *) |
| EXIT (* unlabeled edge to STOP node *) |
84 |
| JUMP (* unconditional jump *) |
| JUMP (* unconditional jump *) |
85 |
| FALLSTHRU (* falls through to next block *) |
| FALLSTHRU (* falls through to next block *) |
86 |
| BRANCH of bool (* branch *) |
| BRANCH of bool (* branch *) |