A basic block is a unit of program control flow consisting of a single-entry, single-exit sequence of instructions for which the following restriction holds: If program execution reaches the first instruction in the BB, every instruction in the BB must execute. Branches (conditional or unconditional), procedure calls, and returns from a procedure end a BB as they are a break in the control flow and are thus the single exit from the BB.
 Berube, Paul Normand James. Methodologies for many-input feedback-directed optimization. University of Alberta, 2012.