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 b5b9c1e66e380..59b68030a4d65 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 8440a82f78bef..9d44d8681cf8a 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 f2911713668ae..571ac53f4571a 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 a1a94e37116ce..066b59305fe3f 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 dfbe936d5a5d3..cf9c24f1e1cde 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 f1529f857eef8..b0523a7f4e40e 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 eaae9f876e3ad..ea906d2e2acfc 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 a35f8276737ff..3318e498a74f9 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 0d847587e8664..8787c8276721c 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 afa86230085ec..361a68a892a8f 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 d0b620980bcef..baa2c8c0bcfb2 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 6bf2302d3bd99..d8168ed15febd 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 e944cba0eb23c..e4db3307ee3aa 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 80dd72a23a673..65f101ddf1d0a 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 937ee09cac7cc..02b6e23835486 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 3c5dfba329cf8..51c892fc91718 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 073861dade4f7..a91e4de41c8da 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 f0e90deee98b3..d9c16347daa34 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 70737927145bf..77d857b32d67e 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 38a29ae49e8d9..524f5f2ff391e 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 dcc46469df3e9..e0a366bfb9225 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 ccf6987a2ea65..b17b76233ad30 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 910db1dde0d18..1c165bbfe84f5 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 e42cd0f97cb49..9c68c5c6de2b2 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 fc067e9052275..a8f2b09b1b20f 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 02ec36df273af..ec29c62976e10 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 8a3dd494f3b4f..cb061ffede234 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 eb8f6881bffc7..dcc51e182924c 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 5d0d8b7f5024c..dd6ada8f56972 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 bed8de94130c5..9f8b676fc7dc2 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 0bc114b90ffc0..a22a8face1797 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 05a13db8d0cff..59a6742c406c2 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 19919cf5136d8..151b2bfced818 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 be0f9f2145383..9eca1ad5f2865 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 a14691c5a4e7a..1e244865b2117 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 2245b036b8459..7d093d20b3dd9 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 ab619615d67e7..f7acaa1f3a78d 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 ae164be1b4e8b..8db00deeb80df 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 72f36d08f4da7..00991504e97a8 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 668626259809e..79b1b6960da1f 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 cb56a7ebeba24..e965786d269fa 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 d88ddc264d72a..42bbc130637be 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 d9292cf01f8d4..ea824dbad54cb 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 a688fd8d9fb50..4e09d5eac26fd 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 6611c142a5efd..0232b047a6c4b 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 48d1002381761..a3574e1b701e8 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 2ef719bb43aae..ac6668e6bdd5f 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 cf85a691dbdb7..ad9129046c3e1 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 b3ed496629992..5054868b5ff4d 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 c95ebabdd30c4..6a2a75cb99739 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 d05202972825d..57bcb3c306cef 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 701dd2906dccb..ceed7cb6acbbf 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 0e5385c913533..38c9344d2966d 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 c03e117d99304..4c11e6a32d7c8 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 89aaee9f13853..fb9d0ad303985 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 3622b28056332..89dc6d35d8bac 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 b4382057654ba..f6bc05011e3c3 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