Index: llvm/tools/clang/include/clang/AST/Type.h
===================================================================
--- llvm/tools/clang/include/clang/AST/Type.h	(revision 140355)
+++ llvm/tools/clang/include/clang/AST/Type.h	(working copy)
@@ -2400,6 +2400,15 @@
     return VectorKind(VectorTypeBits.VecKind);
   }
 
+  bool isAnyAltiVecKind() const {
+    switch (VectorKind(VectorTypeBits.VecKind)) {
+    default:           return false;
+    case AltiVecVector:
+    case AltiVecPixel:
+    case AltiVecBool:  return true;
+    }
+  }
+
   void Profile(llvm::FoldingSetNodeID &ID) {
     Profile(ID, getElementType(), getNumElements(),
             getTypeClass(), getVectorKind());
Index: llvm/tools/clang/lib/Sema/SemaInit.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaInit.cpp	(revision 140355)
+++ llvm/tools/clang/lib/Sema/SemaInit.cpp	(working copy)
@@ -5317,8 +5317,14 @@
 
   bool Constant = false;
   APValue Result;
+  const InitializedEntity *Parent;
+  const VectorType *VecTy;
+
   if (TopLevelOfInitList &&
-      Seq.endsWithNarrowing(Context, InitE, &Constant, &Result)) {
+      Seq.endsWithNarrowing(Context, InitE, &Constant, &Result) &&
+      !((Parent = Entity.getParent()) &&
+        (VecTy = Parent->getType().getTypePtr()->getAs<VectorType>()) &&
+        VecTy->isAnyAltiVecKind())) {
     DiagnoseNarrowingInInitList(*this, Entity.getType(), InitE,
                                 Constant, Result);
   }
