Codegen sometimes crashes on comparisons that aren't legal, just
disable this feature for now, to err on the side of rejecting instead
of sometimes crashing.  rdar://6326239


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68088 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 39d2a50..ca5feb7 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -3566,6 +3566,14 @@
     CheckFloatComparison(Loc,lex,rex);
   }
 
+  // FIXME: Vector compare support in the LLVM backend is not fully reliable,
+  // just reject all vector comparisons for now.
+  if (1) {
+    Diag(Loc, diag::err_typecheck_vector_comparison)
+      << lType << rType << lex->getSourceRange() << rex->getSourceRange();
+    return QualType();
+  }
+
   // Return the type for the comparison, which is the same as vector type for
   // integer vectors, or an integer type of identical size and number of
   // elements for floating point vectors.
@@ -3576,7 +3584,7 @@
   unsigned TypeSize = Context.getTypeSize(VTy->getElementType());
   if (TypeSize == Context.getTypeSize(Context.IntTy))
     return Context.getExtVectorType(Context.IntTy, VTy->getNumElements());
-  else if (TypeSize == Context.getTypeSize(Context.LongTy))
+  if (TypeSize == Context.getTypeSize(Context.LongTy))
     return Context.getExtVectorType(Context.LongTy, VTy->getNumElements());
 
   assert(TypeSize == Context.getTypeSize(Context.LongLongTy) &&