Control Flow Graph とは?
control flow graph、すなわち CFG は、ノードが basic block、辺がそれらの間の制御の移りうる経路を表す有向グラフとして関数をモデル化します。分岐・ループ・fall-through は、実行がたどりうるあらゆる経路を捉える辺になります。コンパイラはこのグラフを解析して最適化を進め、到達不能コードのような性質を検出します。
なぜ重要か
control flow graph は、デッドコード除去からループ解析まで、ほとんどのデータフロー最適化が操作する構造です。コードを経路のグラフとして見ることで、コンパイラは取りうるすべての実行について推論できます。
関連ガイド
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…