diff --git a/include/llvm/Bitcode/Archive.h b/include/llvm/Bitcode/Archive.h
index 39ad5eb63a6..6ddf4a4aca4 100644
--- a/include/llvm/Bitcode/Archive.h
+++ b/include/llvm/Bitcode/Archive.h
@@ -198,7 +198,7 @@ class ArchiveMember {
   private:
     /// Used internally by the Archive class to construct an ArchiveMember.
     /// The contents of the ArchiveMember are filled out by the Archive class.
-    ArchiveMember(Archive *PAR);
+    explicit ArchiveMember(Archive *PAR);
 
     // So Archive can construct an ArchiveMember
     friend class llvm::Archive;
@@ -461,7 +461,7 @@ class Archive {
   protected:
     /// @brief Construct an Archive for \p filename and optionally  map it
     /// into memory.
-    Archive(const sys::Path& filename);
+    explicit Archive(const sys::Path& filename);
 
     /// @param data The symbol table data to be parsed
     /// @param len  The length of the symbol table data
diff --git a/include/llvm/Bitcode/BitCodes.h b/include/llvm/Bitcode/BitCodes.h
index 59d57e77f28..a959ef22296 100644
--- a/include/llvm/Bitcode/BitCodes.h
+++ b/include/llvm/Bitcode/BitCodes.h
@@ -91,8 +91,8 @@ public:
     Char6 = 4   // A 6-bit fixed field which maps to [a-zA-Z0-9._].
   };
     
-  BitCodeAbbrevOp(uint64_t V) :  Val(V), IsLiteral(true) {}
-  BitCodeAbbrevOp(Encoding E, uint64_t Data = 0)
+  explicit BitCodeAbbrevOp(uint64_t V) :  Val(V), IsLiteral(true) {}
+  explicit BitCodeAbbrevOp(Encoding E, uint64_t Data = 0)
     : Val(Data), IsLiteral(false), Enc(E) {}
   
   bool isLiteral() const { return IsLiteral; }
diff --git a/include/llvm/Bitcode/BitstreamWriter.h b/include/llvm/Bitcode/BitstreamWriter.h
index 64598edbd56..ef7d7e7ef42 100644
--- a/include/llvm/Bitcode/BitstreamWriter.h
+++ b/include/llvm/Bitcode/BitstreamWriter.h
@@ -59,7 +59,7 @@ class BitstreamWriter {
   std::vector<BlockInfo> BlockInfoRecords;
   
 public:
-  BitstreamWriter(std::vector<unsigned char> &O) 
+  explicit BitstreamWriter(std::vector<unsigned char> &O) 
     : Out(O), CurBit(0), CurValue(0), CurCodeSize(2) {}
 
   ~BitstreamWriter() {
diff --git a/include/llvm/Support/CommandLine.h b/include/llvm/Support/CommandLine.h
index 23b7cf380e7..562ba04aa50 100644
--- a/include/llvm/Support/CommandLine.h
+++ b/include/llvm/Support/CommandLine.h
@@ -838,7 +838,7 @@ public:
 
   // One option...
   template<class M0t>
-  opt(const M0t &M0) : Option(Optional | NotHidden) {
+  explicit opt(const M0t &M0) : Option(Optional | NotHidden) {
     apply(M0, this);
     done();
   }
@@ -998,7 +998,7 @@ public:
 
   // One option...
   template<class M0t>
-  list(const M0t &M0) : Option(ZeroOrMore | NotHidden) {
+  explicit list(const M0t &M0) : Option(ZeroOrMore | NotHidden) {
     apply(M0, this);
     done();
   }
@@ -1184,7 +1184,7 @@ public:
 
   // One option...
   template<class M0t>
-  bits(const M0t &M0) : Option(ZeroOrMore | NotHidden) {
+  explicit bits(const M0t &M0) : Option(ZeroOrMore | NotHidden) {
     apply(M0, this);
     done();
   }
@@ -1277,7 +1277,7 @@ public:
 
   // One option...
   template<class M0t>
-  alias(const M0t &M0) : Option(Optional | Hidden), AliasFor(0) {
+  explicit alias(const M0t &M0) : Option(Optional | Hidden), AliasFor(0) {
     apply(M0, this);
     done();
   }
@@ -1306,7 +1306,7 @@ public:
 // aliasfor - Modifier to set the option an alias aliases.
 struct aliasopt {
   Option &Opt;
-  aliasopt(Option &O) : Opt(O) {}
+  explicit aliasopt(Option &O) : Opt(O) {}
   void apply(alias &A) const { A.setAliasFor(Opt); }
 };
 
diff --git a/include/llvm/Target/SubtargetFeature.h b/include/llvm/Target/SubtargetFeature.h
index e809fc0a2cc..b0bb94193ad 100644
--- a/include/llvm/Target/SubtargetFeature.h
+++ b/include/llvm/Target/SubtargetFeature.h
@@ -73,7 +73,7 @@ struct SubtargetInfoKV {
 class SubtargetFeatures {
   std::vector<std::string> Features;    // Subtarget features as a vector
 public:
-  SubtargetFeatures(const std::string &Initial = std::string());
+  explicit SubtargetFeatures(const std::string &Initial = std::string());
 
   /// Features string accessors.
   std::string getString() const;
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index edcdf7ffe39..af856ab034f 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -65,7 +65,7 @@ class VISIBILITY_HIDDEN BBPassManager : public PMDataManager,
 
 public:
   static char ID;
-  BBPassManager(int Depth) 
+  explicit BBPassManager(int Depth) 
     : PMDataManager(Depth), FunctionPass((intptr_t)&ID) {}
 
   /// Execute all of the passes scheduled for execution.  Keep track of
@@ -121,7 +121,7 @@ class FunctionPassManagerImpl : public Pass,
                                 public PMTopLevelManager {
 public:
   static char ID;
-  FunctionPassManagerImpl(int Depth) : 
+  explicit FunctionPassManagerImpl(int Depth) : 
     Pass((intptr_t)&ID), PMDataManager(Depth), 
     PMTopLevelManager(TLM_Function) { }
 
@@ -185,7 +185,8 @@ class MPPassManager : public Pass, public PMDataManager {
  
 public:
   static char ID;
-  MPPassManager(int Depth) : Pass((intptr_t)&ID), PMDataManager(Depth) { }
+  explicit MPPassManager(int Depth) :
+    Pass((intptr_t)&ID), PMDataManager(Depth) { }
 
   // Delete on the fly managers.
   virtual ~MPPassManager() {
@@ -260,8 +261,9 @@ class PassManagerImpl : public Pass,
 
 public:
   static char ID;
-  PassManagerImpl(int Depth) : Pass((intptr_t)&ID), PMDataManager(Depth),
-                               PMTopLevelManager(TLM_Pass) { }
+  explicit PassManagerImpl(int Depth) :
+    Pass((intptr_t)&ID), PMDataManager(Depth),
+    PMTopLevelManager(TLM_Pass) { }
 
   /// add - Add a pass to the queue of passes to run.  This passes ownership of
   /// the Pass to the PassManager.  When the PassManager is destroyed, the pass