diff --git a/clang/include/clang/Driver/Multilib.h b/clang/include/clang/Driver/Multilib.h --- a/clang/include/clang/Driver/Multilib.h +++ b/clang/include/clang/Driver/Multilib.h @@ -24,20 +24,19 @@ namespace clang { namespace driver { -/// This corresponds to a single GCC Multilib, or a segment of one controlled -/// by a command line flag. +/// This corresponds to a single GCC Multilib. /// See also MultilibBuilder for building a multilib by mutating it /// incrementally. class Multilib { public: - using flag_set = std::set; + using tag_set = std::set; using option_list = std::vector; private: std::string GCCSuffix; std::string OSSuffix; std::string IncludeSuffix; - flag_set Flags; + tag_set Tags; option_list PrintOptions; public: @@ -45,7 +44,7 @@ /// sysroot string so they must either be empty or begin with a '/' character. /// This is enforced with an assert in the constructor. Multilib(StringRef GCCSuffix = {}, StringRef OSSuffix = {}, - StringRef IncludeSuffix = {}, const flag_set &Flags = flag_set(), + StringRef IncludeSuffix = {}, const tag_set &Tags = tag_set(), const option_list &PrintOptions = option_list()); /// Get the detected GCC installation path suffix for the multi-arch @@ -60,11 +59,11 @@ /// empty const std::string &includeSuffix() const { return IncludeSuffix; } - /// Get the set of flags that indicate this multilib's use. - /// Flags are arbitrary strings although typically they will look similar to - /// command line options. A multilib is considered compatible if its flags are - /// a subset of the flags derived from the Clang command line options. - const flag_set &flags() const { return Flags; } + /// Get the set of tags that indicate this multilib's use. + /// Tags are arbitrary strings although typically they will look similar to + /// command line options. A multilib is considered compatible if its tags are + /// a subset of the tags derived from the Clang command line options. + const tag_set &tags() const { return Tags; } /// Returns the options that should be used for clang -print-multi-lib const option_list &getPrintOptions() const { return PrintOptions; } @@ -112,10 +111,10 @@ const_iterator end() const { return Multilibs.end(); } /// Select compatible variants - multilib_list select(const Multilib::flag_set &Flags) const; + multilib_list select(const Multilib::tag_set &Tags) const; /// Pick the best multilib in the set, \returns false if none are compatible - bool select(const Multilib::flag_set &Flags, Multilib &M) const; + bool select(const Multilib::tag_set &Tags, Multilib &M) const; unsigned size() const { return Multilibs.size(); } diff --git a/clang/lib/Driver/Multilib.cpp b/clang/lib/Driver/Multilib.cpp --- a/clang/lib/Driver/Multilib.cpp +++ b/clang/lib/Driver/Multilib.cpp @@ -26,10 +26,10 @@ using namespace llvm::sys; Multilib::Multilib(StringRef GCCSuffix, StringRef OSSuffix, - StringRef IncludeSuffix, const flag_set &Flags, + StringRef IncludeSuffix, const tag_set &Tags, const option_list &PrintOptions) : GCCSuffix(GCCSuffix), OSSuffix(OSSuffix), IncludeSuffix(IncludeSuffix), - Flags(Flags), PrintOptions(PrintOptions) { + Tags(Tags), PrintOptions(PrintOptions) { assert(GCCSuffix.empty() || (StringRef(GCCSuffix).front() == '/' && GCCSuffix.size() > 1)); assert(OSSuffix.empty() || @@ -53,7 +53,7 @@ } bool Multilib::operator==(const Multilib &Other) const { - if (Flags != Other.Flags) + if (Tags != Other.Tags) return false; if (osSuffix() != Other.osSuffix()) @@ -81,19 +81,19 @@ void MultilibSet::push_back(const Multilib &M) { Multilibs.push_back(M); } MultilibSet::multilib_list -MultilibSet::select(const Multilib::flag_set &Flags) const { +MultilibSet::select(const Multilib::tag_set &Tags) const { multilib_list Result; llvm::copy_if(Multilibs, std::back_inserter(Result), - [&Flags](const Multilib &M) { - return std::includes(Flags.begin(), Flags.end(), - M.flags().begin(), M.flags().end()); + [&Tags](const Multilib &M) { + return std::includes(Tags.begin(), Tags.end(), + M.tags().begin(), M.tags().end()); }); return Result; } -bool MultilibSet::select(const Multilib::flag_set &Flags, +bool MultilibSet::select(const Multilib::tag_set &Tags, Multilib &Selected) const { - multilib_list Result = select(Flags); + multilib_list Result = select(Tags); if (Result.empty()) return false; Selected = Result.back(); diff --git a/clang/lib/Driver/MultilibBuilder.cpp b/clang/lib/Driver/MultilibBuilder.cpp --- a/clang/lib/Driver/MultilibBuilder.cpp +++ b/clang/lib/Driver/MultilibBuilder.cpp @@ -87,7 +87,7 @@ Multilib MultilibBuilder::makeMultilib() const { // Derive print options from flags. - // In general, flags in the Multilib class are not required to be valid + // In general, tags in the Multilib class are not required to be valid // command line options, but for the MultilibBuilder class flags are expected // to form valid command line options when their first character is replaced // with '-'. @@ -97,7 +97,7 @@ PrintOptions.push_back(("-" + Flag.substr(1)).str()); } return Multilib(GCCSuffix, OSSuffix, IncludeSuffix, - Multilib::flag_set(Flags.begin(), Flags.end()), PrintOptions); + Multilib::tag_set(Flags.begin(), Flags.end()), PrintOptions); } MultilibSetBuilder &MultilibSetBuilder::Maybe(const MultilibBuilder &M) { diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -32,7 +32,7 @@ static bool findRISCVMultilibs(const Driver &D, const llvm::Triple &TargetTriple, const ArgList &Args, DetectedMultilibs &Result) { - Multilib::flag_set Flags; + Multilib::tag_set Flags; StringRef Arch = riscv::getRISCVArch(Args, TargetTriple); StringRef Abi = tools::riscv::getRISCVABI(Args, TargetTriple); diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/lib/Driver/ToolChains/CommonArgs.h --- a/clang/lib/Driver/ToolChains/CommonArgs.h +++ b/clang/lib/Driver/ToolChains/CommonArgs.h @@ -198,7 +198,7 @@ /// \p Flag must be a flag accepted by the driver with its leading '-' removed, // otherwise '-print-multi-lib' will not emit them correctly. void addMultilibFlag(bool Enabled, const char *const Flag, - Multilib::flag_set &Flags); + Multilib::tag_set &Flags); void addX86AlignBranchArgs(const Driver &D, const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, bool IsLTO, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1786,7 +1786,7 @@ } void tools::addMultilibFlag(bool Enabled, const char *const Flag, - Multilib::flag_set &Flags) { + Multilib::tag_set &Flags) { Flags.insert(std::string(Enabled ? "+" : "-") + Flag); } diff --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -298,7 +298,7 @@ return llvm::all_of(RD, [&](std::string P) { return !getVFS().exists(P); }); }); - Multilib::flag_set Flags; + Multilib::tag_set Flags; bool Exceptions = Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, true); addMultilibFlag(Exceptions, "fexceptions", Flags); diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -1046,7 +1046,7 @@ return Arch == llvm::Triple::msp430; } -static bool findMipsCsMultilibs(const Multilib::flag_set &Flags, +static bool findMipsCsMultilibs(const Multilib::tag_set &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) { // Check for Code Sourcery toolchain multilibs @@ -1144,7 +1144,7 @@ } static bool findMipsAndroidMultilibs(llvm::vfs::FileSystem &VFS, StringRef Path, - const Multilib::flag_set &Flags, + const Multilib::tag_set &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) { @@ -1189,7 +1189,7 @@ return false; } -static bool findMipsMuslMultilibs(const Multilib::flag_set &Flags, +static bool findMipsMuslMultilibs(const Multilib::tag_set &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) { // Musl toolchain multilibs @@ -1223,7 +1223,7 @@ return false; } -static bool findMipsMtiMultilibs(const Multilib::flag_set &Flags, +static bool findMipsMtiMultilibs(const Multilib::tag_set &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) { // CodeScape MTI toolchain v1.2 and early. @@ -1404,7 +1404,7 @@ return false; } -static bool findMipsImgMultilibs(const Multilib::flag_set &Flags, +static bool findMipsImgMultilibs(const Multilib::tag_set &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) { // CodeScape IMG toolchain v1.2 and early. @@ -1517,7 +1517,7 @@ llvm::Triple::ArchType TargetArch = TargetTriple.getArch(); - Multilib::flag_set Flags; + Multilib::tag_set Flags; addMultilibFlag(TargetTriple.isMIPS32(), "m32", Flags); addMultilibFlag(TargetTriple.isMIPS64(), "m64", Flags); addMultilibFlag(isMips16(Args), "mips16", Flags); @@ -1599,7 +1599,7 @@ .makeMultilibSet() .FilterOut(NonExistent); - Multilib::flag_set Flags; + Multilib::tag_set Flags; llvm::StringRef Arch = Args.getLastArgValue(options::OPT_march_EQ); bool IsArmArch = TargetTriple.getArch() == llvm::Triple::arm; bool IsThumbArch = TargetTriple.getArch() == llvm::Triple::thumb; @@ -1635,7 +1635,7 @@ Result.Multilibs.push_back(WithExceptions.makeMultilib()); Result.Multilibs.FilterOut(NonExistent); - Multilib::flag_set Flags; + Multilib::tag_set Flags; addMultilibFlag(Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, false), "exceptions", Flags); @@ -1658,7 +1658,7 @@ return; auto ARCHName = *Res; - Multilib::flag_set Flags; + Multilib::tag_set Flags; addMultilibFlag(TheFloatABI == tools::csky::FloatABI::Hard, "hard-fp", Flags); addMultilibFlag(TheFloatABI == tools::csky::FloatABI::SoftFP, "soft-fp", Flags); @@ -1746,7 +1746,7 @@ "/../../../../riscv32-unknown-elf/lib" + M.gccSuffix()}); }); - Multilib::flag_set Flags; + Multilib::tag_set Flags; llvm::StringSet<> Added_ABIs; StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple); StringRef MArch = tools::riscv::getRISCVArch(Args, TargetTriple); @@ -1789,7 +1789,7 @@ .makeMultilibSet() .FilterOut(NonExistent); - Multilib::flag_set Flags; + Multilib::tag_set Flags; bool IsRV64 = TargetTriple.getArch() == llvm::Triple::riscv64; StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple); @@ -1900,7 +1900,7 @@ Result.Multilibs.FilterOut(NonExistent); - Multilib::flag_set Flags; + Multilib::tag_set Flags; addMultilibFlag(TargetTriple.isArch64Bit() && !IsX32, "m64", Flags); addMultilibFlag(TargetTriple.isArch32Bit(), "m32", Flags); addMultilibFlag(TargetTriple.isArch64Bit() && IsX32, "mx32", Flags); diff --git a/clang/unittests/Driver/MultilibBuilderTest.cpp b/clang/unittests/Driver/MultilibBuilderTest.cpp --- a/clang/unittests/Driver/MultilibBuilderTest.cpp +++ b/clang/unittests/Driver/MultilibBuilderTest.cpp @@ -68,9 +68,9 @@ ASSERT_TRUE(MS.size() == 2); for (MultilibSet::const_iterator I = MS.begin(), E = MS.end(); I != E; ++I) { if (I->gccSuffix() == "/64") - ASSERT_TRUE(*I->flags().begin() == "+m64"); + ASSERT_TRUE(*I->tags().begin() == "+m64"); else if (I->gccSuffix() == "") - ASSERT_TRUE(*I->flags().begin() == "-m64"); + ASSERT_TRUE(*I->tags().begin() == "-m64"); else FAIL() << "Unrecognized gccSufix: " << I->gccSuffix(); } @@ -89,17 +89,17 @@ .Default(false)) << "Multilib " << *I << " wasn't expected"; ASSERT_TRUE(llvm::StringSwitch(I->gccSuffix()) - .Case("", is_contained(I->flags(), "-sof")) - .Case("/sof", is_contained(I->flags(), "+sof")) - .Case("/el", is_contained(I->flags(), "-sof")) - .Case("/sof/el", is_contained(I->flags(), "+sof")) + .Case("", is_contained(I->tags(), "-sof")) + .Case("/sof", is_contained(I->tags(), "+sof")) + .Case("/el", is_contained(I->tags(), "-sof")) + .Case("/sof/el", is_contained(I->tags(), "+sof")) .Default(false)) << "Multilib " << *I << " didn't have the appropriate {+,-}sof flag"; ASSERT_TRUE(llvm::StringSwitch(I->gccSuffix()) - .Case("", is_contained(I->flags(), "-EL")) - .Case("/sof", is_contained(I->flags(), "-EL")) - .Case("/el", is_contained(I->flags(), "+EL")) - .Case("/sof/el", is_contained(I->flags(), "+EL")) + .Case("", is_contained(I->tags(), "-EL")) + .Case("/sof", is_contained(I->tags(), "-EL")) + .Case("/el", is_contained(I->tags(), "+EL")) + .Case("/sof/el", is_contained(I->tags(), "+EL")) .Default(false)) << "Multilib " << *I << " didn't have the appropriate {+,-}EL flag"; } @@ -157,14 +157,14 @@ .Maybe(MultilibBuilder("64").flag("+m64")) .makeMultilibSet(); - Multilib::flag_set FlagM64 = {"+m64"}; + Multilib::tag_set FlagM64 = {"+m64"}; Multilib SelectionM64; ASSERT_TRUE(MS1.select(FlagM64, SelectionM64)) << "Flag set was {\"+m64\"}, but selection not found"; ASSERT_TRUE(SelectionM64.gccSuffix() == "/64") << "Selection picked " << SelectionM64 << " which was not expected"; - Multilib::flag_set FlagNoM64 = {"-m64"}; + Multilib::tag_set FlagNoM64 = {"-m64"}; Multilib SelectionNoM64; ASSERT_TRUE(MS1.select(FlagNoM64, SelectionNoM64)) << "Flag set was {\"-m64\"}, but selection not found"; @@ -181,7 +181,7 @@ for (unsigned I = 0; I < 4; ++I) { bool IsEL = I & 0x1; bool IsSF = I & 0x2; - Multilib::flag_set Flags; + Multilib::tag_set Flags; if (IsEL) Flags.insert("+EL"); else diff --git a/clang/unittests/Driver/MultilibTest.cpp b/clang/unittests/Driver/MultilibTest.cpp --- a/clang/unittests/Driver/MultilibTest.cpp +++ b/clang/unittests/Driver/MultilibTest.cpp @@ -35,21 +35,21 @@ TEST(MultilibTest, OpEqReflexivity3) { Multilib M1({}, {}, {}, {"+foo"}); Multilib M2({}, {}, {}, {"+foo"}); - ASSERT_TRUE(M1 == M2) << "Multilibs with the same flag should be the same"; + ASSERT_TRUE(M1 == M2) << "Multilibs with the same tag should be the same"; } TEST(MultilibTest, OpEqInequivalence1) { Multilib M1({}, {}, {}, {"+foo"}); Multilib M2({}, {}, {}, {"-foo"}); - ASSERT_FALSE(M1 == M2) << "Multilibs with conflicting flags are not the same"; + ASSERT_FALSE(M1 == M2) << "Multilibs with conflicting tags are not the same"; ASSERT_FALSE(M2 == M1) - << "Multilibs with conflicting flags are not the same (commuted)"; + << "Multilibs with conflicting tags are not the same (commuted)"; } TEST(MultilibTest, OpEqInequivalence2) { Multilib M1; Multilib M2({}, {}, {}, {"+foo"}); - ASSERT_FALSE(M1 == M2) << "Flags make Multilibs different"; + ASSERT_FALSE(M1 == M2) << "Tags make Multilibs different"; } TEST(MultilibTest, OpEqEquivalence2) { @@ -125,8 +125,8 @@ TEST(MultilibTest, Construction3) { Multilib M({}, {}, {}, {"+f1", "+f2", "-f3"}); - for (Multilib::flag_set::const_iterator I = M.flags().begin(), - E = M.flags().end(); + for (Multilib::tag_set::const_iterator I = M.tags().begin(), + E = M.tags().end(); I != E; ++I) { ASSERT_TRUE(llvm::StringSwitch(*I) .Cases("+f1", "+f2", "-f3", true) @@ -152,17 +152,17 @@ Multilib("/foo", {}, {}, {"+foo"}), Multilib("/bar", {}, {}, {"+bar"}), }); - Multilib::flag_set Flags1 = {"+foo", "-bar"}; + Multilib::tag_set Tags1 = {"+foo", "-bar"}; Multilib Selection1; - ASSERT_TRUE(MS.select(Flags1, Selection1)) - << "Flag set was {\"+foo\"}, but selection not found"; + ASSERT_TRUE(MS.select(Tags1, Selection1)) + << "Tag set was {\"+foo\"}, but selection not found"; ASSERT_TRUE(Selection1.gccSuffix() == "/foo") << "Selection picked " << Selection1 << " which was not expected"; - Multilib::flag_set Flags2 = {"+foo", "+bar"}; + Multilib::tag_set Tags2 = {"+foo", "+bar"}; Multilib Selection2; - ASSERT_TRUE(MS.select(Flags2, Selection2)) - << "Flag set was {\"+bar\"}, but selection not found"; + ASSERT_TRUE(MS.select(Tags2, Selection2)) + << "Tag set was {\"+bar\"}, but selection not found"; ASSERT_TRUE(Selection2.gccSuffix() == "/bar") << "Selection picked " << Selection2 << " which was not expected"; }