diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index 25d7763..2d6be25 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -2472,11 +2472,11 @@ def err_init_list_constant_narrowing : Error<
 def warn_init_list_variable_narrowing : Warning<
   "non-constant-expression cannot be narrowed from type %0 to %1 in "
   "initializer list in C++0x">,
-  InGroup<CXX0xNarrowing>, DefaultIgnore;
+  InGroup<CXX0xNarrowing>;
 def warn_init_list_constant_narrowing : Warning<
   "constant expression evaluates to %0 which cannot be narrowed to type %1 in "
   "C++0x">,
-  InGroup<CXX0xNarrowing>, DefaultIgnore;
+  InGroup<CXX0xNarrowing>;
 def note_init_list_narrowing_override : Note<
   "override this message by inserting an explicit cast">;
 def err_init_objc_class : Error<
diff --git a/lib/Basic/DiagnosticIDs.cpp b/lib/Basic/DiagnosticIDs.cpp
index fbeec27..18fc779 100644
--- a/lib/Basic/DiagnosticIDs.cpp
+++ b/lib/Basic/DiagnosticIDs.cpp
@@ -166,7 +166,8 @@ static const StaticDiagInfoRec *GetDiagInfo(unsigned DiagID) {
 #endif
 
   // Search the diagnostic table with a binary search.
-  StaticDiagInfoRec Find = { DiagID, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0 };
+  StaticDiagInfoRec Find = { static_cast<unsigned short>(DiagID),
+                             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0 };
 
   const StaticDiagInfoRec *Found =
     std::lower_bound(StaticDiagInfo, StaticDiagInfo + StaticDiagInfoSize, Find);
@@ -269,7 +270,8 @@ unsigned DiagnosticIDs::getIdFromName(StringRef Name) {
   
   if (Name.empty()) { return diag::DIAG_UPPER_LIMIT; }
   
-  StaticDiagNameIndexRec Find = { Name.data(), 0, Name.size() };
+  StaticDiagNameIndexRec Find = { Name.data(), 0,
+                                  static_cast<uint8_t>(Name.size()) };
   
   const StaticDiagNameIndexRec *Found =
     std::lower_bound( StaticDiagNameIndex, StaticDiagNameIndexEnd, Find);
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp
index 3994fe6..cc32828 100644
--- a/lib/Serialization/ASTReader.cpp
+++ b/lib/Serialization/ASTReader.cpp
@@ -2049,7 +2049,7 @@ ASTReader::ReadASTBlock(Module &F) {
         &F,
         /* No visible information */ 0,
         reinterpret_cast<const KindDeclIDPair *>(BlobStart),
-        BlobLen / sizeof(KindDeclIDPair)
+        static_cast<unsigned>(BlobLen / sizeof(KindDeclIDPair))
       };
       DeclContextOffsets[Context ? Context->getTranslationUnitDecl() : 0]
         .push_back(Info);
diff --git a/test/Parser/objc-init.m b/test/Parser/objc-init.m
index 32ba948..88f12d5 100644
--- a/test/Parser/objc-init.m
+++ b/test/Parser/objc-init.m
@@ -36,8 +36,8 @@ void test5(NSNumber *x) {
   };
   
   struct SomeStruct z = {
-    .x = [x METH2], // ok.
-    .x [x METH2]    // expected-error {{expected '=' or another designator}}
+    .x = (int)[x METH2], // ok.
+    .x (int)[x METH2]    // expected-error {{expected '=' or another designator}}
   };
 }
 
diff --git a/test/SemaTemplate/instantiate-c99.cpp b/test/SemaTemplate/instantiate-c99.cpp
index ae15528..967319f 100644
--- a/test/SemaTemplate/instantiate-c99.cpp
+++ b/test/SemaTemplate/instantiate-c99.cpp
@@ -19,13 +19,13 @@ struct Point2D {
   float x, y;
 };
 
-template struct DesigInit0<Point2D, int, double>;
+template struct DesigInit0<Point2D, float, float>;
 
 struct Point3D {
   float x, y, z;
 };
 
-template struct DesigInit0<Point3D, int, double>;
+template struct DesigInit0<Point3D, float, float>;
 
 struct Color { 
   unsigned char red, green, blue;
@@ -36,7 +36,7 @@ struct ColorPoint3D {
   float x, y, z;
 };
 
-template struct DesigInit0<ColorPoint3D, int, double>;
+template struct DesigInit0<ColorPoint3D, float, float>;
 template struct DesigInit0<Color, int, double>; // expected-note{{instantiation}}
 
 template<typename T, int Subscript1, int Subscript2,
@@ -52,8 +52,8 @@ struct DesigArrayInit0 {
   }
 };
 
-template struct DesigArrayInit0<int[8], 5, 3, float, int>;
-template struct DesigArrayInit0<int[8], 5, 13, float, int>; // expected-note{{instantiation}}
+template struct DesigArrayInit0<int[8], 5, 3, int, int>;
+template struct DesigArrayInit0<int[8], 5, 13, int, int>; // expected-note{{instantiation}}
 
 template<typename T, int Subscript1, int Subscript2,
          typename Val1>
@@ -65,7 +65,7 @@ struct DesigArrayRangeInit0 {
   }
 };
 
-template struct DesigArrayRangeInit0<int[8], 3, 5, float>;
+template struct DesigArrayRangeInit0<int[8], 3, 5, int>;
 template struct DesigArrayRangeInit0<int[8], 5, 13, float>; // expected-note{{instantiation}}
 
 // ---------------------------------------------------------------------
@@ -78,4 +78,4 @@ struct CompoundLiteral0 {
   }
 };
 
-template struct CompoundLiteral0<Point2D, int, float>;
+template struct CompoundLiteral0<Point2D, float, float>;
diff --git a/test/SemaTemplate/instantiate-expr-4.cpp b/test/SemaTemplate/instantiate-expr-4.cpp
index 9483f9b..177f128 100644
--- a/test/SemaTemplate/instantiate-expr-4.cpp
+++ b/test/SemaTemplate/instantiate-expr-4.cpp
@@ -221,7 +221,7 @@ struct APair {
   const float *y;
 };
 
-template struct InitList1<int[1], float>;
+template struct InitList1<int[1], int>;
 template struct InitList1<APair, int*>;
 
 template<typename T, typename Val1, typename Val2>
