diff --git a/compiler/compilers.cc b/compiler/compilers.cc
index 3c66021..9bb1719 100644
--- a/compiler/compilers.cc
+++ b/compiler/compilers.cc
@@ -92,7 +92,6 @@
                             const std::vector<const art::DexFile*>& dex_files,
                             const std::string& android_root,
                             bool is_host, const CompilerDriver& driver) const
-  OVERRIDE
   SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
   return art::ElfWriterQuick::Create(file, oat_writer, dex_files, android_root, is_host, driver);
 }
@@ -123,8 +122,7 @@
 }
 
 std::vector<uint8_t>* QuickCompiler::GetCallFrameInformationInitialization(
-    const CompilerDriver& driver) const
-    OVERRIDE {
+    const CompilerDriver& driver) const {
   if (driver.GetInstructionSet() == kX86) {
     return X86CFIInitialization();
   }
diff --git a/compiler/compilers.h b/compiler/compilers.h
index 65c8428..892a6bd 100644
--- a/compiler/compilers.h
+++ b/compiler/compilers.h
@@ -25,9 +25,9 @@
  public:
   QuickCompiler() : Compiler(100) {}
 
-  void Init(CompilerDriver& driver) const;
+  void Init(CompilerDriver& driver) const OVERRIDE;
 
-  void UnInit(CompilerDriver& driver) const;
+  void UnInit(CompilerDriver& driver) const OVERRIDE;
 
   CompiledMethod* Compile(CompilerDriver& driver,
                           const DexFile::CodeItem* code_item,
@@ -36,14 +36,14 @@
                           uint16_t class_def_idx,
                           uint32_t method_idx,
                           jobject class_loader,
-                          const DexFile& dex_file) const;
+                          const DexFile& dex_file) const OVERRIDE;
 
   CompiledMethod* JniCompile(CompilerDriver& driver,
                              uint32_t access_flags,
                              uint32_t method_idx,
-                             const DexFile& dex_file) const;
+                             const DexFile& dex_file) const OVERRIDE;
 
-  uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const;
+  uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const OVERRIDE;
 
   bool WriteElf(art::File* file,
                 OatWriter* oat_writer,
@@ -53,9 +53,9 @@
     OVERRIDE
     SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
 
-  Backend* GetCodeGenerator(CompilationUnit* cu, void* compilation_unit) const;
+  Backend* GetCodeGenerator(CompilationUnit* cu, void* compilation_unit) const OVERRIDE;
 
-  void InitCompilationUnit(CompilationUnit& cu) const {}
+  void InitCompilationUnit(CompilationUnit& cu) const OVERRIDE {}
 
   /*
    * @brief Generate and return Dwarf CFI initialization, if supported by the
@@ -83,7 +83,7 @@
                           uint16_t class_def_idx,
                           uint32_t method_idx,
                           jobject class_loader,
-                          const DexFile& dex_file) const;
+                          const DexFile& dex_file) const OVERRIDE;
 
   CompiledMethod* TryCompile(CompilerDriver& driver,
                              const DexFile::CodeItem* code_item,
