Index: llvm/docs/LoopTerminology.rst =================================================================== --- llvm/docs/LoopTerminology.rst +++ llvm/docs/LoopTerminology.rst @@ -29,9 +29,9 @@ * Loops can contain non-loop SCCs and non-loop SCCs may contain loops. Loops may also contain sub-loops. -* A header block is uniquely associated with one loop. There can be - multiple SCC within that loop, but the strongly connected component - (SCC) formed from their union must always be unique. +* A header block is uniquely associated with one loop (and vice versa). + There can be multiple SCC within that loop, but the strongly connected + component (SCC) formed from their union must always be unique. * Given the use of dominance in the definition, all loops are statically reachable from the entry of the function. @@ -58,8 +58,10 @@ **Header Block** - The basic block which dominates all other blocks contained within the loop. As such, it is the first one executed if the loop executes at all. Note that a block can be the header of -two separate loops at the same time, but only if one is a sub-loop -of the other. +two natural loops at the same time. However, in such cases, LoopInfo +considers them as part of one "big" loop (in order to enforce the +guarantee that a header block is associated with exactly one loop +and any loop has exactly one header). **Exiting Block** - A basic block contained within a given loop which has at least one successor outside of the loop and one successor inside the