Turn on -flax-vector-conversions by default, issue a warning whenever one is done. Add a -fnolax-vector-conversions option. Fixes PR2862.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63447 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index 5e545b9..52f3478 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -486,10 +486,10 @@
               llvm::cl::desc("Store string literals as writable data"));
 
 static llvm::cl::opt<bool>
-LaxVectorConversions("flax-vector-conversions",
-                     llvm::cl::desc("Allow implicit conversions between vectors"
-                                    " with a different number of elements or "
-                                    "different element types"));
+NoLaxVectorConversions("fnolax-vector-conversions",
+                       llvm::cl::desc("Disallow implicit conversions between "
+                                      "vectors with a different number of "
+                                      "elements or different element types"));
 static llvm::cl::opt<bool>
 EnableBlocks("fblocks", llvm::cl::desc("enable the 'blocks' language feature"), llvm::cl::ValueDisallowed);
 
@@ -620,7 +620,8 @@
     Options.PascalStrings = PascalStrings;
   Options.Microsoft = MSExtensions;
   Options.WritableStrings = WritableStrings;
-  Options.LaxVectorConversions = LaxVectorConversions;
+  if (NoLaxVectorConversions.getPosition())
+      Options.LaxVectorConversions = 0;
   Options.Exceptions = Exceptions;
   if (EnableBlocks.getPosition() || DisableBlocks.getPosition())
     Options.Blocks = EnableBlocks;