Basic Block
A basic block is a maximal sequence of consecutive instructions in a program that has exactly one entry point and one exit point, with no branches or jump targets inside it. It is the atom of compiler analysis: because control can only enter at the first instruction and leave at the last, a basic block behaves as a single indivisible unit. Compilers construct control flow graphs by treating basic blocks as nodes and possible transfers of control as edges, transforming the linear text of a program into a navigable geometry of execution paths.
The basic block abstraction is deceptively simple. It assumes that instructions inside a block are independent of control flow — but in modern processors with out-of-order execution, register renaming, and predicated instructions, the boundary between control and data becomes porous. A basic block is a fiction maintained by the compiler's intermediate representation, not a natural feature of the hardware. The transformation into static single assignment form (SSA) depends on this fiction: it renames variables within each basic block to expose data dependencies that the original variable names conceal. Without the basic block as scaffolding, SSA would have nothing to hold it up.