diff --git a/compiler/dex/arena_allocator.h b/compiler/dex/arena_allocator.h
index cc81e50..0ad859e 100644
--- a/compiler/dex/arena_allocator.h
+++ b/compiler/dex/arena_allocator.h
@@ -47,7 +47,7 @@
       kNumAllocKinds
     };
 
-  ArenaAllocator(size_t default_size = ARENA_DEFAULT_BLOCK_SIZE);
+  explicit ArenaAllocator(size_t default_size = ARENA_DEFAULT_BLOCK_SIZE);
   ~ArenaAllocator();
   void* NewMem(size_t size, bool zero, ArenaAllocKind kind);
   size_t BytesAllocated() {
@@ -86,7 +86,7 @@
      void Dump(std::ostream& os) const {
        arena_.DumpMemStats(os);
      }
-     MemStats(const ArenaAllocator &arena) : arena_(arena) {};
+     explicit MemStats(const ArenaAllocator &arena) : arena_(arena) {};
   private:
     const ArenaAllocator &arena_;
 }; // MemStats
diff --git a/compiler/dex/arena_bit_vector.h b/compiler/dex/arena_bit_vector.h
index 0b7bbc5..7e5c436 100644
--- a/compiler/dex/arena_bit_vector.h
+++ b/compiler/dex/arena_bit_vector.h
@@ -33,7 +33,7 @@
 
     class Iterator {
       public:
-        Iterator(ArenaBitVector* bit_vector)
+        explicit Iterator(ArenaBitVector* bit_vector)
           : p_bits_(bit_vector),
             bit_storage_(bit_vector->GetRawStorage()),
             bit_index_(0),
diff --git a/compiler/dex/backend.h b/compiler/dex/backend.h
index 6f5ba38..7fa8e99 100644
--- a/compiler/dex/backend.h
+++ b/compiler/dex/backend.h
@@ -30,7 +30,7 @@
     virtual CompiledMethod* GetCompiledMethod() = 0;
 
   protected:
-    Backend(ArenaAllocator* arena) : arena_(arena) {};
+    explicit Backend(ArenaAllocator* arena) : arena_(arena) {};
     ArenaAllocator* const arena_;
 
 };  // Class Backend
diff --git a/compiler/dex/growable_array.h b/compiler/dex/growable_array.h
index 6ab0f16..6d26bc2 100644
--- a/compiler/dex/growable_array.h
+++ b/compiler/dex/growable_array.h
@@ -49,7 +49,7 @@
 
     class Iterator {
       public:
-        Iterator(GrowableArray* g_list)
+        explicit Iterator(GrowableArray* g_list)
           : idx_(0),
             g_list_(g_list) {};
 
diff --git a/compiler/dex/local_value_numbering.h b/compiler/dex/local_value_numbering.h
index f2b2291..09ed7ae 100644
--- a/compiler/dex/local_value_numbering.h
+++ b/compiler/dex/local_value_numbering.h
@@ -33,7 +33,7 @@
 
 class LocalValueNumbering {
  public:
-  LocalValueNumbering(CompilationUnit* cu) : cu_(cu) {};
+  explicit LocalValueNumbering(CompilationUnit* cu) : cu_(cu) {};
 
   static uint64_t BuildKey(uint16_t op, uint16_t operand1, uint16_t operand2, uint16_t modifier) {
     return (static_cast<uint64_t>(op) << 48 | static_cast<uint64_t>(operand1) << 32 |
diff --git a/compiler/driver/dex_compilation_unit.h b/compiler/driver/dex_compilation_unit.h
index 53efd12..facc9cb 100644
--- a/compiler/driver/dex_compilation_unit.h
+++ b/compiler/driver/dex_compilation_unit.h
@@ -32,7 +32,7 @@
 
 class DexCompilationUnit {
  public:
-  DexCompilationUnit(CompilationUnit* cu);
+  explicit DexCompilationUnit(CompilationUnit* cu);
 
   DexCompilationUnit(CompilationUnit* cu, jobject class_loader, ClassLinker* class_linker,
                      const DexFile& dex_file, const DexFile::CodeItem* code_item,
diff --git a/compiler/llvm/md_builder.h b/compiler/llvm/md_builder.h
index cc169a3..65c52c9 100644
--- a/compiler/llvm/md_builder.h
+++ b/compiler/llvm/md_builder.h
@@ -35,7 +35,7 @@
 
 class MDBuilder : public LLVMMDBuilder {
  public:
-  MDBuilder(::llvm::LLVMContext& context)
+  explicit MDBuilder(::llvm::LLVMContext& context)
      : LLVMMDBuilder(context), tbaa_root_(createTBAARoot("Art TBAA Root")) {
     std::memset(tbaa_special_type_, 0, sizeof(tbaa_special_type_));
     std::memset(tbaa_memory_jtype_, 0, sizeof(tbaa_memory_jtype_));
