Front End Based Optimizations: Premature or Inevitable ? Traditionally, compilers optimize (i.e., improve the quality of the generated code according to some measure) after the language-dependent "front end" has done its work to break down the idiosyncracies of the specific source language to some "intermediate language" (IL) common to all languages supported by the compiler. The obvious advantage of this approach is that optimizations can be centralized and shared between languages. A somewhat less obvious disadvantage is that optimizations particular to a certain source language might get lost or might need an extraordinary amount of communication between the front end and the part of the compiler that performs the IL optimizations. This is particularly pressing for languages where the penalty of abstraction is high (the entities the language permits operations on are complex and/or large). From the perspective of GCC and the Fortran language I will describe what optimizations are already performed in the front end, which other optimizations are possible and in which cases the only way out is to pass more information from the front end to the IL optimizers. Fortran is a typical example of a language where a few characters of source code might result in many millions of operations on the hardware level after compilation.