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 @@ -58,7 +58,7 @@ const std::string &includeSuffix() const { return IncludeSuffix; } /// Get the flags that indicate or contraindicate this multilib's use - /// All elements begin with either '+' or '-' + /// All elements begin with either '-' or '!' const flags_list &flags() const { return Flags; } LLVM_DUMP_METHOD void dump() const; diff --git a/clang/include/clang/Driver/MultilibBuilder.h b/clang/include/clang/Driver/MultilibBuilder.h --- a/clang/include/clang/Driver/MultilibBuilder.h +++ b/clang/include/clang/Driver/MultilibBuilder.h @@ -70,7 +70,7 @@ MultilibBuilder &includeSuffix(StringRef S); /// Get the flags that indicate or contraindicate this multilib's use - /// All elements begin with either '+' or '-' + /// All elements begin with either '-' or '!' const flags_list &flags() const { return Flags; } flags_list &flags() { return Flags; } 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 @@ -49,7 +49,7 @@ } OS << ";"; for (StringRef Flag : Flags) { - if (Flag.front() == '+') + if (Flag.front() == '-') OS << "@" << Flag.substr(1); } } 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 @@ -76,7 +76,7 @@ StringRef Flag(Flags[I]); llvm::StringMap::iterator SI = FlagSet.find(Flag.substr(1)); - assert(StringRef(Flag).front() == '+' || StringRef(Flag).front() == '-'); + assert(StringRef(Flag).front() == '-' || StringRef(Flag).front() == '!'); if (SI == FlagSet.end()) FlagSet[Flag.substr(1)] = I; @@ -97,10 +97,10 @@ MultilibSetBuilder &MultilibSetBuilder::Maybe(const MultilibBuilder &M) { MultilibBuilder Opposite; - // Negate any '+' flags + // Negate positive flags for (StringRef Flag : M.flags()) { - if (Flag.front() == '+') - Opposite.flags().push_back(("-" + Flag.substr(1)).str()); + if (Flag.front() == '-') + Opposite.flags().push_back(("!" + Flag.substr(1)).str()); } return Either(M, Opposite); } 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 @@ -1909,9 +1909,9 @@ Multilib::flags_list &Flags) { assert(Flag.front() == '-'); if (Enabled) { - Flags.push_back(("+" + Flag.substr(1)).str()); - } else { Flags.push_back(Flag.str()); + } else { + Flags.push_back(("!" + Flag.substr(1)).str()); } } diff --git a/clang/lib/Driver/ToolChains/OHOS.cpp b/clang/lib/Driver/ToolChains/OHOS.cpp --- a/clang/lib/Driver/ToolChains/OHOS.cpp +++ b/clang/lib/Driver/ToolChains/OHOS.cpp @@ -40,15 +40,15 @@ // -mfloat-abi=soft -mfloat-abi=softfp -mfloat-abi=hard // -mfpu=neon-vfpv4 Multilibs.push_back( - Multilib("/a7_soft", {}, {}, {"+mcpu=cortex-a7", "+mfloat-abi=soft"})); + Multilib("/a7_soft", {}, {}, {"-mcpu=cortex-a7", "-mfloat-abi=soft"})); Multilibs.push_back( Multilib("/a7_softfp_neon-vfpv4", {}, {}, - {"+mcpu=cortex-a7", "+mfloat-abi=softfp", "+mfpu=neon-vfpv4"})); + {"-mcpu=cortex-a7", "-mfloat-abi=softfp", "-mfpu=neon-vfpv4"})); Multilibs.push_back( Multilib("/a7_hard_neon-vfpv4", {}, {}, - {"+mcpu=cortex-a7", "+mfloat-abi=hard", "+mfpu=neon-vfpv4"})); + {"-mcpu=cortex-a7", "-mfloat-abi=hard", "-mfpu=neon-vfpv4"})); if (Multilibs.select(Flags, Result.SelectedMultilib)) { Result.Multilibs = Multilibs; 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 @@ -58,7 +58,7 @@ MultilibBuilder().flag(true, "-f1").flag(true, "-f2").flag(false, "-f3"); for (const std::string &A : M.flags()) { ASSERT_TRUE(llvm::StringSwitch(A) - .Cases("+f1", "+f2", "-f3", true) + .Cases("-f1", "-f2", "!f3", true) .Default(false)); } } @@ -71,9 +71,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"); - else if (I->gccSuffix() == "") ASSERT_TRUE(*I->flags().begin() == "-m64"); + else if (I->gccSuffix() == "") + ASSERT_TRUE(*I->flags().begin() == "!m64"); else FAIL() << "Unrecognized gccSufix: " << I->gccSuffix(); } @@ -92,19 +92,19 @@ .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->flags(), "!sof")) + .Case("/sof", is_contained(I->flags(), "-sof")) + .Case("/el", is_contained(I->flags(), "!sof")) + .Case("/sof/el", is_contained(I->flags(), "-sof")) .Default(false)) - << "Multilib " << *I << " didn't have the appropriate {+,-}sof flag"; + << "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->flags(), "!EL")) + .Case("/sof", is_contained(I->flags(), "!EL")) + .Case("/el", is_contained(I->flags(), "-EL")) + .Case("/sof/el", is_contained(I->flags(), "-EL")) .Default(false)) - << "Multilib " << *I << " didn't have the appropriate {+,-}EL flag"; + << "Multilib " << *I << " didn't have the appropriate {-,!}EL flag"; } } @@ -160,17 +160,17 @@ .Maybe(MultilibBuilder("64").flag(true, "-m64")) .makeMultilibSet(); - Multilib::flags_list FlagM64 = {"+m64"}; + Multilib::flags_list FlagM64 = {"-m64"}; Multilib SelectionM64; ASSERT_TRUE(MS1.select(FlagM64, SelectionM64)) - << "Flag set was {\"+m64\"}, but selection not found"; + << "Flag set was {\"-m64\"}, but selection not found"; ASSERT_TRUE(SelectionM64.gccSuffix() == "/64") << "Selection picked " << SelectionM64 << " which was not expected"; - Multilib::flags_list FlagNoM64 = {"-m64"}; + Multilib::flags_list FlagNoM64 = {"!m64"}; Multilib SelectionNoM64; ASSERT_TRUE(MS1.select(FlagNoM64, SelectionNoM64)) - << "Flag set was {\"-m64\"}, but selection not found"; + << "Flag set was {\"!m64\"}, but selection not found"; ASSERT_TRUE(SelectionNoM64.gccSuffix() == "") << "Selection picked " << SelectionNoM64 << " which was not expected"; } @@ -186,19 +186,19 @@ bool IsSF = I & 0x2; Multilib::flags_list Flags; if (IsEL) - Flags.push_back("+EL"); - else Flags.push_back("-EL"); + else + Flags.push_back("!EL"); if (IsSF) - Flags.push_back("+SF"); - else Flags.push_back("-SF"); + else + Flags.push_back("!SF"); Multilib Selection; ASSERT_TRUE(MS2.select(Flags, Selection)) - << "Selection failed for " << (IsEL ? "+EL" : "-EL") << " " - << (IsSF ? "+SF" : "-SF"); + << "Selection failed for " << (IsEL ? "-EL" : "!EL") << " " + << (IsSF ? "-SF" : "!SF"); std::string Suffix; if (IsEL)