Abstract : As any piece of software, compilers, and especially optimizing compilers, can be faulty. It is therefore possible that the semantics of a program is changed by the compilation, along with its properties. In the context of critical software, where formal methods are used to ensure that a program satisfies some properties, possibly before it is compiled, this presents a problem. A solution to this problem is to verify the compiler itself by ensuring that it preserves the semantics of the programs being compiled. In this thesis, we evaluate a new method for building verified compiler passes, the formal verification of translation validators. On the one hand, this method uses formal verification based on proof-assistant in order to offer the best safety guarantees on the compiler. On the other hand, it relies on the use of translation validation, where each execution of the compiler is verified a posteriori, a more pragmatic verification method which allows for the verification of advanced optimizations. We show that this novel approach to the problem of verifying compilers is viable, and even advantageous in some cases, through four examples of optimizations that are both realistic and aggressive: list scheduling, trace scheduling, lazy code motion and software pipelining.