Basic block (source code)

= Basic block

A <basic block> is a sequence of operations with one entry at its beginning and no internal control transfer to another block. In LLVM's <intermediate representation>, it ends in a terminator that determines the next control transfer, such as a branch or return. <Phi nodes> at the beginning account for values arriving from different predecessors.<LLVM Language Reference Manual>[Functions, basic-block structure; Terminator Instructions]{ref}

For example, `a=x+1; b=2*a; branch next` can form one <basic block>. A conditional branch after the first assignment would end that block and create successors. Grouping operations this way exposes paths through a <control-flow graph> while letting a <compiler> reason locally about an uninterrupted sequence. A <basic block> can execute repeatedly when it lies inside a loop; it is a static program region, not one execution event.