]> granicus.if.org Git - clang/commitdiff
Revert "For PR17164: split -fno-lax-vector-conversion into three different"
authorJonas Devlieghere <jonas@devlieghere.com>
Fri, 13 Sep 2019 05:16:59 +0000 (05:16 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Fri, 13 Sep 2019 05:16:59 +0000 (05:16 +0000)
This breaks the LLDB build. I tried reaching out to Richard, but haven't
gotten a reply yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@371813 91177308-0d34-0410-b5e6-96231b3b80d8

30 files changed:
include/clang/Basic/LangOptions.def
include/clang/Basic/LangOptions.h
include/clang/Driver/Options.td
lib/Driver/ToolChains/Clang.cpp
lib/Frontend/CompilerInvocation.cpp
lib/Sema/SemaExpr.cpp
test/CodeGen/builtins-systemz-vector.c
test/CodeGen/builtins-systemz-vector2.c
test/CodeGen/builtins-systemz-vector3.c
test/CodeGen/builtins-systemz-zvector-error.c
test/CodeGen/builtins-systemz-zvector.c
test/CodeGen/builtins-systemz-zvector2-error.c
test/CodeGen/builtins-systemz-zvector2.c
test/CodeGen/builtins-systemz-zvector3-error.c
test/CodeGen/builtins-systemz-zvector3.c
test/CodeGen/builtins-wasm.c
test/CodeGenCXX/builtins-systemz-zvector.cpp
test/Headers/altivec-header.c
test/Headers/arm-neon-header.c
test/Headers/x86-intrinsics-headers-clean.cpp
test/Headers/x86-intrinsics-headers.c
test/Headers/x86intrin-2.c
test/Headers/x86intrin.c
test/Sema/ext_vector_casts.c
test/Sema/typedef-retain.c
test/Sema/zvector.c
test/Sema/zvector2.c
test/SemaCXX/altivec.cpp
test/SemaCXX/vector-no-lax.cpp
test/SemaCXX/vector.cpp

index 6b497a05176851e43b6e110134ee1a4f9d51524a..dec281e7935ce885ce5795955d0b24c8a5d39fbc 100644 (file)
@@ -119,8 +119,7 @@ LANGOPT(AppleKext         , 1, 0, "Apple kext support")
 BENIGN_LANGOPT(PascalStrings, 1, 0, "Pascal string support")
 LANGOPT(WritableStrings   , 1, 0, "writable string support")
 LANGOPT(ConstStrings      , 1, 0, "const-qualified string support")
-ENUM_LANGOPT(LaxVectorConversions, LaxVectorConversionKind, 2,
-             LaxVectorConversionKind::All, "lax vector conversions")
+LANGOPT(LaxVectorConversions , 1, 1, "lax vector conversions")
 LANGOPT(AltiVec           , 1, 0, "AltiVec-style vector initializers")
 LANGOPT(ZVector           , 1, 0, "System z vector extensions")
 LANGOPT(Exceptions        , 1, 0, "exception handling")
index 5f808f04e9ae7705fa3560d968dcbea844f80032..e3b7737fa3c63196457e46cf287c0099cacba1fc 100644 (file)
@@ -184,16 +184,6 @@ public:
     FEA_On
   };
 
-  enum class LaxVectorConversionKind {
-    /// Permit no implicit vector bitcasts.
-    None,
-    /// Permit vector bitcasts between integer vectors with different numbers
-    /// of elements but the same total bit-width.
-    Integer,
-    /// Permit vector bitcasts between all vectors with the same total
-    /// bit-width.
-    All,
-  };
 
 public:
   /// Set of enabled sanitizers.
index 7423f92046aa951666a39cb8c601ae9545c9626c..57bab1e1c48b6abc7bc5019323275f8959f855e8 100644 (file)
@@ -1274,10 +1274,7 @@ def fno_fine_grained_bitfield_accesses : Flag<["-"],
   HelpText<"Use large-integer access for consecutive bitfield runs.">;
 
 def flat__namespace : Flag<["-"], "flat_namespace">;
-def flax_vector_conversions_EQ : Joined<["-"], "flax-vector-conversions=">, Group<f_Group>,
-  HelpText<"Enable implicit vector bit-casts">, Values<"none,integer,all">, Flags<[CC1Option]>;
-def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">, Group<f_Group>,
-  Alias<flax_vector_conversions_EQ>, AliasArgs<["integer"]>;
+def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">, Group<f_Group>;
 def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group<f_Group>;
 def fapple_link_rtlib : Flag<["-"], "fapple-link-rtlib">, Group<f_Group>,
   HelpText<"Force linking the clang builtins runtime library">;
@@ -1451,7 +1448,7 @@ def fno_experimental_new_pass_manager : Flag<["-"], "fno-experimental-new-pass-m
 def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>, Flags<[CC1Option]>,
     HelpText<"Use the given vector functions library">, Values<"Accelerate,MASSV,SVML,none">;
 def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>,
-  Alias<flax_vector_conversions_EQ>, AliasArgs<["none"]>;
+  HelpText<"Disallow implicit conversions between vectors with a different number of elements or different element types">, Flags<[CC1Option]>;
 def fno_merge_all_constants : Flag<["-"], "fno-merge-all-constants">, Group<f_Group>,
   HelpText<"Disallow merging of constants">;
 def fno_modules : Flag <["-"], "fno-modules">, Group<f_Group>,
index c39c1c7e3cf77bafd2018c10f4f56c659fa4b7db..6aff423bd1896053e142fbfe700f527c2942bc62 100644 (file)
@@ -4678,11 +4678,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
   if (TC.SupportsProfiling())
     Args.AddLastArg(CmdArgs, options::OPT_mfentry);
 
+  // -flax-vector-conversions is default.
+  if (!Args.hasFlag(options::OPT_flax_vector_conversions,
+                    options::OPT_fno_lax_vector_conversions))
+    CmdArgs.push_back("-fno-lax-vector-conversions");
+
   if (Args.getLastArg(options::OPT_fapple_kext) ||
       (Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType)))
     CmdArgs.push_back("-fapple-kext");
 
-  Args.AddLastArg(CmdArgs, options::OPT_flax_vector_conversions_EQ);
   Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
   Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
   Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
index 0e29e6d9d4d74a18df8fa847cc52d62dc01624d6..3db0b8827adf04fd0835eff2e7fe03621d543b0d 100644 (file)
@@ -2265,7 +2265,7 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
   if (Opts.OpenCL) {
     Opts.AltiVec = 0;
     Opts.ZVector = 0;
-    Opts.setLaxVectorConversions(LangOptions::LaxVectorConversionKind::None);
+    Opts.LaxVectorConversions = 0;
     Opts.setDefaultFPContractMode(LangOptions::FPC_On);
     Opts.NativeHalfType = 1;
     Opts.NativeHalfArgsAndReturns = 1;
@@ -2667,18 +2667,8 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
   Opts.WritableStrings = Args.hasArg(OPT_fwritable_strings);
   Opts.ConstStrings = Args.hasFlag(OPT_fconst_strings, OPT_fno_const_strings,
                                    Opts.ConstStrings);
-  if (Arg *A = Args.getLastArg(OPT_flax_vector_conversions_EQ)) {
-    using LaxKind = LangOptions::LaxVectorConversionKind;
-    if (auto Kind = llvm::StringSwitch<Optional<LaxKind>>(A->getValue())
-                        .Case("none", LaxKind::None)
-                        .Case("integer", LaxKind::Integer)
-                        .Case("all", LaxKind::All)
-                        .Default(llvm::None))
-      Opts.setLaxVectorConversions(*Kind);
-    else
-      Diags.Report(diag::err_drv_invalid_value)
-          << A->getAsString(Args) << A->getValue();
-  }
+  if (Args.hasArg(OPT_fno_lax_vector_conversions))
+    Opts.LaxVectorConversions = 0;
   if (Args.hasArg(OPT_fno_threadsafe_statics))
     Opts.ThreadsafeStatics = 0;
   Opts.Exceptions = Args.hasArg(OPT_fexceptions);
index 84520052c6154f2b67c998f678bf114a27d7d81d..849298433ace0d4c63b93dd9aee1a64cf445e2c7 100644 (file)
@@ -6498,28 +6498,8 @@ bool Sema::areLaxCompatibleVectorTypes(QualType srcTy, QualType destTy) {
 bool Sema::isLaxVectorConversion(QualType srcTy, QualType destTy) {
   assert(destTy->isVectorType() || srcTy->isVectorType());
 
-  switch (Context.getLangOpts().getLaxVectorConversions()) {
-  case LangOptions::LaxVectorConversionKind::None:
+  if (!Context.getLangOpts().LaxVectorConversions)
     return false;
-
-  case LangOptions::LaxVectorConversionKind::Integer:
-    if (!srcTy->isIntegralOrEnumerationType()) {
-      auto *Vec = srcTy->getAs<VectorType>();
-      if (!Vec || !Vec->getElementType()->isIntegralOrEnumerationType())
-        return false;
-    }
-    if (!destTy->isIntegralOrEnumerationType()) {
-      auto *Vec = destTy->getAs<VectorType>();
-      if (!Vec || !Vec->getElementType()->isIntegralOrEnumerationType())
-        return false;
-    }
-    // OK, integer (vector) -> integer (vector) bitcast.
-    break;
-
-    case LangOptions::LaxVectorConversionKind::All:
-    break;
-  }
-
   return areLaxCompatibleVectorTypes(srcTy, destTy);
 }
 
index 85cdc30aa54c2b5daff78880682125a7c2de6936..6d94cfae9a74c02ed588a3dadc6332a2f909d756 100644 (file)
@@ -1,5 +1,5 @@
 // REQUIRES: systemz-registered-target
-// RUN: %clang_cc1 -target-cpu z13 -triple s390x-ibm-linux -flax-vector-conversions=none \
+// RUN: %clang_cc1 -target-cpu z13 -triple s390x-ibm-linux -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 
 typedef __attribute__((vector_size(16))) signed char vec_schar;
index a17cdf0a5ae6bec1a3a782f598dddc360efc3c92..8f0b8aee8c2d3836120ff8123900112da3a6e22f 100644 (file)
@@ -1,5 +1,5 @@
 // REQUIRES: systemz-registered-target
-// RUN: %clang_cc1 -target-cpu z14 -triple s390x-ibm-linux -flax-vector-conversions=none \
+// RUN: %clang_cc1 -target-cpu z14 -triple s390x-ibm-linux -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 
 typedef __attribute__((vector_size(16))) signed char vec_schar;
index e8194b642cd631724687ace7b0397f542c7a1603..976a3e2b7d636dfcd2a1a50851c00e87811672e0 100644 (file)
@@ -1,5 +1,5 @@
 // REQUIRES: systemz-registered-target
-// RUN: %clang_cc1 -target-cpu arch13 -triple s390x-ibm-linux -flax-vector-conversions=none \
+// RUN: %clang_cc1 -target-cpu arch13 -triple s390x-ibm-linux -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 
 typedef __attribute__((vector_size(16))) signed char vec_schar;
index 5fdcb4061850fcd6260a332505d98c9ef74b11a9..cb60ea495ece423583cbe9ac10223303924bc6ad 100644 (file)
@@ -1,6 +1,6 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
-// RUN: -fzvector -flax-vector-conversions=none \
+// RUN: -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -fsyntax-only -verify %s
 
 #include <vecintrin.h>
index 37a6e4db376b224b1edb992edc9f135b8b7c258f..f814547ee4b42d0952dbce47b635ec88ba90cd6a 100644 (file)
@@ -1,9 +1,9 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
-// RUN: -O -fzvector -flax-vector-conversions=none \
+// RUN: -O -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
-// RUN: -O -fzvector -flax-vector-conversions=none \
+// RUN: -O -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -S %s -o - | FileCheck %s --check-prefix=CHECK-ASM
 
 #include <vecintrin.h>
index 64fcbc46ba0da0a839831ac191e5d7363f0ca8f8..3b890b9d09af51a6666345bec13effe3dbbd01d1 100644 (file)
@@ -1,6 +1,6 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu z14 -triple s390x-linux-gnu \
-// RUN: -fzvector -flax-vector-conversions=none \
+// RUN: -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -fsyntax-only -verify %s
 
 #include <vecintrin.h>
index 02fa3253d967d62272a79ec7024bbbc340ce5c90..990e4e58b527851373d5e494b35b9cd1120b34f6 100644 (file)
@@ -1,9 +1,9 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu z14 -triple s390x-linux-gnu \
-// RUN: -O -fzvector -flax-vector-conversions=none \
+// RUN: -O -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 // RUN: %clang_cc1 -target-cpu z14 -triple s390x-linux-gnu \
-// RUN: -O -fzvector -flax-vector-conversions=none \
+// RUN: -O -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -S %s -o - | FileCheck %s --check-prefix=CHECK-ASM
 
 #include <vecintrin.h>
index 657508b26186783eacef58db13f5fe6a3f642c5a..286cd3ce59d4d329d3949850e6a0ea166d8bc79c 100644 (file)
@@ -1,6 +1,6 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu arch13 -triple s390x-linux-gnu \
-// RUN: -fzvector -flax-vector-conversions=none \
+// RUN: -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -fsyntax-only -verify %s
 
 #include <vecintrin.h>
index db30f419332634d7d39fe98b5a1b5dcfe44ba3d7..1367d87c58ce2d1ad0b864510d5ce35a4e28b8da 100644 (file)
@@ -1,9 +1,9 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu arch13 -triple s390x-linux-gnu \
-// RUN: -O -fzvector -flax-vector-conversions=none \
+// RUN: -O -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 // RUN: %clang_cc1 -target-cpu arch13 -triple s390x-linux-gnu \
-// RUN: -O -fzvector -flax-vector-conversions=none \
+// RUN: -O -fzvector -fno-lax-vector-conversions \
 // RUN: -Wall -Wno-unused -Werror -S %s -o - | FileCheck %s --check-prefix=CHECK-ASM
 
 #include <vecintrin.h>
index ee08983d9a1e778b94584cd386a0fd9f7abf632c..43299bd26f9b09d4c8b669636db110dc521c8718 100644 (file)
@@ -1,6 +1,6 @@
-// RUN: %clang_cc1 -triple wasm32-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY32
-// RUN: %clang_cc1 -triple wasm64-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY64
-// RUN: not %clang_cc1 -triple wasm64-unknown-unknown -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s 2>&1 | FileCheck %s -check-prefixes MISSING-SIMD
+// RUN: %clang_cc1 -triple wasm32-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -fno-lax-vector-conversions -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY32
+// RUN: %clang_cc1 -triple wasm64-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -fno-lax-vector-conversions -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY64
+// RUN: not %clang_cc1 -triple wasm64-unknown-unknown -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -fno-lax-vector-conversions -O3 -emit-llvm -o - %s 2>&1 | FileCheck %s -check-prefixes MISSING-SIMD
 
 // SIMD convenience types
 typedef char i8x16 __attribute((vector_size(16)));
index f6ce7114ed2fe2a20caa41765d2d04801346dfe8..aedb30ffbb4cc6b2c6f577deae218773e2bfcbe5 100644 (file)
@@ -1,6 +1,6 @@
 // REQUIRES: systemz-registered-target
 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
-// RUN: -fzvector -flax-vector-conversions=none -std=c++11 \
+// RUN: -fzvector -fno-lax-vector-conversions -std=c++11 \
 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
 
 bool gb;
index 00e5f444de7cc2dafb831a7f438c6373b74da881..733ab5002a92a91f6c20532821964b427066fa75 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -triple powerpc64-unknown-unknown -target-feature +altivec -ffreestanding -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -target-feature +altivec -ffreestanding -emit-llvm -flax-vector-conversions=none -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -target-feature +altivec -ffreestanding -emit-llvm -fno-lax-vector-conversions -o - %s | FileCheck %s
 // RUN: %clang_cc1 -triple powerpc64-unknown-unknown -target-feature +altivec -ffreestanding -emit-llvm -x c++ -o - %s | FileCheck %s
 
 #include <altivec.h>
index 1da5ed052c329b2d08e5c2df001e2f9e2982b8a8..06b99a4560a50d038e9b2b95939e12a321877c88 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -Wvector-conversions -ffreestanding %s
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -flax-vector-conversions=none -ffreestanding %s
+// RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -fno-lax-vector-conversions -ffreestanding %s
 // RUN: %clang_cc1 -x c++ -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -Wvector-conversions -ffreestanding %s
 
 // RUN: %clang -fsyntax-only               -ffreestanding --target=aarch64-none-eabi -march=armv8.2-a+fp16 -std=c89 -xc %s
index dc4cd9a194d8131f0481c9c4de38ba5dde9d9197..0a0679064c666e8513e8670ce853b1b515dfc33c 100644 (file)
@@ -1,7 +1,7 @@
 // Make sure the intrinsic headers compile cleanly with no warnings or errors.
 
 // RUN: %clang_cc1 -ffreestanding -triple x86_64-unknown-unknown -Wsystem-headers \
-// RUN:   -fsyntax-only -flax-vector-conversions=none -x c++ -verify %s
+// RUN:   -fsyntax-only -fno-lax-vector-conversions -x c++ -verify %s
 
 // expected-no-diagnostics
 
index 59ca354e1160b61da9b6a1d74cd1d0c7f0a9dab4..91c4ffaa0edbf0ef3f2be0dd47e16f2d8614f850 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -fsyntax-only -ffreestanding %s
-// RUN: %clang_cc1 -fsyntax-only -ffreestanding -flax-vector-conversions=none %s
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s
 // RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s
 
 #if defined(i386) || defined(__x86_64__)
index 404b30c60359951dec23823f4c7cc5df462d4378..e6fd7c80446d4eb1e07d70785ef71e36307f27d8 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify
-// RUN: %clang_cc1 -fsyntax-only -ffreestanding -flax-vector-conversions=none %s -verify
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s -verify
 // RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify
 // expected-no-diagnostics
 
index 53e369559f40896ce6c9616e1f212e5cc01bd2b9..7c15c4816b33b30eb32293244bd55ba0768c5520 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify
-// RUN: %clang_cc1 -fsyntax-only -ffreestanding -flax-vector-conversions=none %s -verify
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s -verify
 // RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify
 // expected-no-diagnostics
 
index 5c13acab0f58db15558b5d5f8177f07c3281ccc2..b13f836834878ad7ea5a1b1e4d2f0324680d90cb 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -fsyntax-only -verify -flax-vector-conversions=none -Wconversion %s
+// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -fsyntax-only -verify -fno-lax-vector-conversions -Wconversion %s
 
 typedef __attribute__((ext_vector_type(8))) _Bool BoolVector; // expected-error {{invalid vector element type '_Bool'}}
 
index 70e2abc1da5b8658376a8bf7b16ce456395f8979..3d784ce60a75cef4c5385d741e60636235d877ea 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -flax-vector-conversions=none
+// RUN: %clang_cc1 -fsyntax-only -verify %s -fno-lax-vector-conversions
 
 typedef float float4 __attribute__((vector_size(16)));
 typedef int int4 __attribute__((vector_size(16)));
index 798b12bd50b767d3566ebb999664c5cf1e7d78b7..858e10d661f80b2778e3461c532e489e2903a1d7 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -triple s390x-linux-gnu -fzvector \
-// RUN:  -flax-vector-conversions=none -W -Wall -Wconversion \
+// RUN:  -fno-lax-vector-conversions -W -Wall -Wconversion \
 // RUN:  -Werror -fsyntax-only -verify %s
 
 vector signed char sc, sc2;
index a4e0a9e2c3f18f5cf09f529865af3dd113016244..08ec9dfc661f3aca6c806c70ef6aa83f9e9728a8 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -triple s390x-linux-gnu -fzvector -target-cpu z14 \
-// RUN:  -flax-vector-conversions=none -W -Wall -Wconversion \
+// RUN:  -fno-lax-vector-conversions -W -Wall -Wconversion \
 // RUN:  -Werror -fsyntax-only -verify %s
 
 vector signed char sc, sc2;
index 2ba3400ca127fd765a627a3721982ac1db7034d9..92f02838adf7b43432d3fefbfbcab700b06f9f81 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -target-feature +altivec -flax-vector-conversions=none -triple powerpc-unknown-unknown -fcxx-exceptions -verify %s
+// RUN: %clang_cc1 -target-feature +altivec -fno-lax-vector-conversions -triple powerpc-unknown-unknown -fcxx-exceptions -verify %s
 
 typedef int V4i __attribute__((vector_size(16)));
 
index a6e39a8374fe63cf6539342093884a9299330e50..3cedcb1e8ce5f2816772ea26ae8976bfb4e5c619 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -flax-vector-conversions=none -verify %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fno-lax-vector-conversions -verify %s
 typedef unsigned int __attribute__((vector_size (16))) vUInt32;
 typedef int __attribute__((vector_size (16))) vSInt32;
 
index 67e5a94cb108c57f7df8ff8e9d73961925dfd4b4..295e1e173233de0831cd7c97751420b492dd8e99 100644 (file)
@@ -1,8 +1,6 @@
-// RUN: %clang_cc1 -flax-vector-conversions=all -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -flax-vector-conversions=all -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=c++98 %s
-// RUN: %clang_cc1 -flax-vector-conversions=all -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=c++11 %s
-// RUN: %clang_cc1 -flax-vector-conversions=integer -triple x86_64-apple-darwin10 -fsyntax-only -verify %s -DNO_LAX_FLOAT
-// RUN: %clang_cc1 -flax-vector-conversions=none -triple x86_64-apple-darwin10 -fsyntax-only -verify %s -DNO_LAX_FLOAT -DNO_LAX_INT
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=c++98 %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=c++11 %s
 
 typedef char char16 __attribute__ ((__vector_size__ (16)));
 typedef long long longlong16 __attribute__ ((__vector_size__ (16)));
@@ -10,19 +8,13 @@ typedef char char16_e __attribute__ ((__ext_vector_type__ (16)));
 typedef long long longlong16_e __attribute__ ((__ext_vector_type__ (2)));
 
 // Test overloading and function calls with vector types.
-void f0(char16); // expected-note 0+{{candidate}}
+void f0(char16);
 
 void f0_test(char16 c16, longlong16 ll16, char16_e c16e, longlong16_e ll16e) {
   f0(c16);
   f0(ll16);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{no matching function}}
-#endif
   f0(c16e);
   f0(ll16e);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{no matching function}}
-#endif
 }
 
 int &f1(char16);
@@ -35,14 +27,12 @@ void f1_test(char16 c16, longlong16 ll16, char16_e c16e, longlong16_e ll16e) {
   float &fr2 = f1(ll16e);
 }
 
-void f2(char16_e); // expected-note 0+{{candidate}}
+void f2(char16_e); // expected-note{{no known conversion from 'longlong16_e' (vector of 2 'long long' values) to 'char16_e' (vector of 16 'char' values) for 1st argument}} \
+       // expected-note{{candidate function not viable: no known conversion from 'convertible_to<longlong16_e>' to 'char16_e' (vector of 16 'char' values) for 1st argument}}
 
 void f2_test(char16 c16, longlong16 ll16, char16_e c16e, longlong16_e ll16e) {
   f2(c16);
   f2(ll16);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{no matching function}}
-#endif
   f2(c16e);
   f2(ll16e); // expected-error{{no matching function}}
   f2('a');
@@ -68,11 +58,6 @@ void conditional(bool Cond, char16 c16, longlong16 ll16, char16_e c16e,
   (void)(Cond? c16 : ll16);
   (void)(Cond? ll16e : c16e);
   (void)(Cond? ll16e : c16);
-#ifdef NO_LAX_INT
-  // expected-error@-4 {{cannot convert}}
-  // expected-error@-4 {{cannot convert}}
-  // expected-error@-4 {{cannot convert}}
-#endif
 }
 
 // Test C++ cast'ing of vector types.
@@ -100,16 +85,9 @@ void casts(longlong16 ll16, longlong16_e ll16e) {
   // static_cast
   (void)static_cast<char16>(ll16);
   (void)static_cast<char16_e>(ll16);
-#ifdef NO_LAX_INT
-  // expected-error@-3 {{not allowed}}
-  // expected-error@-3 {{not allowed}}
-#endif
   (void)static_cast<longlong16>(ll16);
   (void)static_cast<longlong16_e>(ll16);
   (void)static_cast<char16>(ll16e);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{not allowed}}
-#endif
   (void)static_cast<char16_e>(ll16e); // expected-error{{static_cast from 'longlong16_e' (vector of 2 'long long' values) to 'char16_e' (vector of 16 'char' values) is not allowed}}
   (void)static_cast<longlong16>(ll16e);
   (void)static_cast<longlong16_e>(ll16e);
@@ -143,19 +121,10 @@ void test_implicit_conversions(bool Cond, char16 c16, longlong16 ll16,
                                convertible_to<char16_e&> rto_c16e) {
   f0(to_c16);
   f0(to_ll16);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{no matching function}}
-#endif
   f0(to_c16e);
   f0(to_ll16e);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{no matching function}}
-#endif
   f2(to_c16);
   f2(to_ll16);
-#ifdef NO_LAX_INT
-  // expected-error@-2 {{no matching function}}
-#endif
   f2(to_c16e);
   f2(to_ll16e); // expected-error{{no matching function}}
 
@@ -224,10 +193,6 @@ void test_implicit_conversions(bool Cond, char16 c16, longlong16 ll16,
   // These 2 are convertible with -flax-vector-conversions (default)
   (void)(Cond? to_c16 : to_ll16);
   (void)(Cond? to_c16e : to_ll16e);
-#ifdef NO_LAX_INT
-  // expected-error@-3 {{cannot convert}}
-  // expected-error@-3 {{cannot convert}}
-#endif
 }
 
 typedef float fltx2 __attribute__((__vector_size__(8)));
@@ -238,10 +203,6 @@ typedef double dblx4 __attribute__((__vector_size__(32)));
 void accept_fltx2(fltx2); // expected-note{{candidate function not viable: no known conversion from 'double' to 'fltx2' (vector of 2 'float' values) for 1st argument}}
 void accept_fltx4(fltx4);
 void accept_dblx2(dblx2);
-#ifdef NO_LAX_FLOAT
-// expected-note@-3 {{no known conversion}}
-// expected-note@-3 {{no known conversion}}
-#endif
 void accept_dblx4(dblx4);
 void accept_bool(bool); // expected-note{{candidate function not viable: no known conversion from 'fltx2' (vector of 2 'float' values) to 'bool' for 1st argument}}
 
@@ -253,12 +214,9 @@ void test(fltx2 fltx2_val, fltx4 fltx4_val, dblx2 dblx2_val, dblx4 dblx4_val) {
   accept_dblx4(dblx4_val);
 
   // Same-size conversions
+  // FIXME: G++ rejects these conversions, we accept them. Revisit this!
   accept_fltx4(dblx2_val);
   accept_dblx2(fltx4_val);
-#ifdef NO_LAX_FLOAT
-  // expected-error@-3 {{no matching function}}
-  // expected-error@-3 {{no matching function}}
-#endif
 
   // Conversion to bool.
   accept_bool(fltx2_val); // expected-error{{no matching function for call to 'accept_bool'}}
@@ -269,9 +227,9 @@ void test(fltx2 fltx2_val, fltx4 fltx4_val, dblx2 dblx2_val, dblx4 dblx4_val) {
 
 typedef int intx4 __attribute__((__vector_size__(16)));
 typedef int inte4 __attribute__((__ext_vector_type__(4)));
-typedef float flte4 __attribute__((__ext_vector_type__(4)));
+typedef int flte4 __attribute__((__ext_vector_type__(4)));
 
-void test_mixed_vector_types(fltx4 f, intx4 n, flte4 g, inte4 m) {
+void test_mixed_vector_types(fltx4 f, intx4 n, flte4 g, flte4 m) {
   (void)(f == g);
   (void)(g != f);
   (void)(f <= g);
@@ -337,40 +295,40 @@ typedef bool bad __attribute__((__vector_size__(16)));  // expected-error {{inva
 namespace Templates {
 template <typename Elt, unsigned Size>
 struct TemplateVectorType {
-  typedef Elt __attribute__((__vector_size__(Size))) type; // #1
+  typedef Elt __attribute__((__vector_size__(Size))) type;
 };
 
 template <int N, typename T>
 struct PR15730 {
   typedef T __attribute__((vector_size(N * sizeof(T)))) type;
-  typedef T __attribute__((vector_size(8192))) type2; // #2
-  typedef T __attribute__((vector_size(3))) type3; // #3
+  typedef T __attribute__((vector_size(8192))) type2;
+  typedef T __attribute__((vector_size(3))) type3;
 };
 
 void Init() {
   const TemplateVectorType<float, 32>::type Works = {};
   const TemplateVectorType<int, 32>::type Works2 = {};
-  // expected-error@#1 {{invalid vector element type 'bool'}}
+  // expected-error@298 {{invalid vector element type 'bool'}}
   // expected-note@+1 {{in instantiation of template class 'Templates::TemplateVectorType<bool, 32>' requested here}}
   const TemplateVectorType<bool, 32>::type NoBool;
-  // expected-error@#1 {{invalid vector element type 'int __attribute__((ext_vector_type(4)))' (vector of 4 'int' values)}}
+  // expected-error@298 {{invalid vector element type 'int __attribute__((ext_vector_type(4)))' (vector of 4 'int' values)}}
   // expected-note@+1 {{in instantiation of template class 'Templates::TemplateVectorType<int __attribute__((ext_vector_type(4))), 32>' requested here}}
   const TemplateVectorType<vi4, 32>::type NoComplex;
-  // expected-error@#1 {{vector size not an integral multiple of component size}}
+  // expected-error@298 {{vector size not an integral multiple of component size}}
   // expected-note@+1 {{in instantiation of template class 'Templates::TemplateVectorType<int, 33>' requested here}}
   const TemplateVectorType<int, 33>::type BadSize;
-  // expected-error@#1 {{vector size too large}}
+  // expected-error@298 {{vector size too large}}
   // expected-note@+1 {{in instantiation of template class 'Templates::TemplateVectorType<int, 8192>' requested here}}
   const TemplateVectorType<int, 8192>::type TooLarge;
-  // expected-error@#1 {{zero vector size}}
+  // expected-error@298 {{zero vector size}}
   // expected-note@+1 {{in instantiation of template class 'Templates::TemplateVectorType<int, 0>' requested here}}
   const TemplateVectorType<int, 0>::type Zero;
 
-  // expected-error@#2 {{vector size too large}}
-  // expected-error@#3 {{vector size not an integral multiple of component size}}
+  // expected-error@304 {{vector size too large}}
+  // expected-error@305 {{vector size not an integral multiple of component size}}
   // expected-note@+1 {{in instantiation of template class 'Templates::PR15730<8, int>' requested here}}
   const PR15730<8, int>::type PR15730_1 = {};
-  // expected-error@#2 {{vector size too large}}
+  // expected-error@304 {{vector size too large}}
   // expected-note@+1 {{in instantiation of template class 'Templates::PR15730<8, char>' requested here}}
   const PR15730<8, char>::type2 PR15730_2 = {};
 }