O Que É um Control Flow Graph?
Um control flow graph, ou CFG, modela uma função como um grafo dirigido cujos nós são basic blocks e cujas arestas representam possíveis transferências de controle entre eles. Desvios, loops e fall-through tornam-se arestas que capturam cada rota que a execução pode seguir. Compiladores analisam esse grafo para conduzir otimizações e detectar propriedades como código inalcançável.
Por que isso importa
O control flow graph é a estrutura sobre a qual a maioria das otimizações de dataflow opera, da eliminação de código morto à análise de loops. Ver o código como um grafo de caminhos é o que permite a um compilador raciocinar sobre todas as execuções possíveis.
Guias relacionados
What Is a Basic Block?A basic block is a straight-line sequence of instructions with one entry and one exit, used as the unit of an…
What Is Common Subexpression Elimination?Common subexpression elimination removes redundant computations by reusing a previously computed result inste…
What Is Loop-Invariant Code Motion?Loop-invariant code motion hoists computations whose result does not change across iterations out of a loop s…