diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/include/clang/Driver/CommonArgs.h similarity index 97% rename from clang/lib/Driver/ToolChains/CommonArgs.h rename to clang/include/clang/Driver/CommonArgs.h index b5b9c1e66e38..59b68030a4d6 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.h +++ b/clang/include/clang/Driver/CommonArgs.h @@ -270,6 +270,12 @@ void handleVectorizeLoopsArgs(const llvm::opt::ArgList &Args, /// Enable -fslp-vectorize based on the optimization level selected. void handleVectorizeSLPArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs); + +// Parse -mprefer-vector-width=. Return the Value string if well-formed. +// Otherwise, return an empty string and issue a diagnosic message if needed. +StringRef ParseMPreferVectorWidthOption(clang::DiagnosticsEngine &Diags, + const llvm::opt::ArgList &Args); + } // end namespace tools } // end namespace driver } // end namespace clang diff --git a/clang/lib/Driver/MultilibBuilder.cpp b/clang/lib/Driver/MultilibBuilder.cpp index 8440a82f78be..9d44d8681cf8 100644 --- a/clang/lib/Driver/MultilibBuilder.cpp +++ b/clang/lib/Driver/MultilibBuilder.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "clang/Driver/MultilibBuilder.h" -#include "ToolChains/CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "llvm/ADT/StringMap.h" #include "llvm/Support/Path.h" #include "llvm/Support/Regex.h" diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index f2911713668a..571ac53f4571 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -11,13 +11,13 @@ #include "ToolChains/Arch/ARM.h" #include "ToolChains/Arch/RISCV.h" #include "ToolChains/Clang.h" -#include "ToolChains/CommonArgs.h" #include "ToolChains/Flang.h" #include "ToolChains/InterfaceStubs.h" #include "clang/Basic/ObjCRuntime.h" #include "clang/Basic/Sanitizers.h" #include "clang/Config/config.h" #include "clang/Driver/Action.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Job.h" diff --git a/clang/lib/Driver/ToolChains/AIX.cpp b/clang/lib/Driver/ToolChains/AIX.cpp index a1a94e37116c..066b59305fe3 100644 --- a/clang/lib/Driver/ToolChains/AIX.cpp +++ b/clang/lib/Driver/ToolChains/AIX.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "AIX.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Options.h" #include "clang/Driver/SanitizerArgs.h" diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index dfbe936d5a5d..cf9c24f1e1cd 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -7,9 +7,9 @@ //===----------------------------------------------------------------------===// #include "AMDGPU.h" -#include "CommonArgs.h" #include "clang/Basic/TargetID.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/AVR.cpp b/clang/lib/Driver/ToolChains/AVR.cpp index f1529f857eef..b0523a7f4e40 100644 --- a/clang/lib/Driver/ToolChains/AVR.cpp +++ b/clang/lib/Driver/ToolChains/AVR.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "AVR.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index eaae9f876e3a..ea906d2e2acf 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "AArch64.h" -#include "../CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/Option/ArgList.h" diff --git a/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp b/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp index a35f8276737f..3318e498a74f 100644 --- a/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp +++ b/clang/lib/Driver/ToolChains/Arch/LoongArch.cpp @@ -8,8 +8,8 @@ #include "LoongArch.h" #include "../Clang.h" -#include "ToolChains/CommonArgs.h" #include "clang/Basic/DiagnosticDriver.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/TargetParser/Host.h" diff --git a/clang/lib/Driver/ToolChains/Arch/Mips.cpp b/clang/lib/Driver/ToolChains/Arch/Mips.cpp index 0d847587e866..8787c8276721 100644 --- a/clang/lib/Driver/ToolChains/Arch/Mips.cpp +++ b/clang/lib/Driver/ToolChains/Arch/Mips.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "Mips.h" -#include "ToolChains/CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/ADT/StringSwitch.h" diff --git a/clang/lib/Driver/ToolChains/Arch/PPC.cpp b/clang/lib/Driver/ToolChains/Arch/PPC.cpp index afa86230085e..361a68a892a8 100644 --- a/clang/lib/Driver/ToolChains/Arch/PPC.cpp +++ b/clang/lib/Driver/ToolChains/Arch/PPC.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "PPC.h" -#include "ToolChains/CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/ADT/StringSwitch.h" diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp index d0b620980bce..baa2c8c0bcfb 100644 --- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp @@ -8,7 +8,7 @@ #include "RISCV.h" #include "../Clang.h" -#include "ToolChains/CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/Option/ArgList.h" diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index 6bf2302d3bd9..d8168ed15feb 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -8,8 +8,8 @@ #include "BareMetal.h" -#include "CommonArgs.h" #include "Gnu.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/InputInfo.h" #include "Arch/ARM.h" diff --git a/clang/lib/Driver/ToolChains/CSKYToolChain.cpp b/clang/lib/Driver/ToolChains/CSKYToolChain.cpp index e944cba0eb23..e4db3307ee3a 100644 --- a/clang/lib/Driver/ToolChains/CSKYToolChain.cpp +++ b/clang/lib/Driver/ToolChains/CSKYToolChain.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "CSKYToolChain.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 80dd72a23a67..65f101ddf1d0 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -14,7 +14,6 @@ #include "Arch/RISCV.h" #include "Arch/Sparc.h" #include "Arch/SystemZ.h" -#include "CommonArgs.h" #include "Hexagon.h" #include "PS4CPU.h" #include "clang/Basic/CLWarnings.h" @@ -26,6 +25,7 @@ #include "clang/Basic/Version.h" #include "clang/Config/config.h" #include "clang/Driver/Action.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Distro.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Options.h" @@ -264,27 +264,6 @@ static void ParseMRecip(const Driver &D, const ArgList &Args, OutStrings.push_back(Args.MakeArgString(Out)); } -/// The -mprefer-vector-width option accepts either a positive integer -/// or the string "none". -static void ParseMPreferVectorWidth(const Driver &D, const ArgList &Args, - ArgStringList &CmdArgs) { - Arg *A = Args.getLastArg(options::OPT_mprefer_vector_width_EQ); - if (!A) - return; - - StringRef Value = A->getValue(); - if (Value == "none") { - CmdArgs.push_back("-mprefer-vector-width=none"); - } else { - unsigned Width; - if (Value.getAsInteger(10, Width)) { - D.Diag(diag::err_drv_invalid_value) << A->getOption().getName() << Value; - return; - } - CmdArgs.push_back(Args.MakeArgString("-mprefer-vector-width=" + Value)); - } -} - static bool shouldUseExceptionTablesForObjCExceptions(const ObjCRuntime &runtime, const llvm::Triple &Triple) { @@ -7607,7 +7586,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, handleVectorizeLoopsArgs(Args, CmdArgs); handleVectorizeSLPArgs(Args, CmdArgs); - ParseMPreferVectorWidth(D, Args, CmdArgs); + + StringRef VecWidth = ParseMPreferVectorWidthOption(D.getDiags(), Args); + if (!VecWidth.empty()) + CmdArgs.push_back(Args.MakeArgString("-mprefer-vector-width=" + VecWidth)); Args.AddLastArg(CmdArgs, options::OPT_fshow_overloads_EQ); Args.AddLastArg(CmdArgs, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 937ee09cac7c..02b6e2383548 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "Arch/AArch64.h" #include "Arch/ARM.h" #include "Arch/CSKY.h" @@ -3167,3 +3167,25 @@ void tools::handleInterchangeLoopsArgs(const ArgList &Args, options::OPT_fno_loop_interchange, EnableInterchange)) CmdArgs.push_back("-floop-interchange"); } + +// Parse -mprefer-vector-width=. Return the Value string if well-formed. +// Otherwise, return an empty string and issue a diagnosic message if needed. +StringRef tools::ParseMPreferVectorWidthOption(clang::DiagnosticsEngine &Diags, + const llvm::opt::ArgList &Args) { + Arg *A = Args.getLastArg(clang::driver::options::OPT_mprefer_vector_width_EQ); + if (!A) + return ""; + + StringRef Value = A->getValue(); + unsigned Width LLVM_ATTRIBUTE_UNINITIALIZED; + + // Only "none" and Integer values are accepted by + // -mprefer-vector-width=. + if (Value != "none" && Value.getAsInteger(10, Width)) { + Diags.Report(clang::diag::err_drv_invalid_value) + << A->getOption().getName() << Value; + return ""; + } + + return Value; +} diff --git a/clang/lib/Driver/ToolChains/CrossWindows.cpp b/clang/lib/Driver/ToolChains/CrossWindows.cpp index 3c5dfba329cf..51c892fc9171 100644 --- a/clang/lib/Driver/ToolChains/CrossWindows.cpp +++ b/clang/lib/Driver/ToolChains/CrossWindows.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "CrossWindows.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 073861dade4f..a91e4de41c8d 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -7,9 +7,9 @@ //===----------------------------------------------------------------------===// #include "Cuda.h" -#include "CommonArgs.h" #include "clang/Basic/Cuda.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Distro.h" #include "clang/Driver/Driver.h" diff --git a/clang/lib/Driver/ToolChains/Cygwin.cpp b/clang/lib/Driver/ToolChains/Cygwin.cpp index f0e90deee98b..d9c16347daa3 100644 --- a/clang/lib/Driver/ToolChains/Cygwin.cpp +++ b/clang/lib/Driver/ToolChains/Cygwin.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "Cygwin.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 70737927145b..77d857b32d67 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -8,10 +8,10 @@ #include "Darwin.h" #include "Arch/ARM.h" -#include "CommonArgs.h" #include "clang/Basic/AlignedAllocation.h" #include "clang/Basic/ObjCRuntime.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/DragonFly.cpp b/clang/lib/Driver/ToolChains/DragonFly.cpp index 38a29ae49e8d..524f5f2ff391 100644 --- a/clang/lib/Driver/ToolChains/DragonFly.cpp +++ b/clang/lib/Driver/ToolChains/DragonFly.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "DragonFly.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index dcc46469df3e..e0a366bfb922 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -8,9 +8,9 @@ #include "Flang.h" #include "Arch/RISCV.h" -#include "CommonArgs.h" #include "clang/Basic/CodeGenOptions.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Options.h" #include "llvm/Frontend/Debug/Options.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp index ccf6987a2ea6..b17b76233ad3 100644 --- a/clang/lib/Driver/ToolChains/FreeBSD.cpp +++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp @@ -10,8 +10,8 @@ #include "Arch/ARM.h" #include "Arch/Mips.h" #include "Arch/Sparc.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Options.h" #include "clang/Driver/SanitizerArgs.h" diff --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp index 910db1dde0d1..1c165bbfe84f 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "Fuchsia.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/MultilibBuilder.h" diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index e42cd0f97cb4..9c68c5c6de2b 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -15,8 +15,8 @@ #include "Arch/RISCV.h" #include "Arch/Sparc.h" #include "Arch/SystemZ.h" -#include "CommonArgs.h" #include "clang/Config/config.h" // for GCC_INSTALL_PREFIX +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/MultilibBuilder.h" diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp index fc067e905227..a8f2b09b1b20 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.cpp +++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -8,10 +8,10 @@ #include "HIPAMD.h" #include "AMDGPU.h" -#include "CommonArgs.h" #include "HIPUtility.h" #include "SPIRV.h" #include "clang/Basic/Cuda.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" diff --git a/clang/lib/Driver/ToolChains/HIPSPV.cpp b/clang/lib/Driver/ToolChains/HIPSPV.cpp index 02ec36df273a..ec29c62976e1 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.cpp +++ b/clang/lib/Driver/ToolChains/HIPSPV.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "HIPSPV.h" -#include "CommonArgs.h" #include "HIPUtility.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index 8a3dd494f3b4..cb061ffede23 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "HIPUtility.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Options.h" #include "llvm/ADT/StringExtras.h" diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index eb8f6881bffc..dcc51e182924 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "HLSL.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Job.h" #include "llvm/ADT/StringSwitch.h" diff --git a/clang/lib/Driver/ToolChains/Haiku.cpp b/clang/lib/Driver/ToolChains/Haiku.cpp index 5d0d8b7f5024..dd6ada8f5697 100644 --- a/clang/lib/Driver/ToolChains/Haiku.cpp +++ b/clang/lib/Driver/ToolChains/Haiku.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "Haiku.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/SanitizerArgs.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index bed8de94130c..9f8b676fc7dc 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "Hexagon.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" diff --git a/clang/lib/Driver/ToolChains/Hurd.cpp b/clang/lib/Driver/ToolChains/Hurd.cpp index 0bc114b90ffc..a22a8face179 100644 --- a/clang/lib/Driver/ToolChains/Hurd.cpp +++ b/clang/lib/Driver/ToolChains/Hurd.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "Hurd.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/Driver/ToolChains/InterfaceStubs.cpp b/clang/lib/Driver/ToolChains/InterfaceStubs.cpp index 05a13db8d0cf..59a6742c406c 100644 --- a/clang/lib/Driver/ToolChains/InterfaceStubs.cpp +++ b/clang/lib/Driver/ToolChains/InterfaceStubs.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "InterfaceStubs.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 19919cf5136d..151b2bfced81 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -12,8 +12,8 @@ #include "Arch/Mips.h" #include "Arch/PPC.h" #include "Arch/RISCV.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Distro.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/MSP430.cpp b/clang/lib/Driver/ToolChains/MSP430.cpp index be0f9f214538..9eca1ad5f286 100644 --- a/clang/lib/Driver/ToolChains/MSP430.cpp +++ b/clang/lib/Driver/ToolChains/MSP430.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "MSP430.h" -#include "CommonArgs.h" #include "Gnu.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Multilib.h" diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index a14691c5a4e7..1e244865b211 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -7,9 +7,9 @@ //===----------------------------------------------------------------------===// #include "MSVC.h" -#include "CommonArgs.h" #include "Darwin.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp index 2245b036b845..7d093d20b3dd 100644 --- a/clang/lib/Driver/ToolChains/MinGW.cpp +++ b/clang/lib/Driver/ToolChains/MinGW.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "MinGW.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" diff --git a/clang/lib/Driver/ToolChains/NaCl.cpp b/clang/lib/Driver/ToolChains/NaCl.cpp index ab619615d67e..f7acaa1f3a78 100644 --- a/clang/lib/Driver/ToolChains/NaCl.cpp +++ b/clang/lib/Driver/ToolChains/NaCl.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "NaCl.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" diff --git a/clang/lib/Driver/ToolChains/NetBSD.cpp b/clang/lib/Driver/ToolChains/NetBSD.cpp index ae164be1b4e8..8db00deeb80d 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.cpp +++ b/clang/lib/Driver/ToolChains/NetBSD.cpp @@ -10,8 +10,8 @@ #include "Arch/ARM.h" #include "Arch/Mips.h" #include "Arch/Sparc.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/OHOS.cpp b/clang/lib/Driver/ToolChains/OHOS.cpp index 72f36d08f4da..00991504e97a 100644 --- a/clang/lib/Driver/ToolChains/OHOS.cpp +++ b/clang/lib/Driver/ToolChains/OHOS.cpp @@ -8,8 +8,8 @@ #include "OHOS.h" #include "Arch/ARM.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/OpenBSD.cpp b/clang/lib/Driver/ToolChains/OpenBSD.cpp index 668626259809..79b1b6960da1 100644 --- a/clang/lib/Driver/ToolChains/OpenBSD.cpp +++ b/clang/lib/Driver/ToolChains/OpenBSD.cpp @@ -10,8 +10,8 @@ #include "Arch/ARM.h" #include "Arch/Mips.h" #include "Arch/Sparc.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Options.h" #include "clang/Driver/SanitizerArgs.h" diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index cb56a7ebeba2..e965786d269f 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "PS4CPU.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp index d88ddc264d72..42bbc130637b 100644 --- a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp +++ b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "RISCVToolchain.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/InputInfo.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/SPIRV.cpp b/clang/lib/Driver/ToolChains/SPIRV.cpp index d9292cf01f8d..ea824dbad54c 100644 --- a/clang/lib/Driver/ToolChains/SPIRV.cpp +++ b/clang/lib/Driver/ToolChains/SPIRV.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// #include "SPIRV.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/InputInfo.h" diff --git a/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp b/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp index a688fd8d9fb5..4e09d5eac26f 100644 --- a/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp +++ b/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp @@ -6,7 +6,7 @@ // //==------------------------------------------------------------------------==// #include "SPIRVOpenMP.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" using namespace clang::driver; using namespace clang::driver::toolchains; diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 6611c142a5ef..0232b047a6c4 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// #include "SYCL.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" using namespace clang::driver; using namespace clang::driver::toolchains; diff --git a/clang/lib/Driver/ToolChains/Solaris.cpp b/clang/lib/Driver/ToolChains/Solaris.cpp index 48d100238176..a3574e1b701e 100644 --- a/clang/lib/Driver/ToolChains/Solaris.cpp +++ b/clang/lib/Driver/ToolChains/Solaris.cpp @@ -7,10 +7,10 @@ //===----------------------------------------------------------------------===// #include "Solaris.h" -#include "CommonArgs.h" #include "Gnu.h" #include "clang/Basic/LangStandard.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/UEFI.cpp b/clang/lib/Driver/ToolChains/UEFI.cpp index 2ef719bb43aa..ac6668e6bdd5 100644 --- a/clang/lib/Driver/ToolChains/UEFI.cpp +++ b/clang/lib/Driver/ToolChains/UEFI.cpp @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include "UEFI.h" -#include "CommonArgs.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/VEToolchain.cpp b/clang/lib/Driver/ToolChains/VEToolchain.cpp index cf85a691dbdb..ad9129046c3e 100644 --- a/clang/lib/Driver/ToolChains/VEToolchain.cpp +++ b/clang/lib/Driver/ToolChains/VEToolchain.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "VEToolchain.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp index b3ed49662999..5054868b5ff4 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -7,9 +7,9 @@ //===----------------------------------------------------------------------===// #include "WebAssembly.h" -#include "CommonArgs.h" #include "Gnu.h" #include "clang/Config/config.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/XCore.cpp b/clang/lib/Driver/ToolChains/XCore.cpp index c95ebabdd30c..6a2a75cb9973 100644 --- a/clang/lib/Driver/ToolChains/XCore.cpp +++ b/clang/lib/Driver/ToolChains/XCore.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "XCore.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" diff --git a/clang/lib/Driver/ToolChains/ZOS.cpp b/clang/lib/Driver/ToolChains/ZOS.cpp index d05202972825..57bcb3c306ce 100644 --- a/clang/lib/Driver/ToolChains/ZOS.cpp +++ b/clang/lib/Driver/ToolChains/ZOS.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "ZOS.h" -#include "CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Options.h" #include "llvm/Option/ArgList.h" diff --git a/clang/lib/Driver/XRayArgs.cpp b/clang/lib/Driver/XRayArgs.cpp index 701dd2906dcc..ceed7cb6acbb 100644 --- a/clang/lib/Driver/XRayArgs.cpp +++ b/clang/lib/Driver/XRayArgs.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// #include "clang/Driver/XRayArgs.h" -#include "ToolChains/CommonArgs.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/Options.h" #include "clang/Driver/ToolChain.h" diff --git a/clang/unittests/Driver/MultilibBuilderTest.cpp b/clang/unittests/Driver/MultilibBuilderTest.cpp index 0e5385c91353..38c9344d2966 100644 --- a/clang/unittests/Driver/MultilibBuilderTest.cpp +++ b/clang/unittests/Driver/MultilibBuilderTest.cpp @@ -12,9 +12,9 @@ //===----------------------------------------------------------------------===// #include "clang/Driver/MultilibBuilder.h" -#include "../../lib/Driver/ToolChains/CommonArgs.h" #include "SimpleDiagnosticConsumer.h" #include "clang/Basic/LLVM.h" +#include "clang/Driver/CommonArgs.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" diff --git a/clang/unittests/Driver/MultilibTest.cpp b/clang/unittests/Driver/MultilibTest.cpp index c03e117d9930..4c11e6a32d7c 100644 --- a/clang/unittests/Driver/MultilibTest.cpp +++ b/clang/unittests/Driver/MultilibTest.cpp @@ -11,10 +11,10 @@ //===----------------------------------------------------------------------===// #include "clang/Driver/Multilib.h" -#include "../../lib/Driver/ToolChains/CommonArgs.h" #include "SimpleDiagnosticConsumer.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/Version.h" +#include "clang/Driver/CommonArgs.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index 89aaee9f1385..fb9d0ad30398 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -23,6 +23,7 @@ #include "clang/Basic/AllDiagnostics.h" #include "clang/Basic/DiagnosticDriver.h" #include "clang/Basic/DiagnosticOptions.h" +#include "clang/Driver/CommonArgs.h" #include "clang/Driver/Driver.h" #include "clang/Driver/DriverDiagnostic.h" #include "clang/Driver/OptionUtils.h" @@ -309,19 +310,8 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts, for (auto *a : args.filtered(clang::driver::options::OPT_fpass_plugin_EQ)) opts.LLVMPassPlugins.push_back(a->getValue()); - // -mprefer_vector_width option - if (const llvm::opt::Arg *a = args.getLastArg( - clang::driver::options::OPT_mprefer_vector_width_EQ)) { - llvm::StringRef s = a->getValue(); - unsigned width; - if (s == "none") - opts.PreferVectorWidth = "none"; - else if (s.getAsInteger(10, width)) - diags.Report(clang::diag::err_drv_invalid_value) - << a->getAsString(args) << a->getValue(); - else - opts.PreferVectorWidth = s.str(); - } + opts.PreferVectorWidth = + clang::driver::tools::ParseMPreferVectorWidthOption(diags, args); // -fembed-offload-object option for (auto *a : diff --git a/flang/test/Driver/prefer-vector-width.f90 b/flang/test/Driver/prefer-vector-width.f90 index 3622b2805633..89dc6d35d8ba 100644 --- a/flang/test/Driver/prefer-vector-width.f90 +++ b/flang/test/Driver/prefer-vector-width.f90 @@ -15,4 +15,4 @@ end subroutine func ! CHECK-NONE-SAME: "prefer-vector-width"="none" ! CHECK-128-SAME: "prefer-vector-width"="128" ! CHECK-256-SAME: "prefer-vector-width"="256" -! CHECK-INVALID: error: invalid value 'xxx' in '-mprefer-vector-width=xxx' \ No newline at end of file +! CHECK-INVALID: error: invalid value 'xxx' in 'mprefer-vector-width=' diff --git a/llvm/include/llvm/Support/Compiler.h b/llvm/include/llvm/Support/Compiler.h index b4382057654b..f6bc05011e3c 100644 --- a/llvm/include/llvm/Support/Compiler.h +++ b/llvm/include/llvm/Support/Compiler.h @@ -238,6 +238,12 @@ #define LLVM_PREFETCH(addr, rw, locality) #endif +#if __has_attribute(uninitialized) +#define LLVM_ATTRIBUTE_UNINITIALIZED __attribute__((uninitialized)) +#else +#define LLVM_ATTRIBUTE_UNINITIALIZED +#endif + #if __has_attribute(used) #define LLVM_ATTRIBUTE_USED __attribute__((__used__)) #else