llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lld @llvm/pr-subscribers-platform-windows @llvm/pr-subscribers-flang-driver Author: Kazu Hirata (kazutakahirata) <details> <summary>Changes</summary> I'm planning to remove StringRef::equals in favor of StringRef::operator==. - StringRef::operator==/!= outnumber StringRef::equals by a factor of 276 under llvm-project/ in terms of their usage. - The elimination of StringRef::equals brings StringRef closer to std::string_view, which has operator== but not equals. - S == "foo" is more readable than S.equals("foo"), especially for !Long.Expression.equals("str") vs Long.Expression != "str". --- Full diff: https://github.com/llvm/llvm-project/pull/91864.diff 19 Files Affected: - (modified) bolt/lib/Profile/DataAggregator.cpp (+1-1) - (modified) bolt/lib/Profile/DataReader.cpp (+1-2) - (modified) bolt/lib/Rewrite/DWARFRewriter.cpp (+5-5) - (modified) bolt/lib/Rewrite/SDTRewriter.cpp (+1-1) - (modified) clang-tools-extra/clang-tidy/ClangTidyCheck.cpp (+1-1) - (modified) clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp (+2-2) - (modified) clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp (+1-1) - (modified) clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp (+1-1) - (modified) clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp (+2-2) - (modified) clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp (+1-2) - (modified) clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp (+1-1) - (modified) flang/lib/Frontend/CompilerInvocation.cpp (+2-2) - (modified) flang/lib/Optimizer/Builder/IntrinsicCall.cpp (+1-1) - (modified) flang/lib/Optimizer/CodeGen/CodeGen.cpp (+4-4) - (modified) lld/COFF/DebugTypes.cpp (+1-1) - (modified) lld/ELF/InputSection.cpp (+1-1) - (modified) lld/ELF/Writer.cpp (+1-1) - (modified) lld/MachO/Driver.cpp (+1-1) - (modified) lld/wasm/InputChunks.cpp (+2-2) ``````````diff diff --git a/bolt/lib/Profile/DataAggregator.cpp b/bolt/lib/Profile/DataAggregator.cpp index 2f6380e186e1d..f199d499a180f 100644 --- a/bolt/lib/Profile/DataAggregator.cpp +++ b/bolt/lib/Profile/DataAggregator.cpp @@ -1999,7 +1999,7 @@ std::error_code DataAggregator::parseMMapEvents() { std::pair<StringRef, MMapInfo> FileMMapInfo = FileMMapInfoRes.get(); if (FileMMapInfo.second.PID == -1) continue; - if (FileMMapInfo.first.equals("(deleted)")) + if (FileMMapInfo.first == "(deleted)") continue; // Consider only the first mapping of the file for any given PID diff --git a/bolt/lib/Profile/DataReader.cpp b/bolt/lib/Profile/DataReader.cpp index 67f357fe4d3f0..b2511ba103998 100644 --- a/bolt/lib/Profile/DataReader.cpp +++ b/bolt/lib/Profile/DataReader.cpp @@ -1205,8 +1205,7 @@ std::error_code DataReader::parse() { // Add entry data for branches to another function or branches // to entry points (including recursive calls) - if (BI.To.IsSymbol && - (!BI.From.Name.equals(BI.To.Name) || BI.To.Offset == 0)) { + if (BI.To.IsSymbol && (BI.From.Name != BI.To.Name || BI.To.Offset == 0)) { I = GetOrCreateFuncEntry(BI.To.Name); I->second.EntryData.emplace_back(std::move(BI)); } diff --git a/bolt/lib/Rewrite/DWARFRewriter.cpp b/bolt/lib/Rewrite/DWARFRewriter.cpp index 26e4889faadac..9d4297f913f3a 100644 --- a/bolt/lib/Rewrite/DWARFRewriter.cpp +++ b/bolt/lib/Rewrite/DWARFRewriter.cpp @@ -1550,7 +1550,7 @@ CUOffsetMap DWARFRewriter::finalizeTypeSections(DIEBuilder &DIEBlder, for (const SectionRef &Section : Obj->sections()) { StringRef Contents = cantFail(Section.getContents()); StringRef Name = cantFail(Section.getName()); - if (Name.equals(".debug_types")) + if (Name == ".debug_types") BC.registerOrUpdateNoteSection(".debug_types", copyByteArray(Contents), Contents.size()); } @@ -1633,10 +1633,10 @@ void DWARFRewriter::finalizeDebugSections( for (const SectionRef &Secs : Obj->sections()) { StringRef Contents = cantFail(Secs.getContents()); StringRef Name = cantFail(Secs.getName()); - if (Name.equals(".debug_abbrev")) { + if (Name == ".debug_abbrev") { BC.registerOrUpdateNoteSection(".debug_abbrev", copyByteArray(Contents), Contents.size()); - } else if (Name.equals(".debug_info")) { + } else if (Name == ".debug_info") { BC.registerOrUpdateNoteSection(".debug_info", copyByteArray(Contents), Contents.size()); } @@ -1771,7 +1771,7 @@ std::optional<StringRef> updateDebugData( }; switch (SectionIter->second.second) { default: { - if (!SectionName.equals("debug_str.dwo")) + if (SectionName != "debug_str.dwo") errs() << "BOLT-WARNING: unsupported debug section: " << SectionName << "\n"; return SectionContents; @@ -1959,7 +1959,7 @@ void DWARFRewriter::updateDWP(DWARFUnit &CU, continue; } - if (SectionName.equals("debug_str.dwo")) { + if (SectionName == "debug_str.dwo") { CurStrSection = OutData; } else { // Since handleDebugDataPatching returned true, we already know this is diff --git a/bolt/lib/Rewrite/SDTRewriter.cpp b/bolt/lib/Rewrite/SDTRewriter.cpp index cc663b28990f8..a3928c554ad66 100644 --- a/bolt/lib/Rewrite/SDTRewriter.cpp +++ b/bolt/lib/Rewrite/SDTRewriter.cpp @@ -87,7 +87,7 @@ void SDTRewriter::readSection() { StringRef Name = DE.getCStr(&Offset); - if (!Name.equals("stapsdt")) + if (Name != "stapsdt") errs() << "BOLT-WARNING: SDT note name \"" << Name << "\" is not expected\n"; diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp index 710b361e16c0a..6028bb2258136 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp @@ -171,7 +171,7 @@ std::optional<int64_t> ClangTidyCheck::OptionsView::getEnumInt( if (IgnoreCase) { if (Value.equals_insensitive(NameAndEnum.second)) return NameAndEnum.first; - } else if (Value.equals(NameAndEnum.second)) { + } else if (Value == NameAndEnum.second) { return NameAndEnum.first; } else if (Value.equals_insensitive(NameAndEnum.second)) { Closest = NameAndEnum.second; diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index e7be8134781e4..36687a8e761e8 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp @@ -25,8 +25,8 @@ AST_MATCHER(QualType, isEnableIf) { const NamedDecl *TypeDecl = Spec->getTemplateName().getAsTemplateDecl()->getTemplatedDecl(); return TypeDecl->isInStdNamespace() && - (TypeDecl->getName().equals("enable_if") || - TypeDecl->getName().equals("enable_if_t")); + (TypeDecl->getName() == "enable_if" || + TypeDecl->getName() == "enable_if_t"); }; const Type *BaseType = Node.getTypePtr(); // Case: pointer or reference to enable_if. diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp index 3229e302eb432..a1786ba5acfdf 100644 --- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp @@ -421,7 +421,7 @@ getContainerFromBeginEndCall(const Expr *Init, bool IsBegin, bool *IsArrow, return {}; if (IsReverse && !Call->Name.consume_back("r")) return {}; - if (!Call->Name.empty() && !Call->Name.equals("c")) + if (!Call->Name.empty() && Call->Name != "c") return {}; return std::make_pair(Call->Container, Call->CallKind); } diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index 27a12bfc58068..c3208392df156 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -1358,7 +1358,7 @@ IdentifierNamingCheck::getFailureInfo( std::replace(KindName.begin(), KindName.end(), '_', ' '); std::string Fixup = fixupWithStyle(Type, Name, Style, HNOption, ND); - if (StringRef(Fixup).equals(Name)) { + if (StringRef(Fixup) == Name) { if (!IgnoreFailedSplit) { LLVM_DEBUG(Location.print(llvm::dbgs(), SM); llvm::dbgs() diff --git a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp index 3eb80019ae753..18420d0c8488d 100644 --- a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp @@ -138,11 +138,11 @@ static bool applyAbbreviationHeuristic( const llvm::StringMap<std::string> &AbbreviationDictionary, StringRef Arg, StringRef Param) { if (AbbreviationDictionary.contains(Arg) && - Param.equals(AbbreviationDictionary.lookup(Arg))) + Param == AbbreviationDictionary.lookup(Arg)) return true; if (AbbreviationDictionary.contains(Param) && - Arg.equals(AbbreviationDictionary.lookup(Param))) + Arg == AbbreviationDictionary.lookup(Param)) return true; return false; diff --git a/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp b/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp index a44720c47eca2..0fa54b3847ebc 100644 --- a/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp +++ b/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp @@ -88,8 +88,7 @@ determineIncludeKind(StringRef CanonicalFile, StringRef IncludeFile, if (FileCopy.consume_front(Parts.first) && FileCopy.consume_back(Parts.second)) { // Determine the kind of this inclusion. - if (FileCopy.equals("/internal/") || - FileCopy.equals("/proto/")) { + if (FileCopy == "/internal/" || FileCopy == "/proto/") { return IncludeSorter::IK_MainTUInclude; } } diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp index f5ed617365403..e811f5519de2c 100644 --- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp +++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp @@ -86,7 +86,7 @@ static const NamedDecl *findDecl(const RecordDecl &RecDecl, StringRef DeclName) { for (const Decl *D : RecDecl.decls()) { if (const auto *ND = dyn_cast<NamedDecl>(D)) { - if (ND->getDeclName().isIdentifier() && ND->getName().equals(DeclName)) + if (ND->getDeclName().isIdentifier() && ND->getName() == DeclName) return ND; } } diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index 4318286e74152..db7fd3cccc7a2 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -883,7 +883,7 @@ static bool parseDialectArgs(CompilerInvocation &res, llvm::opt::ArgList &args, // -x cuda auto language = args.getLastArgValue(clang::driver::options::OPT_x); - if (language.equals("cuda")) { + if (language == "cuda") { res.getFrontendOpts().features.Enable( Fortran::common::LanguageFeature::CUDA); } @@ -986,7 +986,7 @@ static bool parseDialectArgs(CompilerInvocation &res, llvm::opt::ArgList &args, if (args.hasArg(clang::driver::options::OPT_std_EQ)) { auto standard = args.getLastArgValue(clang::driver::options::OPT_std_EQ); // We only allow f2018 as the given standard - if (standard.equals("f2018")) { + if (standard == "f2018") { res.setEnableConformanceChecks(); } else { const unsigned diagID = diff --git a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp index dcbbc39b84eaa..58064d23eb080 100644 --- a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp +++ b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp @@ -1607,7 +1607,7 @@ static bool isIntrinsicModuleProcedure(llvm::StringRef name) { static bool isCoarrayIntrinsic(llvm::StringRef name) { return name.starts_with("atomic_") || name.starts_with("co_") || name.contains("image") || name.ends_with("cobound") || - name.equals("team_number"); + name == "team_number"; } /// Return the generic name of an intrinsic module procedure specific name. diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp index b4705aa479925..21154902d23f8 100644 --- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp +++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp @@ -3497,7 +3497,7 @@ class RenameMSVCLibmCallees rewriter.startOpModification(op); auto callee = op.getCallee(); if (callee) - if (callee->equals("hypotf")) + if (*callee == "hypotf") op.setCalleeAttr(mlir::SymbolRefAttr::get(op.getContext(), "_hypotf")); rewriter.finalizeOpModification(op); @@ -3514,7 +3514,7 @@ class RenameMSVCLibmFuncs matchAndRewrite(mlir::LLVM::LLVMFuncOp op, mlir::PatternRewriter &rewriter) const override { rewriter.startOpModification(op); - if (op.getSymName().equals("hypotf")) + if (op.getSymName() == "hypotf") op.setSymNameAttr(rewriter.getStringAttr("_hypotf")); rewriter.finalizeOpModification(op); return mlir::success(); @@ -3629,11 +3629,11 @@ class FIRToLLVMLowering auto callee = op.getCallee(); if (!callee) return true; - return !callee->equals("hypotf"); + return *callee != "hypotf"; }); target.addDynamicallyLegalOp<mlir::LLVM::LLVMFuncOp>( [](mlir::LLVM::LLVMFuncOp op) { - return !op.getSymName().equals("hypotf"); + return op.getSymName() != "hypotf"; }); } diff --git a/lld/COFF/DebugTypes.cpp b/lld/COFF/DebugTypes.cpp index a4c808e4c9a04..7689ad163a657 100644 --- a/lld/COFF/DebugTypes.cpp +++ b/lld/COFF/DebugTypes.cpp @@ -465,7 +465,7 @@ static bool equalsPath(StringRef path1, StringRef path2) { #if defined(_WIN32) return path1.equals_insensitive(path2); #else - return path1.equals(path2); + return path1 == path2; #endif } diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp index fa48552b8f7a1..fa81611e7c9e7 100644 --- a/lld/ELF/InputSection.cpp +++ b/lld/ELF/InputSection.cpp @@ -1128,7 +1128,7 @@ void InputSectionBase::adjustSplitStackFunctionPrologues(uint8_t *buf, for (Relocation &rel : relocs()) { // Ignore calls into the split-stack api. if (rel.sym->getName().starts_with("__morestack")) { - if (rel.sym->getName().equals("__morestack")) + if (rel.sym->getName() == "__morestack") morestackCalls.push_back(&rel); continue; } diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 240c16a4d8f69..e400ed2ae945b 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -577,7 +577,7 @@ static bool isRelroSection(const OutputSection *sec) { // for accessing .got as well, .got and .toc need to be close enough in the // virtual address space. Usually, .toc comes just after .got. Since we place // .got into RELRO, .toc needs to be placed into RELRO too. - if (sec->name.equals(".toc")) + if (sec->name == ".toc") return true; // .got.plt contains pointers to external function symbols. They are diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp index 65de531db04b7..d4d8d53d69eea 100644 --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -1507,7 +1507,7 @@ bool link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS, StringRef sep = sys::path::get_separator(); // real_path removes trailing slashes as part of the normalization, but // these are meaningful for our text based stripping - if (config->osoPrefix.equals(".") || config->osoPrefix.ends_with(sep)) + if (config->osoPrefix == "." || config->osoPrefix.ends_with(sep)) expanded += sep; config->osoPrefix = saver().save(expanded.str()); } diff --git a/lld/wasm/InputChunks.cpp b/lld/wasm/InputChunks.cpp index 2074dd59c1dde..975225974aff6 100644 --- a/lld/wasm/InputChunks.cpp +++ b/lld/wasm/InputChunks.cpp @@ -519,8 +519,8 @@ uint64_t InputSection::getTombstoneForSection(StringRef name) { // If they occur in DWARF debug symbols, we want to change the pc of the // function to -1 to avoid overlapping with a valid range. However for the // debug_ranges and debug_loc sections that would conflict with the existing - // meaning of -1 so we use -2. - if (name.equals(".debug_ranges") || name.equals(".debug_loc")) + // meaning of -1 so we use -2. + if (name == ".debug_ranges" || name == ".debug_loc") return UINT64_C(-2); if (name.starts_with(".debug_")) return UINT64_C(-1); `````````` </details> https://github.com/llvm/llvm-project/pull/91864 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits