In this paper we describe a novel approach to program optimization, namely, iterative compilation. This technique enables compilers to deliver efficient code by searching for the best sequence of optimizations. Such an approach does not suffer from undecidability issues and, given sufficient time, will find the best optimized code. We have implemented this iterative approach in an existing compiler system which is designed for embedded systems. Experimental results show that this approach delivers efficient code with reasonable compilation times.