Several optimization techniques are hindered by uncertainties about the control flow in a program, which can generally not be determined by static methods at compile time. We present a novel approach that aims to alleviate this limitation by explicitly enumerating all control paths through a loop nest, thus allowing wider and more efficient use of standard optimization passes later. Our analysis will address the possible explosion in code size, which despite high theoretical upper bounds appears to be acceptable in practice, as well as performance gains both for RISC and CISC target processors.