Also, when recommiting these patches, please fix the commit message, the current one is very non-descriptive.
On Fri, Dec 9, 2022 at 12:15 PM via cfe-commits <cfe-commits@lists.llvm.org> wrote: > > > Author: serge-sans-paille > Date: 2022-12-09T10:15:41+01:00 > New Revision: d881fdf72047fd18b88c6a65d0966cad542c95cd > > URL: > https://github.com/llvm/llvm-project/commit/d881fdf72047fd18b88c6a65d0966cad542c95cd > DIFF: > https://github.com/llvm/llvm-project/commit/d881fdf72047fd18b88c6a65d0966cad542c95cd.diff > > LOG: Revert "Recommit of 8ae18303f97d5dcfaecc90b4d87effb2011ed82e - part 2" > > This reverts commit 4faf00006cf989f3ae212912994022c0486a2dc4. > > Added: > > > Modified: > clang/lib/Driver/ToolChains/Gnu.cpp > lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > llvm/include/llvm/Option/OptTable.h > llvm/lib/Option/OptTable.cpp > llvm/unittests/Option/OptionMarshallingTest.cpp > llvm/utils/TableGen/OptParserEmitter.cpp > > Removed: > > > > ################################################################################ > diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp > b/clang/lib/Driver/ToolChains/Gnu.cpp > index 60d62e2b9c5c1..4621850f13772 100644 > --- a/clang/lib/Driver/ToolChains/Gnu.cpp > +++ b/clang/lib/Driver/ToolChains/Gnu.cpp > @@ -331,8 +331,8 @@ static bool getStaticPIE(const ArgList &Args, const > ToolChain &TC) { > if (HasStaticPIE && Args.hasArg(options::OPT_nopie)) { > const Driver &D = TC.getDriver(); > const llvm::opt::OptTable &Opts = D.getOpts(); > - StringRef StaticPIEName = Opts.getOptionName(options::OPT_static_pie); > - StringRef NoPIEName = Opts.getOptionName(options::OPT_nopie); > + const char *StaticPIEName = Opts.getOptionName(options::OPT_static_pie); > + const char *NoPIEName = Opts.getOptionName(options::OPT_nopie); > D.Diag(diag::err_drv_cannot_mix_options) << StaticPIEName << NoPIEName; > } > return HasStaticPIE; > > diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > index fde098840be4b..9d89148616be1 100644 > --- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > @@ -1055,7 +1055,7 @@ void > PlatformDarwin::AddClangModuleCompilationOptionsForSDKType( > // Only add the version-min options if we got a version from somewhere > if (!version.empty() && sdk_type != XcodeSDK::Type::Linux) { > #define OPTION(PREFIX, NAME, VAR, ...) > \ > - llvm::StringRef opt_##VAR = NAME; > \ > + const char *opt_##VAR = NAME; > \ > (void)opt_##VAR; > #include "clang/Driver/Options.inc" > #undef OPTION > > diff --git a/llvm/include/llvm/Option/OptTable.h > b/llvm/include/llvm/Option/OptTable.h > index 390462d762e61..07d9870f71b33 100644 > --- a/llvm/include/llvm/Option/OptTable.h > +++ b/llvm/include/llvm/Option/OptTable.h > @@ -102,7 +102,9 @@ class OptTable { > const Option getOption(OptSpecifier Opt) const; > > /// Lookup the name of the given option. > - StringRef getOptionName(OptSpecifier id) const { return getInfo(id).Name; } > + const char *getOptionName(OptSpecifier id) const { > + return getInfo(id).Name; > + } > > /// Get the kind of the given option. > unsigned getOptionKind(OptSpecifier id) const { > > diff --git a/llvm/lib/Option/OptTable.cpp b/llvm/lib/Option/OptTable.cpp > index f4426bc34b3f9..ef4873eb7f9c4 100644 > --- a/llvm/lib/Option/OptTable.cpp > +++ b/llvm/lib/Option/OptTable.cpp > @@ -36,10 +36,16 @@ namespace opt { > // Ordering on Info. The ordering is *almost* case-insensitive lexicographic, > // with an exception. '\0' comes at the end of the alphabet instead of the > // beginning (thus options precede any other options which prefix them). > -static int StrCmpOptionNameIgnoreCase(StringRef A, StringRef B) { > - size_t MinSize = std::min(A.size(), B.size()); > - if (int Res = A.substr(0, MinSize).compare_insensitive(B.substr(0, > MinSize))) > - return Res; > +static int StrCmpOptionNameIgnoreCase(const char *A, const char *B) { > + const char *X = A, *Y = B; > + char a = tolower(*A), b = tolower(*B); > + while (a == b) { > + if (a == '\0') > + return 0; > + > + a = tolower(*++X); > + b = tolower(*++Y); > + } > > if (a == '\0') // A is a prefix of B. > return 1; > @@ -54,7 +60,7 @@ static int StrCmpOptionNameIgnoreCase(StringRef A, > StringRef B) { > static int StrCmpOptionName(const char *A, const char *B) { > if (int N = StrCmpOptionNameIgnoreCase(A, B)) > return N; > - return A.compare(B); > + return strcmp(A, B); > } > > static inline bool operator<(const OptTable::Info &A, const OptTable::Info > &B) { > @@ -180,7 +186,7 @@ static unsigned matchOption(const OptTable::Info *I, > StringRef Str, > bool Matched = IgnoreCase ? Rest.startswith_insensitive(I->Name) > : Rest.startswith(I->Name); > if (Matched) > - return Prefix.size() + I->Name.size(); > + return Prefix.size() + StringRef(I->Name).size(); > } > } > return 0; > @@ -341,8 +347,8 @@ std::unique_ptr<Arg> > OptTable::parseOneArgGrouped(InputArgList &Args, > > const Info *End = OptionInfos.data() + OptionInfos.size(); > StringRef Name = Str.ltrim(PrefixChars); > - const Info *Start = > - std::lower_bound(OptionInfos.data() + FirstSearchableIndex, End, Name); > + const Info *Start = std::lower_bound( > + OptionInfos.data() + FirstSearchableIndex, End, Name.data()); > const Info *Fallback = nullptr; > unsigned Prev = Index; > > @@ -397,20 +403,19 @@ std::unique_ptr<Arg> OptTable::ParseOneArg(const > ArgList &Args, unsigned &Index, > unsigned FlagsToInclude, > unsigned FlagsToExclude) const { > unsigned Prev = Index; > - StringRef Str = Args.getArgString(Index); > + const char *Str = Args.getArgString(Index); > > // Anything that doesn't start with PrefixesUnion is an input, as is '-' > // itself. > if (isInput(PrefixesUnion, Str)) > - return std::make_unique<Arg>(getOption(InputOptionID), Str, Index++, > - Str.data()); > + return std::make_unique<Arg>(getOption(InputOptionID), Str, Index++, > Str); > > const Info *Start = OptionInfos.data() + FirstSearchableIndex; > const Info *End = OptionInfos.data() + OptionInfos.size(); > StringRef Name = StringRef(Str).ltrim(PrefixChars); > > // Search for the first next option which could be a prefix. > - Start = std::lower_bound(Start, End, Name); > + Start = std::lower_bound(Start, End, Name.data()); > > // Options are stored in sorted order, with '\0' at the end of the > // alphabet. Since the only options which can accept a string must > @@ -450,11 +455,9 @@ std::unique_ptr<Arg> OptTable::ParseOneArg(const ArgList > &Args, unsigned &Index, > // If we failed to find an option and this arg started with /, then it's > // probably an input path. > if (Str[0] == '/') > - return std::make_unique<Arg>(getOption(InputOptionID), Str, Index++, > - Str.data()); > + return std::make_unique<Arg>(getOption(InputOptionID), Str, Index++, > Str); > > - return std::make_unique<Arg>(getOption(UnknownOptionID), Str, Index++, > - Str.data()); > + return std::make_unique<Arg>(getOption(UnknownOptionID), Str, Index++, > Str); > } > > InputArgList OptTable::ParseArgs(ArrayRef<const char *> ArgArr, > > diff --git a/llvm/unittests/Option/OptionMarshallingTest.cpp > b/llvm/unittests/Option/OptionMarshallingTest.cpp > index c4d48acc7a3f9..85f0d86a86968 100644 > --- a/llvm/unittests/Option/OptionMarshallingTest.cpp > +++ b/llvm/unittests/Option/OptionMarshallingTest.cpp > @@ -6,11 +6,10 @@ > // > > //===----------------------------------------------------------------------===// > > -#include "llvm/ADT/StringRef.h" > #include "gtest/gtest.h" > > struct OptionWithMarshallingInfo { > - llvm::StringRef Name; > + const char *Name; > const char *KeyPath; > const char *ImpliedCheck; > const char *ImpliedValue; > @@ -28,10 +27,10 @@ static const OptionWithMarshallingInfo MarshallingTable[] > = { > }; > > TEST(OptionMarshalling, EmittedOrderSameAsDefinitionOrder) { > - ASSERT_STREQ(MarshallingTable[0].Name.data(), "marshalled-flag-d"); > - ASSERT_STREQ(MarshallingTable[1].Name.data(), "marshalled-flag-c"); > - ASSERT_STREQ(MarshallingTable[2].Name.data(), "marshalled-flag-b"); > - ASSERT_STREQ(MarshallingTable[3].Name.data(), "marshalled-flag-a"); > + ASSERT_STREQ(MarshallingTable[0].Name, "marshalled-flag-d"); > + ASSERT_STREQ(MarshallingTable[1].Name, "marshalled-flag-c"); > + ASSERT_STREQ(MarshallingTable[2].Name, "marshalled-flag-b"); > + ASSERT_STREQ(MarshallingTable[3].Name, "marshalled-flag-a"); > } > > TEST(OptionMarshalling, EmittedSpecifiedKeyPath) { > > diff --git a/llvm/utils/TableGen/OptParserEmitter.cpp > b/llvm/utils/TableGen/OptParserEmitter.cpp > index 375d7eda28009..9fff65ec1a2f8 100644 > --- a/llvm/utils/TableGen/OptParserEmitter.cpp > +++ b/llvm/utils/TableGen/OptParserEmitter.cpp > @@ -54,10 +54,9 @@ static std::string getOptionSpelling(const Record &R) { > > static void emitNameUsingSpelling(raw_ostream &OS, const Record &R) { > size_t PrefixLength; > - OS << "llvm::StringRef(&"; > + OS << "&"; > write_cstring(OS, StringRef(getOptionSpelling(R, PrefixLength))); > - OS << "[" << PrefixLength << "], " << R.getValueAsString("Name").size() > - << ")"; > + OS << "[" << PrefixLength << "]"; > } > > class MarshallingInfo { > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits