[clang-tools-extra] [clang-tidy] Avoid repeated hash lookups (NFC) (PR #112074)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/112074 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #112071)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/112071 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Avoid repeated hash lookups (NFC) (PR #112074)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/112074 None >From 997f530747ecb90b4ac26e61608d2986a5c74c7e Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 11 Oct 2024 09:06:03 -0700 Subject: [PATCH] [clang-tidy] Avoid repeated hash lookups (NFC) --- .../clang-tidy/misc/ConfusableIdentifierCheck.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang-tools-extra/clang-tidy/misc/ConfusableIdentifierCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConfusableIdentifierCheck.cpp index 5b1b1cd152fffb..6df565c9a9d691 100644 --- a/clang-tools-extra/clang-tidy/misc/ConfusableIdentifierCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ConfusableIdentifierCheck.cpp @@ -137,11 +137,11 @@ static bool mayShadow(const NamedDecl *ND0, const ConfusableIdentifierCheck::ContextInfo * ConfusableIdentifierCheck::getContextInfo(const DeclContext *DC) { const DeclContext *PrimaryContext = DC->getPrimaryContext(); - auto It = ContextInfos.find(PrimaryContext); - if (It != ContextInfos.end()) + auto [It, Inserted] = ContextInfos.try_emplace(PrimaryContext); + if (!Inserted) return &It->second; - ContextInfo &Info = ContextInfos[PrimaryContext]; + ContextInfo &Info = It->second; Info.PrimaryContext = PrimaryContext; Info.NonTransparentContext = PrimaryContext; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #112071)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/112071 None >From 72511061e8a3691e0656ce8d0f69f489313eb609 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 11 Oct 2024 09:06:55 -0700 Subject: [PATCH] [Sema] Avoid repeated hash lookups (NFC) --- clang/lib/Sema/SemaTemplateDeduction.cpp | 9 - 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index aa62cfa7dcbd17..7cfb8d687c796a 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -4057,11 +4057,10 @@ TemplateDeductionResult Sema::FinishTemplateArgumentDeduction( // keep track of these diagnostics. They'll be emitted if this specialization // is actually used. if (Info.diag_begin() != Info.diag_end()) { -SuppressedDiagnosticsMap::iterator - Pos = SuppressedDiagnostics.find(Specialization->getCanonicalDecl()); -if (Pos == SuppressedDiagnostics.end()) -SuppressedDiagnostics[Specialization->getCanonicalDecl()] - .append(Info.diag_begin(), Info.diag_end()); +auto [Pos, Inserted] = +SuppressedDiagnostics.try_emplace(Specialization->getCanonicalDecl()); +if (Inserted) + Pos->second.append(Info.diag_begin(), Info.diag_end()); } return TemplateDeductionResult::Success; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clangd] Simplify code with *Map::operator[] (NFC) (PR #111939)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111939 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clangd] Simplify code with *Map::operator[] (NFC) (PR #111939)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111939 None >From aeebcbd92118161c1a75aefa369ba11f40f79ddd Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 10 Oct 2024 08:37:40 -0700 Subject: [PATCH] [clangd] Simplify code with *Map::operator[] (NFC) --- clang-tools-extra/clangd/Headers.cpp | 4 ++-- clang-tools-extra/clangd/XRefs.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clangd/Headers.cpp b/clang-tools-extra/clangd/Headers.cpp index 75f8668e7bef06..b537417bd10568 100644 --- a/clang-tools-extra/clangd/Headers.cpp +++ b/clang-tools-extra/clangd/Headers.cpp @@ -75,8 +75,8 @@ class IncludeStructure::RecordHeaders : public PPCallbacks { IDs.push_back(HID); } } - Out->MainFileIncludesBySpelling.try_emplace(Inc.Written) - .first->second.push_back(Out->MainFileIncludes.size() - 1); + Out->MainFileIncludesBySpelling[Inc.Written].push_back( + Out->MainFileIncludes.size() - 1); } // Record include graph (not just for main-file includes) diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp index f94cadeffaa298..b34aba603b5306 100644 --- a/clang-tools-extra/clangd/XRefs.cpp +++ b/clang-tools-extra/clangd/XRefs.cpp @@ -2282,8 +2282,7 @@ incomingCalls(const CallHierarchyItem &Item, const SymbolIndex *Index) { elog("incomingCalls failed to convert location: {0}", Loc.takeError()); return; } -auto It = CallsIn.try_emplace(R.Container, std::vector{}).first; -It->second.push_back(Loc->range); +CallsIn[R.Container].push_back(Loc->range); ContainerLookup.IDs.insert(R.Container); }); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Avoid repeated hash lookups (NFC) (PR #111785)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111785 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-change-namespace] Avoid repeated hash lookups (NFC) (PR #111784)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111784 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-apply-replacements] Avoid repeated hash lookups (NFC) (PR #111783)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111783 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Avoid repeated hash lookups (NFC) (PR #111785)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111785 None >From 14e7f5dd2176e4fbde0fd699e5a7088239d8faf0 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 9 Oct 2024 06:52:33 -0700 Subject: [PATCH] [clang-tidy] Avoid repeated hash lookups (NFC) --- .../clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp index d77df50f8fea24..080454287f28b5 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp @@ -146,12 +146,13 @@ void ForwardDeclarationNamespaceCheck::onEndOfTranslationUnit() { } // Check if a definition in another namespace exists. const auto DeclName = CurDecl->getName(); - if (!DeclNameToDefinitions.contains(DeclName)) { + auto It = DeclNameToDefinitions.find(DeclName); + if (It == DeclNameToDefinitions.end()) { continue; // No definition in this translation unit, we can skip it. } // Make a warning for each definition with the same name (in other // namespaces). - const auto &Definitions = DeclNameToDefinitions[DeclName]; + const auto &Definitions = It->second; for (const auto *Def : Definitions) { diag(CurDecl->getLocation(), "no definition found for %0, but a definition with " ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-change-namespace] Avoid repeated hash lookups (NFC) (PR #111784)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111784 None >From faf633c5d8a3f255aca95d80bbc4e4e2eede84e3 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 9 Oct 2024 06:51:41 -0700 Subject: [PATCH] [clang-change-namespace] Avoid repeated hash lookups (NFC) --- clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp b/clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp index 879c0d26d472a8..850df7daf5c038 100644 --- a/clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp +++ b/clang-tools-extra/clang-change-namespace/ChangeNamespace.cpp @@ -606,9 +606,8 @@ void ChangeNamespaceTool::run( Result.Nodes.getNodeAs("func_ref")) { // If this reference has been processed as a function call, we do not // process it again. -if (ProcessedFuncRefs.count(FuncRef)) +if (!ProcessedFuncRefs.insert(FuncRef).second) return; -ProcessedFuncRefs.insert(FuncRef); const auto *Func = Result.Nodes.getNodeAs("func_decl"); assert(Func); const auto *Context = Result.Nodes.getNodeAs("dc"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-apply-replacements] Avoid repeated hash lookups (NFC) (PR #111783)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111783 None >From f64ab109642e2fa26b6fc58bb84416787996c685 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 9 Oct 2024 06:51:06 -0700 Subject: [PATCH] [clang-apply-replacements] Avoid repeated hash lookups (NFC) --- .../lib/Tooling/ApplyReplacements.cpp | 7 ++- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp b/clang-tools-extra/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp index 9e0da82dfd3806..b895075e4f31cc 100644 --- a/clang-tools-extra/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp +++ b/clang-tools-extra/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp @@ -148,11 +148,8 @@ groupReplacements(const TUReplacements &TUs, const TUDiagnostics &TUDs, if (auto Entry = SM.getFileManager().getOptionalFileRef(Path)) { if (SourceTU) { -auto &Replaces = DiagReplacements[*Entry]; -auto It = Replaces.find(R); -if (It == Replaces.end()) - Replaces.emplace(R, SourceTU); -else if (It->second != SourceTU) +auto [It, Inserted] = DiagReplacements[*Entry].try_emplace(R, SourceTU); +if (!Inserted && It->second != SourceTU) // This replacement is a duplicate of one suggested by another TU. return; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Avoid repeated hash lookups (NFC) (PR #111628)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111628 None >From 04ac47ef9952eaeb4e9d8ef7f7b96cb050865a3a Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Tue, 8 Oct 2024 20:42:13 -0700 Subject: [PATCH] [clang-tidy] Avoid repeated hash lookups (NFC) --- .../clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp index 9c3c7cc70c187b..225e867c9b24f7 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp @@ -474,10 +474,8 @@ void ProTypeMemberInitCheck::checkMissingMemberInitializer( // It only includes fields that have not been fixed SmallPtrSet AllFieldsToInit; forEachField(ClassDecl, FieldsToInit, [&](const FieldDecl *F) { -if (!HasRecordClassMemberSet.contains(F)) { +if (HasRecordClassMemberSet.insert(F).second) AllFieldsToInit.insert(F); - HasRecordClassMemberSet.insert(F); -} }); if (FieldsToInit.empty()) return; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Tooling] Avoid repeated hash lookups (NFC) (PR #111469)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111469 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Driver] Avoid repeated hash lookups (NFC) (PR #111468)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111468 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111467)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111467 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Tooling] Avoid repeated hash lookups (NFC) (PR #111469)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111469 None >From 63f32da83241327082af3baa57f59480d9825e47 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 7 Oct 2024 07:06:16 -0700 Subject: [PATCH] [Tooling] Avoid repeated hash lookups (NFC) --- clang/lib/Tooling/Inclusions/HeaderIncludes.cpp | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp b/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp index 4313da66efc0b7..0cb96097415ea8 100644 --- a/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp +++ b/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp @@ -320,12 +320,9 @@ HeaderIncludes::HeaderIncludes(StringRef FileName, StringRef Code, // - If CategoryEndOffset[Priority] isn't set, use the next higher value // that is set, up to CategoryEndOffset[Highest]. auto Highest = Priorities.begin(); - if (CategoryEndOffsets.find(*Highest) == CategoryEndOffsets.end()) { -if (FirstIncludeOffset >= 0) - CategoryEndOffsets[*Highest] = FirstIncludeOffset; -else - CategoryEndOffsets[*Highest] = MinInsertOffset; - } + auto [It, Inserted] = CategoryEndOffsets.try_emplace(*Highest); + if (Inserted) +It->second = FirstIncludeOffset >= 0 ? FirstIncludeOffset : MinInsertOffset; // By this point, CategoryEndOffset[Highest] is always set appropriately: // - to an appropriate location before/after existing #includes, or // - to right after the header guard, or ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Driver] Avoid repeated hash lookups (NFC) (PR #111468)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111468 None >From 9bc29851603347edbc4324ccbdb4fef47a1c2626 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 7 Oct 2024 07:06:51 -0700 Subject: [PATCH] [Driver] Avoid repeated hash lookups (NFC) --- clang/lib/Driver/MultilibBuilder.cpp | 6 ++ 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/clang/lib/Driver/MultilibBuilder.cpp b/clang/lib/Driver/MultilibBuilder.cpp index 15adf501778093..4b365a164c4586 100644 --- a/clang/lib/Driver/MultilibBuilder.cpp +++ b/clang/lib/Driver/MultilibBuilder.cpp @@ -74,13 +74,11 @@ bool MultilibBuilder::isValid() const { llvm::StringMap FlagSet; for (unsigned I = 0, N = Flags.size(); I != N; ++I) { StringRef Flag(Flags[I]); -llvm::StringMap::iterator SI = FlagSet.find(Flag.substr(1)); +auto [SI, Inserted] = FlagSet.try_emplace(Flag.substr(1), I); assert(StringRef(Flag).front() == '-' || StringRef(Flag).front() == '!'); -if (SI == FlagSet.end()) - FlagSet[Flag.substr(1)] = I; -else if (Flags[I] != Flags[SI->getValue()]) +if (!Inserted && Flags[I] != Flags[SI->getValue()]) return false; } return true; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111467)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111467 None >From fd6654f61025f4dc5b38a02d5c4ec3b52fe2c726 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 7 Oct 2024 07:04:14 -0700 Subject: [PATCH] [Basic] Avoid repeated hash lookups (NFC) --- clang/include/clang/Basic/PlistSupport.h | 11 --- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/clang/include/clang/Basic/PlistSupport.h b/clang/include/clang/Basic/PlistSupport.h index d52d196019cf84..1814130f1d2cb6 100644 --- a/clang/include/clang/Basic/PlistSupport.h +++ b/clang/include/clang/Basic/PlistSupport.h @@ -26,13 +26,10 @@ using FIDMap = llvm::DenseMap; inline unsigned AddFID(FIDMap &FIDs, SmallVectorImpl &V, FileID FID) { - FIDMap::iterator I = FIDs.find(FID); - if (I != FIDs.end()) -return I->second; - unsigned NewValue = V.size(); - FIDs[FID] = NewValue; - V.push_back(FID); - return NewValue; + auto [I, Inserted] = FIDs.try_emplace(FID, V.size()); + if (Inserted) +V.push_back(FID); + return I->second; } inline unsigned AddFID(FIDMap &FIDs, SmallVectorImpl &V, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Avoid repeated hash lookups (NFC) (PR #111327)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111327 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Avoid repeated hash lookups (NFC) (PR #111327)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111327 Here I'm splitting up the existing "if" statement into two. Mixing hasDefinition() and insert() in one "if" condition would be extremely confusing as hasDefinition() doesn't change anything while insert() does. >From f589b84590745c8709f1d9ce0e18c5e13746a27f Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sun, 6 Oct 2024 09:25:35 -0700 Subject: [PATCH] [AST] Avoid repeated hash lookups (NFC) Here I'm splitting up the existing "if" statement into two. Mixing hasDefinition() and insert() in one "if" condition would be extremely confusing as hasDefinition() doesn't change anything while insert() does. --- clang/lib/AST/CXXInheritance.cpp | 8 +++- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/clang/lib/AST/CXXInheritance.cpp b/clang/lib/AST/CXXInheritance.cpp index 25de2a20a7f3b7..eb265a872c1259 100644 --- a/clang/lib/AST/CXXInheritance.cpp +++ b/clang/lib/AST/CXXInheritance.cpp @@ -259,12 +259,10 @@ bool CXXBasePaths::lookupInBases(ASTContext &Context, BaseRecord = TD->getTemplatedDecl(); } if (BaseRecord) { - if (!BaseRecord->hasDefinition() || - VisitedDependentRecords.count(BaseRecord)) { + if (!BaseRecord->hasDefinition()) +BaseRecord = nullptr; + else if (!VisitedDependentRecords.insert(BaseRecord).second) BaseRecord = nullptr; - } else { -VisitedDependentRecords.insert(BaseRecord); - } } } else { BaseRecord = cast( ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clangd] Simplify ternary expressions with std::optional::value_or (NFC) (PR #111309)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111309 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clangd] Simplify ternary expressions with std::optional::value_or (NFC) (PR #111309)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111309 None >From 8ada96e7b8f1f3778288f1c9b1bdf9b72ddcecac Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 4 Oct 2024 10:00:28 -0700 Subject: [PATCH] [clangd] Simplify ternary expressions with std::optional::value_or (NFC) --- clang-tools-extra/clangd/FindSymbols.cpp| 2 +- clang-tools-extra/clangd/index/MemIndex.cpp | 2 +- clang-tools-extra/clangd/index/dex/Dex.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/clang-tools-extra/clangd/FindSymbols.cpp b/clang-tools-extra/clangd/FindSymbols.cpp index cf2f8b62a28419..84bcbc1f2ddd3f 100644 --- a/clang-tools-extra/clangd/FindSymbols.cpp +++ b/clang-tools-extra/clangd/FindSymbols.cpp @@ -111,7 +111,7 @@ getWorkspaceSymbols(llvm::StringRef Query, int Limit, *Req.Limit *= 5; } TopN Top( - Req.Limit ? *Req.Limit : std::numeric_limits::max()); + Req.Limit.value_or(std::numeric_limits::max())); FuzzyMatcher Filter(Req.Query); Index->fuzzyFind(Req, [HintPath, &Top, &Filter, AnyScope = Req.AnyScope, diff --git a/clang-tools-extra/clangd/index/MemIndex.cpp b/clang-tools-extra/clangd/index/MemIndex.cpp index fe0ee873018b37..2665d46b97d839 100644 --- a/clang-tools-extra/clangd/index/MemIndex.cpp +++ b/clang-tools-extra/clangd/index/MemIndex.cpp @@ -31,7 +31,7 @@ bool MemIndex::fuzzyFind( trace::Span Tracer("MemIndex fuzzyFind"); TopN> Top( - Req.Limit ? *Req.Limit : std::numeric_limits::max()); + Req.Limit.value_or(std::numeric_limits::max())); FuzzyMatcher Filter(Req.Query); bool More = false; for (const auto &Pair : Index) { diff --git a/clang-tools-extra/clangd/index/dex/Dex.cpp b/clang-tools-extra/clangd/index/dex/Dex.cpp index 19dc3080f9f897..b7d3063e19b499 100644 --- a/clang-tools-extra/clangd/index/dex/Dex.cpp +++ b/clang-tools-extra/clangd/index/dex/Dex.cpp @@ -264,7 +264,7 @@ bool Dex::fuzzyFind(const FuzzyFindRequest &Req, return LHS.second > RHS.second; }; TopN Top( - Req.Limit ? *Req.Limit : std::numeric_limits::max(), Compare); + Req.Limit.value_or(std::numeric_limits::max()), Compare); for (const auto &IDAndScore : IDAndScores) { const DocID SymbolDocID = IDAndScore.first; const auto *Sym = Symbols[SymbolDocID]; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [ByteCode] Avoid repeated hash lookups (NFC) (PR #111273)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111273 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [StaticAnalyzer] Avoid repeated hash lookups (NFC) (PR #111272)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111272 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [ByteCode] Avoid repeated hash lookups (NFC) (PR #111273)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111273 None >From 48c833ccac40522a563f6c1610eef409628a45d9 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 5 Oct 2024 10:22:58 -0700 Subject: [PATCH] [ByteCode] Avoid repeated hash lookups (NFC) --- clang/lib/AST/ByteCode/Program.cpp | 12 +--- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/clang/lib/AST/ByteCode/Program.cpp b/clang/lib/AST/ByteCode/Program.cpp index 969f523db51dfe..23245a66b578ae 100644 --- a/clang/lib/AST/ByteCode/Program.cpp +++ b/clang/lib/AST/ByteCode/Program.cpp @@ -284,15 +284,13 @@ Record *Program::getOrCreateRecord(const RecordDecl *RD) { if (!RD->isCompleteDefinition()) return nullptr; - // Deduplicate records. - if (auto It = Records.find(RD); It != Records.end()) + // Return an existing record if available. Otherwise, we insert nullptr now + // and replace that later, so recursive calls to this function with the same + // RecordDecl don't run into infinite recursion. + auto [It, Inserted] = Records.try_emplace(RD); + if (!Inserted) return It->second; - // We insert nullptr now and replace that later, so recursive calls - // to this function with the same RecordDecl don't run into - // infinite recursion. - Records.insert({RD, nullptr}); - // Number of bytes required by fields and base classes. unsigned BaseSize = 0; // Number of bytes required by virtual base. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [StaticAnalyzer] Avoid repeated hash lookups (NFC) (PR #111272)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111272 None >From 9a5ad987040ed16478cd119814dc99ebc3d9d177 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 5 Oct 2024 10:24:52 -0700 Subject: [PATCH] [StaticAnalyzer] Avoid repeated hash lookups (NFC) --- .../StaticAnalyzer/Core/CheckerManager.cpp| 26 --- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp b/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp index ef617f5715c370..9f7a0fcc2edb36 100644 --- a/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp +++ b/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp @@ -66,13 +66,10 @@ void CheckerManager::runCheckersOnASTDecl(const Decl *D, AnalysisManager& mgr, assert(D); unsigned DeclKind = D->getKind(); - CachedDeclCheckers *checkers = nullptr; - CachedDeclCheckersMapTy::iterator CCI = CachedDeclCheckersMap.find(DeclKind); - if (CCI != CachedDeclCheckersMap.end()) { -checkers = &(CCI->second); - } else { + auto [CCI, Inserted] = CachedDeclCheckersMap.try_emplace(DeclKind); + CachedDeclCheckers *checkers = &(CCI->second); + if (Inserted) { // Find the checkers that should run for this Decl and cache them. -checkers = &CachedDeclCheckersMap[DeclKind]; for (const auto &info : DeclCheckers) if (info.IsForDeclFn(D)) checkers->push_back(info.CheckFn); @@ -896,14 +893,13 @@ CheckerManager::getCachedStmtCheckersFor(const Stmt *S, bool isPreVisit) { assert(S); unsigned Key = (S->getStmtClass() << 1) | unsigned(isPreVisit); - CachedStmtCheckersMapTy::iterator CCI = CachedStmtCheckersMap.find(Key); - if (CCI != CachedStmtCheckersMap.end()) -return CCI->second; - - // Find the checkers that should run for this Stmt and cache them. - CachedStmtCheckers &Checkers = CachedStmtCheckersMap[Key]; - for (const auto &Info : StmtCheckers) -if (Info.IsPreVisit == isPreVisit && Info.IsForStmtFn(S)) - Checkers.push_back(Info.CheckFn); + auto [CCI, Inserted] = CachedStmtCheckersMap.try_emplace(Key); + CachedStmtCheckers &Checkers = CCI->second; + if (Inserted) { +// Find the checkers that should run for this Stmt and cache them. +for (const auto &Info : StmtCheckers) + if (Info.IsPreVisit == isPreVisit && Info.IsForStmtFn(S)) +Checkers.push_back(Info.CheckFn); + } return Checkers; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111228)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111228 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111228)
kazutakahirata wrote: Please take a look. Thanks! https://github.com/llvm/llvm-project/pull/111228 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111228)
@@ -92,11 +92,10 @@ parseTargetIDWithFormatCheckingOnly(llvm::StringRef TargetID, if (Sign != '+' && Sign != '-') return std::nullopt; bool IsOn = Sign == '+'; -auto Loc = FeatureMap->find(Feature); +auto [Loc, Inserted] = FeatureMap->try_emplace(Feature, IsOn); kazutakahirata wrote: Thank you for pointing this out! https://github.com/llvm/llvm-project/pull/111228 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111228)
https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/111228 >From 2e3d116613a7441b31036cf603d581db6e0afe9b Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 4 Oct 2024 08:00:11 -0700 Subject: [PATCH 1/2] [Basic] Avoid repeated hash lookups (NFC) --- clang/lib/Basic/TargetID.cpp | 13 ++--- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp index fa1bfec2aacb9c..18f649c7137d7d 100644 --- a/clang/lib/Basic/TargetID.cpp +++ b/clang/lib/Basic/TargetID.cpp @@ -92,11 +92,10 @@ parseTargetIDWithFormatCheckingOnly(llvm::StringRef TargetID, if (Sign != '+' && Sign != '-') return std::nullopt; bool IsOn = Sign == '+'; -auto Loc = FeatureMap->find(Feature); +auto [Loc, Inserted] = FeatureMap->try_emplace(Feature, IsOn); // Each feature can only show up at most once in target ID. -if (Loc != FeatureMap->end()) +if (!Inserted) return std::nullopt; -(*FeatureMap)[Feature] = IsOn; Features = Splits.second; } return Processor; @@ -147,15 +146,15 @@ getConflictTargetIDCombination(const std::set &TargetIDs) { struct Info { llvm::StringRef TargetID; llvm::StringMap Features; +Info(llvm::StringRef TargetID, const llvm::StringMap &Features) +: TargetID(TargetID), Features(Features) {} }; llvm::StringMap FeatureMap; for (auto &&ID : TargetIDs) { llvm::StringMap Features; llvm::StringRef Proc = *parseTargetIDWithFormatCheckingOnly(ID, &Features); -auto Loc = FeatureMap.find(Proc); -if (Loc == FeatureMap.end()) - FeatureMap[Proc] = Info{ID, Features}; -else { +auto [Loc, Inserted] = FeatureMap.try_emplace(Proc, ID, Features); +if (!Inserted) { auto &ExistingFeatures = Loc->second.Features; if (llvm::any_of(Features, [&](auto &F) { return ExistingFeatures.count(F.first()) == 0; >From 53778b2f63ed276bf66073ebbcbeb3d8a61bfa22 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 5 Oct 2024 09:57:16 -0700 Subject: [PATCH 2/2] Remove an unused variable. --- clang/lib/Basic/TargetID.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp index 18f649c7137d7d..b42d1f07013c26 100644 --- a/clang/lib/Basic/TargetID.cpp +++ b/clang/lib/Basic/TargetID.cpp @@ -92,9 +92,8 @@ parseTargetIDWithFormatCheckingOnly(llvm::StringRef TargetID, if (Sign != '+' && Sign != '-') return std::nullopt; bool IsOn = Sign == '+'; -auto [Loc, Inserted] = FeatureMap->try_emplace(Feature, IsOn); // Each feature can only show up at most once in target ID. -if (!Inserted) +if (!FeatureMap->try_emplace(Feature, IsOn).second) return std::nullopt; Features = Splits.second; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #111227)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111227 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Driver] Avoid repeated hash lookups (NFC) (PR #111225)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111225 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Basic] Avoid repeated hash lookups (NFC) (PR #111228)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111228 None >From 2e3d116613a7441b31036cf603d581db6e0afe9b Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 4 Oct 2024 08:00:11 -0700 Subject: [PATCH] [Basic] Avoid repeated hash lookups (NFC) --- clang/lib/Basic/TargetID.cpp | 13 ++--- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp index fa1bfec2aacb9c..18f649c7137d7d 100644 --- a/clang/lib/Basic/TargetID.cpp +++ b/clang/lib/Basic/TargetID.cpp @@ -92,11 +92,10 @@ parseTargetIDWithFormatCheckingOnly(llvm::StringRef TargetID, if (Sign != '+' && Sign != '-') return std::nullopt; bool IsOn = Sign == '+'; -auto Loc = FeatureMap->find(Feature); +auto [Loc, Inserted] = FeatureMap->try_emplace(Feature, IsOn); // Each feature can only show up at most once in target ID. -if (Loc != FeatureMap->end()) +if (!Inserted) return std::nullopt; -(*FeatureMap)[Feature] = IsOn; Features = Splits.second; } return Processor; @@ -147,15 +146,15 @@ getConflictTargetIDCombination(const std::set &TargetIDs) { struct Info { llvm::StringRef TargetID; llvm::StringMap Features; +Info(llvm::StringRef TargetID, const llvm::StringMap &Features) +: TargetID(TargetID), Features(Features) {} }; llvm::StringMap FeatureMap; for (auto &&ID : TargetIDs) { llvm::StringMap Features; llvm::StringRef Proc = *parseTargetIDWithFormatCheckingOnly(ID, &Features); -auto Loc = FeatureMap.find(Proc); -if (Loc == FeatureMap.end()) - FeatureMap[Proc] = Info{ID, Features}; -else { +auto [Loc, Inserted] = FeatureMap.try_emplace(Proc, ID, Features); +if (!Inserted) { auto &ExistingFeatures = Loc->second.Features; if (llvm::any_of(Features, [&](auto &F) { return ExistingFeatures.count(F.first()) == 0; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #111227)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111227 None >From 364f8e5778d8dd587ee8b58104edd931c4b9d336 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 4 Oct 2024 07:59:14 -0700 Subject: [PATCH] [Sema] Avoid repeated hash lookups (NFC) --- clang/lib/Sema/SemaOpenMP.cpp | 18 ++ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 8615da4b044a82..74ab52106e3234 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -1405,10 +1405,9 @@ const Expr *DSAStackTy::addUniqueAligned(const ValueDecl *D, assert(!isStackEmpty() && "Data sharing attributes stack is empty"); D = getCanonicalDecl(D); SharingMapTy &StackElem = getTopOfStack(); - auto It = StackElem.AlignedMap.find(D); - if (It == StackElem.AlignedMap.end()) { + auto [It, Inserted] = StackElem.AlignedMap.try_emplace(D, NewDE); + if (Inserted) { assert(NewDE && "Unexpected nullptr expr to be added into aligned map"); -StackElem.AlignedMap[D] = NewDE; return nullptr; } assert(It->second && "Unexpected nullptr expr in the aligned map"); @@ -1420,10 +1419,9 @@ const Expr *DSAStackTy::addUniqueNontemporal(const ValueDecl *D, assert(!isStackEmpty() && "Data sharing attributes stack is empty"); D = getCanonicalDecl(D); SharingMapTy &StackElem = getTopOfStack(); - auto It = StackElem.NontemporalMap.find(D); - if (It == StackElem.NontemporalMap.end()) { + auto [It, Inserted] = StackElem.NontemporalMap.try_emplace(D, NewDE); + if (Inserted) { assert(NewDE && "Unexpected nullptr expr to be added into aligned map"); -StackElem.NontemporalMap[D] = NewDE; return nullptr; } assert(It->second && "Unexpected nullptr expr in the aligned map"); @@ -21650,9 +21648,7 @@ SemaOpenMP::ActOnOpenMPDeclareReductionDirectiveStart( while (Filter.hasNext()) { auto *PrevDecl = cast(Filter.next()); if (InCompoundScope) { -auto I = UsedAsPrevious.find(PrevDecl); -if (I == UsedAsPrevious.end()) - UsedAsPrevious[PrevDecl] = false; +UsedAsPrevious.try_emplace(PrevDecl, false); if (OMPDeclareReductionDecl *D = PrevDecl->getPrevDeclInScope()) UsedAsPrevious[D] = true; } @@ -21906,9 +21902,7 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareMapperDirective( while (Filter.hasNext()) { auto *PrevDecl = cast(Filter.next()); if (InCompoundScope) { -auto I = UsedAsPrevious.find(PrevDecl); -if (I == UsedAsPrevious.end()) - UsedAsPrevious[PrevDecl] = false; +UsedAsPrevious.try_emplace(PrevDecl, false); if (OMPDeclareMapperDecl *D = PrevDecl->getPrevDeclInScope()) UsedAsPrevious[D] = true; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Driver] Avoid repeated hash lookups (NFC) (PR #111225)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111225 None >From bd591d56e72a252b5dfa2304c8b719c60cfb1808 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 4 Oct 2024 08:00:49 -0700 Subject: [PATCH] [Driver] Avoid repeated hash lookups (NFC) --- clang/lib/Driver/Driver.cpp | 17 + 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index e9bf60d5e2ee46..2aaa52072b03d2 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -984,8 +984,9 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C, } else TC = &getToolChain(C.getInputArgs(), TT); C.addOffloadDeviceToolChain(TC, Action::OFK_OpenMP); -if (DerivedArchs.contains(TT.getTriple())) - KnownArchs[TC] = DerivedArchs[TT.getTriple()]; +auto It = DerivedArchs.find(TT.getTriple()); +if (It != DerivedArchs.end()) + KnownArchs[TC] = It->second; } } } else if (C.getInputArgs().hasArg(options::OPT_fopenmp_targets_EQ)) { @@ -3749,11 +3750,10 @@ class OffloadingActionBuilder final { void recordHostAction(Action *HostAction, const Arg *InputArg) { assert(HostAction && "Invalid host action"); assert(InputArg && "Invalid input argument"); -auto Loc = HostActionToInputArgMap.find(HostAction); -if (Loc == HostActionToInputArgMap.end()) - HostActionToInputArgMap[HostAction] = InputArg; -assert(HostActionToInputArgMap[HostAction] == InputArg && +auto Loc = HostActionToInputArgMap.try_emplace(HostAction, InputArg).first; +assert(Loc->second == InputArg && "host action mapped to multiple input arguments"); +(void)Loc; } /// Generate an action that adds device dependences (if any) to a host action. @@ -5581,8 +5581,9 @@ InputInfoList Driver::BuildJobsForActionNoCache( std::pair ActionTC = { OA->getHostDependence(), GetTriplePlusArchString(TC, BoundArch, TargetDeviceOffloadKind)}; -if (CachedResults.find(ActionTC) != CachedResults.end()) { - InputInfoList Inputs = CachedResults[ActionTC]; +auto It = CachedResults.find(ActionTC); +if (It != CachedResults.end()) { + InputInfoList Inputs = It->second; Inputs.append(OffloadDependencesInputInfo); return Inputs; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libclang] Avoid repeated hash lookups (NFC) (PR #111087)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111087 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [DependencyScanning] Avoid repeated hash lookups (NFC) (PR #111088)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111088 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Avoid repeated hash lookups (NFC) (PR #111089)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111089 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #111090)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/111090 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #111090)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111090 None >From cd8fc9cd8e9ef757d129b3bbdddaeaf163d08d51 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 3 Oct 2024 08:47:32 -0700 Subject: [PATCH] [Sema] Avoid repeated hash lookups (NFC) --- clang/lib/Sema/SemaLambda.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang/lib/Sema/SemaLambda.cpp b/clang/lib/Sema/SemaLambda.cpp index c2b35856111f3b..aeb20299b714a3 100644 --- a/clang/lib/Sema/SemaLambda.cpp +++ b/clang/lib/Sema/SemaLambda.cpp @@ -423,11 +423,11 @@ bool Sema::DiagnoseInvalidExplicitObjectParameterInLambda( // is an empty cast path for the method stored in the context (signalling that // we've already diagnosed it) and then just not building the call, but that // doesn't really seem any simpler than diagnosing it at the call site... - if (auto It = Context.LambdaCastPaths.find(Method); - It != Context.LambdaCastPaths.end()) + auto [It, Inserted] = Context.LambdaCastPaths.try_emplace(Method); + if (!Inserted) return It->second.empty(); - CXXCastPath &Path = Context.LambdaCastPaths[Method]; + CXXCastPath &Path = It->second; CXXBasePaths Paths(/*FindAmbiguities=*/true, /*RecordPaths=*/true, /*DetectVirtual=*/false); if (!IsDerivedFrom(RD->getLocation(), ExplicitObjectParameterType, LambdaType, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Avoid repeated hash lookups (NFC) (PR #111089)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111089 None >From 14a0790867efd134b4ae0ceafeddb58e504929ec Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 3 Oct 2024 08:46:35 -0700 Subject: [PATCH] [TableGen] Avoid repeated hash lookups (NFC) --- clang/utils/TableGen/MveEmitter.cpp | 28 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/clang/utils/TableGen/MveEmitter.cpp b/clang/utils/TableGen/MveEmitter.cpp index 57e6353e60a141..915e914d6b9287 100644 --- a/clang/utils/TableGen/MveEmitter.cpp +++ b/clang/utils/TableGen/MveEmitter.cpp @@ -994,9 +994,10 @@ class EmitterBase { const VectorType *getVectorType(const ScalarType *ST, unsigned Lanes) { std::tuple key(ST->kind(), ST->sizeInBits(), Lanes); -if (VectorTypes.find(key) == VectorTypes.end()) - VectorTypes[key] = std::make_unique(ST, Lanes); -return VectorTypes[key].get(); +auto [It, Inserted] = VectorTypes.try_emplace(key); +if (Inserted) + It->second = std::make_unique(ST, Lanes); +return It->second.get(); } const VectorType *getVectorType(const ScalarType *ST) { return getVectorType(ST, 128 / ST->sizeInBits()); @@ -1004,22 +1005,25 @@ class EmitterBase { const MultiVectorType *getMultiVectorType(unsigned Registers, const VectorType *VT) { std::pair key(VT->cNameBase(), Registers); -if (MultiVectorTypes.find(key) == MultiVectorTypes.end()) - MultiVectorTypes[key] = std::make_unique(Registers, VT); -return MultiVectorTypes[key].get(); +auto [It, Inserted] = MultiVectorTypes.try_emplace(key); +if (Inserted) + It->second = std::make_unique(Registers, VT); +return It->second.get(); } const PredicateType *getPredicateType(unsigned Lanes) { unsigned key = Lanes; -if (PredicateTypes.find(key) == PredicateTypes.end()) - PredicateTypes[key] = std::make_unique(Lanes); -return PredicateTypes[key].get(); +auto [It, Inserted] = PredicateTypes.try_emplace(key); +if (Inserted) + It->second = std::make_unique(Lanes); +return It->second.get(); } const PointerType *getPointerType(const Type *T, bool Const) { PointerType PT(T, Const); std::string key = PT.cName(); -if (PointerTypes.find(key) == PointerTypes.end()) - PointerTypes[key] = std::make_unique(PT); -return PointerTypes[key].get(); +auto [It, Inserted] = PointerTypes.try_emplace(key); +if (Inserted) + It->second = std::make_unique(PT); +return It->second.get(); } // Methods to construct a type from various pieces of Tablegen. These are ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [DependencyScanning] Avoid repeated hash lookups (NFC) (PR #111088)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111088 None >From 5e09bfd855a7ebee4dd07dc64bcdc157e89f6aa4 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 3 Oct 2024 08:47:01 -0700 Subject: [PATCH] [DependencyScanning] Avoid repeated hash lookups (NFC) --- clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp index 677f426590ab9e..77f9d07175c2c1 100644 --- a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp +++ b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp @@ -549,7 +549,7 @@ void ModuleDepCollectorPP::EndOfMainFile() { auto It = MDC.ModularDeps.find(M); // Only report direct dependencies that were successfully handled. if (It != MDC.ModularDeps.end()) - MDC.Consumer.handleDirectModuleDependency(MDC.ModularDeps[M]->ID); + MDC.Consumer.handleDirectModuleDependency(It->second->ID); } for (auto &&I : MDC.FileDeps) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libclang] Avoid repeated hash lookups (NFC) (PR #111087)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/111087 None >From df0ae6125e18bae6e90863300e12d094654b7b1f Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 3 Oct 2024 08:45:56 -0700 Subject: [PATCH] [libclang] Avoid repeated hash lookups (NFC) --- clang/tools/libclang/CXIndexDataConsumer.cpp | 10 ++ 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/clang/tools/libclang/CXIndexDataConsumer.cpp b/clang/tools/libclang/CXIndexDataConsumer.cpp index 8d364ed8876a12..ced94e13baf12e 100644 --- a/clang/tools/libclang/CXIndexDataConsumer.cpp +++ b/clang/tools/libclang/CXIndexDataConsumer.cpp @@ -952,18 +952,12 @@ void CXIndexDataConsumer::addContainerInMap(const DeclContext *DC, if (!DC) return; - ContainerMapTy::iterator I = ContainerMap.find(DC); - if (I == ContainerMap.end()) { -if (container) - ContainerMap[DC] = container; -return; - } // Allow changing the container of a previously seen DeclContext so we // can handle invalid user code, like a function re-definition. if (container) -I->second = container; +ContainerMap[DC] = container; else -ContainerMap.erase(I); +ContainerMap.erase(DC); } CXIdxClientEntity CXIndexDataConsumer::getClientEntity(const Decl *D) const { ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 3692995 - [CodeGen] Fix warnings
Author: Kazu Hirata Date: 2024-10-03T10:47:26-07:00 New Revision: 36929955f5f0ff9b7ab1314dcbbb374d52f18a42 URL: https://github.com/llvm/llvm-project/commit/36929955f5f0ff9b7ab1314dcbbb374d52f18a42 DIFF: https://github.com/llvm/llvm-project/commit/36929955f5f0ff9b7ab1314dcbbb374d52f18a42.diff LOG: [CodeGen] Fix warnings This patch fixes: clang/lib/CodeGen/CGBuiltin.cpp:18677:11: error: unused variable 'XVecTy1' [-Werror,-Wunused-variable] clang/lib/CodeGen/CGBuiltin.cpp:18678:11: error: unused variable 'XVecTy2' [-Werror,-Wunused-variable] Added: Modified: clang/lib/CodeGen/CGBuiltin.cpp Removed: diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 01d80c1e10f8c8..43700ea9dd3cfd 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -18674,10 +18674,10 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID, E->getArg(1)->getType()->hasFloatingRepresentation() && "cross operands must have a float representation"); // make sure each vector has exactly 3 elements -auto *XVecTy1 = E->getArg(0)->getType()->getAs(); -auto *XVecTy2 = E->getArg(1)->getType()->getAs(); -assert(XVecTy1->getNumElements() == 3 && XVecTy2->getNumElements() == 3 && - "input vectors must have 3 elements each"); +assert( +E->getArg(0)->getType()->getAs()->getNumElements() == 3 && +E->getArg(1)->getType()->getAs()->getNumElements() == 3 && +"input vectors must have 3 elements each"); return Builder.CreateIntrinsic( /*ReturnType=*/Op0->getType(), CGM.getHLSLRuntime().getCrossIntrinsic(), ArrayRef{Op0, Op1}, nullptr, "hlsl.cross"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #110951)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/110951 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Serialization] Avoid repeated hash lookups (NFC) (PR #110950)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/110950 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Analysis] Avoid repeated hash lookups (NFC) (PR #110949)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/110949 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Avoid repeated hash lookups (NFC) (PR #110947)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/110947 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #110951)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/110951 None >From 6e37d7fac860490dd491afff51b6ec26c45b4594 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 2 Oct 2024 07:01:33 -0700 Subject: [PATCH] [Sema] Avoid repeated hash lookups (NFC) --- clang/lib/Sema/JumpDiagnostics.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Sema/JumpDiagnostics.cpp b/clang/lib/Sema/JumpDiagnostics.cpp index 8af36d5c24e3d2..00fdffca4e9ea9 100644 --- a/clang/lib/Sema/JumpDiagnostics.cpp +++ b/clang/lib/Sema/JumpDiagnostics.cpp @@ -761,8 +761,7 @@ void JumpScopeChecker::VerifyIndirectJumps() { if (CHECK_PERMISSIVE(!LabelAndGotoScopes.count(IG))) continue; unsigned IGScope = LabelAndGotoScopes[IG]; - if (!JumpScopesMap.contains(IGScope)) -JumpScopesMap[IGScope] = IG; + JumpScopesMap.try_emplace(IGScope, IG); } JumpScopes.reserve(JumpScopesMap.size()); for (auto &Pair : JumpScopesMap) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Serialization] Avoid repeated hash lookups (NFC) (PR #110950)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/110950 None >From 9be1bde51a7b095b285bdfb81123749b6364d524 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 2 Oct 2024 07:02:53 -0700 Subject: [PATCH] [Serialization] Avoid repeated hash lookups (NFC) --- clang/lib/Serialization/GlobalModuleIndex.cpp | 15 +++ 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/clang/lib/Serialization/GlobalModuleIndex.cpp b/clang/lib/Serialization/GlobalModuleIndex.cpp index 1163943c5dffaa..9c48712a0b3fbe 100644 --- a/clang/lib/Serialization/GlobalModuleIndex.cpp +++ b/clang/lib/Serialization/GlobalModuleIndex.cpp @@ -430,14 +430,13 @@ namespace { /// Retrieve the module file information for the given file. ModuleFileInfo &getModuleFileInfo(FileEntryRef File) { - auto Known = ModuleFiles.find(File); - if (Known != ModuleFiles.end()) -return Known->second; - - unsigned NewID = ModuleFiles.size(); - ModuleFileInfo &Info = ModuleFiles[File]; - Info.ID = NewID; - return Info; + auto [It, Inserted] = ModuleFiles.try_emplace(File); + if (Inserted) { +unsigned NewID = ModuleFiles.size(); +ModuleFileInfo &Info = It->second; +Info.ID = NewID; + } + return It->second; } public: ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Analysis] Avoid repeated hash lookups (NFC) (PR #110949)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/110949 None >From 0e4235061e3f668c0d1b86cc993eada3ca7efac7 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 2 Oct 2024 07:00:45 -0700 Subject: [PATCH] [Analysis] Avoid repeated hash lookups (NFC) --- clang/lib/Analysis/ExprMutationAnalyzer.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang/lib/Analysis/ExprMutationAnalyzer.cpp b/clang/lib/Analysis/ExprMutationAnalyzer.cpp index 6d726ae44104ed..5a95ef36d05024 100644 --- a/clang/lib/Analysis/ExprMutationAnalyzer.cpp +++ b/clang/lib/Analysis/ExprMutationAnalyzer.cpp @@ -231,12 +231,11 @@ ExprMutationAnalyzer::Analyzer::findPointeeMutation(const Decl *Dec) { const Stmt *ExprMutationAnalyzer::Analyzer::findMutationMemoized( const Expr *Exp, llvm::ArrayRef Finders, Memoized::ResultMap &MemoizedResults) { - const auto Memoized = MemoizedResults.find(Exp); - if (Memoized != MemoizedResults.end()) + auto [Memoized, Inserted] = MemoizedResults.try_emplace(Exp); + if (!Inserted) return Memoized->second; // Assume Exp is not mutated before analyzing Exp. - MemoizedResults[Exp] = nullptr; if (isUnevaluated(Exp)) return nullptr; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Avoid repeated hash lookups (NFC) (PR #110947)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/110947 None >From 75622baf2f2bb12c46ca501f1f9b26afa0503e6b Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 2 Oct 2024 06:59:47 -0700 Subject: [PATCH] [AST] Avoid repeated hash lookups (NFC) --- clang/lib/AST/ASTContext.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 735def67f7840f..a81429ad6a2380 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -14439,8 +14439,6 @@ bool ASTContext::useAbbreviatedThunkName(GlobalDecl VirtualMethodDecl, Mangler->mangleThunk(Method, Thunk, /* elideOverrideInfo */ false, mangledNameStream); - if (Thunks.find(ElidedName) == Thunks.end()) -Thunks[ElidedName] = {}; Thunks[ElidedName].push_back(std::string(MangledName)); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 87a2413 - [AST] Fix a warning
Author: Kazu Hirata Date: 2024-10-02T12:21:23-07:00 New Revision: 87a24136140496e30aa867074bdee1be1f3b3294 URL: https://github.com/llvm/llvm-project/commit/87a24136140496e30aa867074bdee1be1f3b3294 DIFF: https://github.com/llvm/llvm-project/commit/87a24136140496e30aa867074bdee1be1f3b3294.diff LOG: [AST] Fix a warning This patch fixes: clang/lib/AST/MicrosoftMangle.cpp:1008:11: error: enumeration value 'S_Float8E8M0FNU' not handled in switch [-Werror,-Wswitch] Added: Modified: clang/lib/AST/MicrosoftMangle.cpp Removed: diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index e4c8663c134fda..4ccf3f76bf0ce2 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -1024,6 +1024,7 @@ void MicrosoftCXXNameMangler::mangleFloat(llvm::APFloat Number) { case APFloat::S_Float8E4M3B11FNUZ: case APFloat::S_Float8E3M4: case APFloat::S_FloatTF32: + case APFloat::S_Float8E8M0FNU: case APFloat::S_Float6E3M2FN: case APFloat::S_Float6E2M3FN: case APFloat::S_Float4E2M1FN: ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][TableGen] Change NeonEmitter to use const Record * (PR #110597)
https://github.com/kazutakahirata approved this pull request. LGTM. Thanks! https://github.com/llvm/llvm-project/pull/110597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][TableGen] Change OptionDoc Emitter to use const Record * (PR #110592)
https://github.com/kazutakahirata approved this pull request. LGTM. Thanks! https://github.com/llvm/llvm-project/pull/110592 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][TableGen] Change SACheckersEmitter to use const Record * (PR #110596)
https://github.com/kazutakahirata approved this pull request. LGTM. Thanks! https://github.com/llvm/llvm-project/pull/110596 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][TableGen] Change NeonEmitter to use const Record * (PR #110597)
@@ -1161,11 +1161,9 @@ void SVEEmitter::createIntrinsic( uint64_t Merge = R->getValueAsInt("Merge"); StringRef MergeSuffix = R->getValueAsString("MergeSuffix"); uint64_t MemEltType = R->getValueAsInt("MemEltType"); - std::vector FlagsList = R->getValueAsListOfDefs("Flags"); - std::vector ImmCheckList = R->getValueAsListOfDefs("ImmChecks"); int64_t Flags = 0; - for (auto FlagRec : FlagsList) + for (const record *FlagRec : R->getValueAsListOfConstDefs("Flags")) kazutakahirata wrote: Do you mean this? ```suggestion for (const Record *FlagRec : R->getValueAsListOfConstDefs("Flags")) ``` https://github.com/llvm/llvm-project/pull/110597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][TableGen] Change NeonEmitter to use const Record * (PR #110597)
@@ -1195,10 +1193,10 @@ void SVEEmitter::createIntrinsic( for (auto TS : TypeSpecs) { // Collate a list of range/option checks for the immediates. SmallVector ImmChecks; -for (auto *R : ImmCheckList) { - int64_t ArgIdx = R->getValueAsInt("ImmArgIdx"); - int64_t EltSizeArgIdx = R->getValueAsInt("TypeContextArgIdx"); - int64_t Kind = R->getValueAsDef("Kind")->getValueAsInt("Value"); +for (auto ImmR : R->getValueAsListOfConstDefs("ImmChecks")) { kazutakahirata wrote: Likewise: ```suggestion for (const Record *ImmR : R->getValueAsListOfConstDefs("ImmChecks")) { ``` https://github.com/llvm/llvm-project/pull/110597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][TableGen] Change NeonEmitter to use const Record * (PR #110597)
@@ -1161,11 +1161,9 @@ void SVEEmitter::createIntrinsic( uint64_t Merge = R->getValueAsInt("Merge"); StringRef MergeSuffix = R->getValueAsString("MergeSuffix"); uint64_t MemEltType = R->getValueAsInt("MemEltType"); - std::vector FlagsList = R->getValueAsListOfDefs("Flags"); - std::vector ImmCheckList = R->getValueAsListOfDefs("ImmChecks"); int64_t Flags = 0; - for (auto FlagRec : FlagsList) + for (auto FlagRec : R->getValueAsListOfConstDefs("Flags")) kazutakahirata wrote: In `NeonEmitter.cpp`, you are replacing `const auto *` with `const Record *`. You might want to be consistent here with: ```suggestion for (const Record *FlagRec : R->getValueAsListOfConstDefs("Flags")) ``` The LLVM coding conventions are not very prescriptive regarding `auto`, so I tend to use the actual type name if it's short. https://github.com/llvm/llvm-project/pull/110597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Use std::optional::value_or (NFC) (PR #109894)
kazutakahirata wrote: > Next time please provide a better summary for your PR. This is super > important for downstream folks debugging build breaks. In general this is > important for reviews to compare what they expect with the actual diff. > > > > In this case something like "replace the use of conditional operator on > std::optional w/ value_or" would have been sufficient. > > > > Thank you Ack. https://github.com/llvm/llvm-project/pull/109894 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 639a0af - Revert "Deprecate the `-fbasic-block-sections=labels` option. (#107494)"
Author: Kazu Hirata Date: 2024-09-25T12:34:43-07:00 New Revision: 639a0afa9955a8613902e46e168767bc05c46cdd URL: https://github.com/llvm/llvm-project/commit/639a0afa9955a8613902e46e168767bc05c46cdd DIFF: https://github.com/llvm/llvm-project/commit/639a0afa9955a8613902e46e168767bc05c46cdd.diff LOG: Revert "Deprecate the `-fbasic-block-sections=labels` option. (#107494)" This reverts commit 1911a50fae8a441b445eb835b98950710d28fc88. Several bots are failing: https://lab.llvm.org/buildbot/#/builders/190/builds/6519 https://lab.llvm.org/buildbot/#/builders/3/builds/5248 https://lab.llvm.org/buildbot/#/builders/18/builds/4463 Added: llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir llvm/test/CodeGen/X86/basic-block-sections-labels-empty-block.ll llvm/test/CodeGen/X86/basic-block-sections-labels-empty-function.ll llvm/test/CodeGen/X86/basic-block-sections-labels-pgo-features.ll Modified: clang/docs/UsersManual.rst clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/fbasic-block-sections.c llvm/docs/CommandGuide/llvm-objdump.rst llvm/docs/Extensions.rst llvm/include/llvm/CodeGen/MachineFunction.h llvm/include/llvm/Target/TargetOptions.h llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp llvm/lib/CodeGen/BasicBlockSections.cpp llvm/lib/CodeGen/CommandFlags.cpp llvm/lib/CodeGen/MIRParser/MIParser.cpp llvm/lib/CodeGen/MIRParser/MIRParser.cpp llvm/lib/CodeGen/MachineFunction.cpp llvm/test/CodeGen/X86/basic-block-address-map-function-sections.ll llvm/test/CodeGen/X86/basic-block-address-map.ll llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll Removed: llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll llvm/test/CodeGen/X86/basic-block-address-map-empty-function.ll llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir llvm/test/CodeGen/X86/basic-block-address-map-pgo-features.ll diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst index 4f03388bc87bd0..57d78f867bab6e 100644 --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -2369,16 +2369,14 @@ are listed below. $ cd $P/bar && clang -c -funique-internal-linkage-names name_conflict.c $ cd $P && clang foo/name_conflict.o && bar/name_conflict.o -.. option:: -f[no]-basic-block-address-map: - Emits a ``SHT_LLVM_BB_ADDR_MAP`` section which includes address offsets for each - basic block in the program, relative to the parent function address. - - -.. option:: -fbasic-block-sections=[all, list=, none] +.. option:: -fbasic-block-sections=[labels, all, list=, none] Controls how Clang emits text sections for basic blocks. With values ``all`` and ``list=``, each basic block or a subset of basic blocks can be placed - in its own unique section. + in its own unique section. With the "labels" value, normal text sections are + emitted, but a ``.bb_addr_map`` section is emitted which includes address + offsets for each basic block in the program, relative to the parent function + address. With the ``list=`` option, a file containing the subset of basic blocks that need to placed in unique sections can be specified. The format of the diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 814d4d4c99e575..f2a707a8ba8d76 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -107,13 +107,18 @@ class CodeGenOptions : public CodeGenOptionsBase { // This field stores one of the allowed values for the option // -fbasic-block-sections=. The allowed values with this option are: - // {"all", "list=", "none"}. + // {"labels", "all", "list=", "none"}. // + // "labels": Only generate basic block symbols (labels) for all basic + //blocks, do not generate unique sections for basic blocks. + //Use the machine basic block id in the symbol name to + //associate profile info from virtual address to machine + //basic block. // "all" :Generate basic block sections for all basic blocks. // "list=": Generate basic block sections for a subset of basic blocks. //The functions and the machine basic block ids are specified //in the file. - // "none":Disable sections for basic blocks. + // "none":Disable sections/labels for basic blocks. std::string BBSections; // If set, override the default value of MCAsmInfo::BinutilsVersion. If diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index c22b07e9f8a6cb..23bd686a85f526 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/
[clang] [clang] Use std::optional::value_or (NFC) (PR #109894)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109894 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Use std::optional::value_or (NFC) (PR #109894)
https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/109894 >From 7ea89a1dcdee890d3d69f59ea4e31b084d32e0d7 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Tue, 24 Sep 2024 14:34:49 -0700 Subject: [PATCH 1/2] [clang] Use std::optional::value_or (NFC) --- clang/include/clang/AST/PropertiesBase.td | 2 +- clang/include/clang/Basic/FileManager.h | 2 +- clang/lib/APINotes/APINotesYAMLCompiler.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/include/clang/AST/PropertiesBase.td b/clang/include/clang/AST/PropertiesBase.td index 9b934b20cf2559..3057669e3758b5 100644 --- a/clang/include/clang/AST/PropertiesBase.td +++ b/clang/include/clang/AST/PropertiesBase.td @@ -39,7 +39,7 @@ class EnumPropertyType : PropertyType {} /// Supports optional values by using the null representation. class RefPropertyType : PropertyType { let PackOptional = -"value ? *value : nullptr"; +"value.value_or(nullptr)"; let UnpackOptional = "value ? std::optional<" # CXXName # ">(value) : std::nullopt"; } diff --git a/clang/include/clang/Basic/FileManager.h b/clang/include/clang/Basic/FileManager.h index 527bbef24793ee..74029a91d1a6d0 100644 --- a/clang/include/clang/Basic/FileManager.h +++ b/clang/include/clang/Basic/FileManager.h @@ -293,7 +293,7 @@ class FileManager : public RefCountedBase { bool RequiresNullTerminator = true, std::optional MaybeLimit = std::nullopt) const { return getBufferForFileImpl(Filename, -/*FileSize=*/(MaybeLimit ? *MaybeLimit : -1), +/*FileSize=*/MaybeLimit.value_or(-1), isVolatile, RequiresNullTerminator); } diff --git a/clang/lib/APINotes/APINotesYAMLCompiler.cpp b/clang/lib/APINotes/APINotesYAMLCompiler.cpp index 16fd59244086fd..f72a1d65b5456f 100644 --- a/clang/lib/APINotes/APINotesYAMLCompiler.cpp +++ b/clang/lib/APINotes/APINotesYAMLCompiler.cpp @@ -757,8 +757,8 @@ class YAMLConverter { OutInfo.addTypeInfo(idx++, N); audited = Nullability.size() > 0 || ReturnNullability; if (audited) - OutInfo.addTypeInfo(0, ReturnNullability ? *ReturnNullability - : NullabilityKind::NonNull); + OutInfo.addTypeInfo(0, + ReturnNullability.value_or(NullabilityKind::NonNull)); if (!audited) return; OutInfo.NullabilityAudited = audited; >From 19a542e7fc8896f126ec0345ffe7a36e6ac57269 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Tue, 24 Sep 2024 21:51:58 -0700 Subject: [PATCH 2/2] Trigger build ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Use std::optional::value_or (NFC) (PR #109894)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109894 None >From 7ea89a1dcdee890d3d69f59ea4e31b084d32e0d7 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Tue, 24 Sep 2024 14:34:49 -0700 Subject: [PATCH] [clang] Use std::optional::value_or (NFC) --- clang/include/clang/AST/PropertiesBase.td | 2 +- clang/include/clang/Basic/FileManager.h | 2 +- clang/lib/APINotes/APINotesYAMLCompiler.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/include/clang/AST/PropertiesBase.td b/clang/include/clang/AST/PropertiesBase.td index 9b934b20cf2559..3057669e3758b5 100644 --- a/clang/include/clang/AST/PropertiesBase.td +++ b/clang/include/clang/AST/PropertiesBase.td @@ -39,7 +39,7 @@ class EnumPropertyType : PropertyType {} /// Supports optional values by using the null representation. class RefPropertyType : PropertyType { let PackOptional = -"value ? *value : nullptr"; +"value.value_or(nullptr)"; let UnpackOptional = "value ? std::optional<" # CXXName # ">(value) : std::nullopt"; } diff --git a/clang/include/clang/Basic/FileManager.h b/clang/include/clang/Basic/FileManager.h index 527bbef24793ee..74029a91d1a6d0 100644 --- a/clang/include/clang/Basic/FileManager.h +++ b/clang/include/clang/Basic/FileManager.h @@ -293,7 +293,7 @@ class FileManager : public RefCountedBase { bool RequiresNullTerminator = true, std::optional MaybeLimit = std::nullopt) const { return getBufferForFileImpl(Filename, -/*FileSize=*/(MaybeLimit ? *MaybeLimit : -1), +/*FileSize=*/MaybeLimit.value_or(-1), isVolatile, RequiresNullTerminator); } diff --git a/clang/lib/APINotes/APINotesYAMLCompiler.cpp b/clang/lib/APINotes/APINotesYAMLCompiler.cpp index 16fd59244086fd..f72a1d65b5456f 100644 --- a/clang/lib/APINotes/APINotesYAMLCompiler.cpp +++ b/clang/lib/APINotes/APINotesYAMLCompiler.cpp @@ -757,8 +757,8 @@ class YAMLConverter { OutInfo.addTypeInfo(idx++, N); audited = Nullability.size() > 0 || ReturnNullability; if (audited) - OutInfo.addTypeInfo(0, ReturnNullability ? *ReturnNullability - : NullabilityKind::NonNull); + OutInfo.addTypeInfo(0, + ReturnNullability.value_or(NullabilityKind::NonNull)); if (!audited) return; OutInfo.NullabilityAudited = audited; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Rewrite] Use SmallSetVector (NFC) (PR #109746)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109746 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 64e7cb2 - [Rewrite] Use auto (NFC)
Author: Kazu Hirata Date: 2024-09-23T19:47:41-07:00 New Revision: 64e7cb266e54e689791ad499965ddb0f8a1a2262 URL: https://github.com/llvm/llvm-project/commit/64e7cb266e54e689791ad499965ddb0f8a1a2262 DIFF: https://github.com/llvm/llvm-project/commit/64e7cb266e54e689791ad499965ddb0f8a1a2262.diff LOG: [Rewrite] Use auto (NFC) I'm planning to change the type of BlockByCopyDecls and BlockByRefDecls to SetVector. Declaring these iterators with auto makes it easier to migrate to the new type. Added: Modified: clang/lib/Frontend/Rewrite/RewriteObjC.cpp Removed: diff --git a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp index ac5baf72a65c90..a1e792bf772ba2 100644 --- a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp +++ b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp @@ -3292,8 +3292,8 @@ std::string RewriteObjC::SynthesizeBlockFunc(BlockExpr *CE, int i, // Create local declarations to avoid rewriting all closure decl ref exprs. // First, emit a declaration for all "by ref" decls. - for (SmallVectorImpl::iterator I = BlockByRefDecls.begin(), - E = BlockByRefDecls.end(); I != E; ++I) { + for (auto I = BlockByRefDecls.begin(), E = BlockByRefDecls.end(); I != E; + ++I) { S += " "; std::string Name = (*I)->getNameAsString(); std::string TypeString; @@ -3303,8 +3303,8 @@ std::string RewriteObjC::SynthesizeBlockFunc(BlockExpr *CE, int i, S += Name + " = __cself->" + (*I)->getNameAsString() + "; // bound by ref\n"; } // Next, emit a declaration for all "by copy" declarations. - for (SmallVectorImpl::iterator I = BlockByCopyDecls.begin(), - E = BlockByCopyDecls.end(); I != E; ++I) { + for (auto I = BlockByCopyDecls.begin(), E = BlockByCopyDecls.end(); I != E; + ++I) { S += " "; // Handle nested closure invocation. For example: // @@ -3400,8 +3400,8 @@ std::string RewriteObjC::SynthesizeBlockImpl(BlockExpr *CE, std::string Tag, if (BlockDeclRefs.size()) { // Output all "by copy" declarations. -for (SmallVectorImpl::iterator I = BlockByCopyDecls.begin(), - E = BlockByCopyDecls.end(); I != E; ++I) { +for (auto I = BlockByCopyDecls.begin(), E = BlockByCopyDecls.end(); I != E; + ++I) { S += " "; std::string FieldName = (*I)->getNameAsString(); std::string ArgName = "_" + FieldName; @@ -3429,8 +3429,8 @@ std::string RewriteObjC::SynthesizeBlockImpl(BlockExpr *CE, std::string Tag, S += FieldName + ";\n"; } // Output all "by ref" declarations. -for (SmallVectorImpl::iterator I = BlockByRefDecls.begin(), - E = BlockByRefDecls.end(); I != E; ++I) { +for (auto I = BlockByRefDecls.begin(), E = BlockByRefDecls.end(); I != E; + ++I) { S += " "; std::string FieldName = (*I)->getNameAsString(); std::string ArgName = "_" + FieldName; @@ -3448,8 +3448,8 @@ std::string RewriteObjC::SynthesizeBlockImpl(BlockExpr *CE, std::string Tag, Constructor += ", int flags=0)"; // Initialize all "by copy" arguments. bool firsTime = true; -for (SmallVectorImpl::iterator I = BlockByCopyDecls.begin(), - E = BlockByCopyDecls.end(); I != E; ++I) { +for (auto I = BlockByCopyDecls.begin(), E = BlockByCopyDecls.end(); I != E; + ++I) { std::string Name = (*I)->getNameAsString(); if (firsTime) { Constructor += " : "; @@ -3463,8 +3463,8 @@ std::string RewriteObjC::SynthesizeBlockImpl(BlockExpr *CE, std::string Tag, Constructor += Name + "(_" + Name + ")"; } // Initialize all "by ref" arguments. -for (SmallVectorImpl::iterator I = BlockByRefDecls.begin(), - E = BlockByRefDecls.end(); I != E; ++I) { +for (auto I = BlockByRefDecls.begin(), E = BlockByRefDecls.end(); I != E; + ++I) { std::string Name = (*I)->getNameAsString(); if (firsTime) { Constructor += " : "; @@ -4439,8 +4439,8 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp, if (BlockDeclRefs.size()) { Expr *Exp; // Output all "by copy" declarations. -for (SmallVectorImpl::iterator I = BlockByCopyDecls.begin(), - E = BlockByCopyDecls.end(); I != E; ++I) { +for (auto I = BlockByCopyDecls.begin(), E = BlockByCopyDecls.end(); I != E; + ++I) { if (isObjCType((*I)->getType())) { // FIXME: Conform to ABI ([[obj retain] autorelease]). FD = SynthBlockInitFunctionDecl((*I)->getName()); @@ -4476,8 +4476,8 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp, InitExprs.push_back(Exp); } // Output all "by ref" declarations. -for (SmallVectorImpl::iterator I = BlockByRefDecls.begin(), - E = BlockByRefDecls.end(); I != E; ++I) { +for (auto I = BlockByRefDecls.begin(), E = BlockByRefDecls.end(); I != E; + ++I) { ValueDecl *ND = (*I);
[clang] [AST] Avoid repeated hash lookups (NFC) (PR #109603)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109603 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Rewrite] Avoid repeated hash lookups (NFC) (PR #109605)
kazutakahirata wrote: > LGTM, but it would probably make sense to make BlockByCopyDecls a SetVector, > instead of having separate vector and set. > > Edit: Also worth noting that this pattern also exists here: > https://github.com/llvm/llvm-project/blob/50ce6d0114f8abd4b5580d2c277525eebdf25874/clang/lib/Frontend/Rewrite/RewriteObjC.cpp#L3556C42-L3556C61 Ack. There are quite a few places within LLVM where we see `Map.try_emplace(Key, Vector.size())`. I bet many of those can be converted to `MapVector`. https://github.com/llvm/llvm-project/pull/109605 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Rewrite] Avoid repeated hash lookups (NFC) (PR #109605)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109605 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Rewrite] Avoid repeated hash lookups (NFC) (PR #109605)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109605 None >From 50ce6d0114f8abd4b5580d2c277525eebdf25874 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sun, 22 Sep 2024 08:05:27 -0700 Subject: [PATCH] [Rewrite] Avoid repeated hash lookups (NFC) --- clang/lib/Frontend/Rewrite/RewriteObjC.cpp | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp index 180a0125023ee7..ac5baf72a65c90 100644 --- a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp +++ b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp @@ -4358,21 +4358,21 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp, for (unsigned i = 0; i < InnerBlockDeclRefs.size(); i++) { DeclRefExpr *Exp = InnerBlockDeclRefs[i]; ValueDecl *VD = Exp->getDecl(); - if (!VD->hasAttr() && !BlockByCopyDeclsPtrSet.count(VD)) { + if (!VD->hasAttr() && + BlockByCopyDeclsPtrSet.insert(VD).second) { // We need to save the copied-in variables in nested // blocks because it is needed at the end for some of the API // generations. See SynthesizeBlockLiterals routine. InnerDeclRefs.push_back(Exp); countOfInnerDecls++; BlockDeclRefs.push_back(Exp); -BlockByCopyDeclsPtrSet.insert(VD); BlockByCopyDecls.push_back(VD); } - if (VD->hasAttr() && !BlockByRefDeclsPtrSet.count(VD)) { + if (VD->hasAttr() && + BlockByRefDeclsPtrSet.insert(VD).second) { InnerDeclRefs.push_back(Exp); countOfInnerDecls++; BlockDeclRefs.push_back(Exp); -BlockByRefDeclsPtrSet.insert(VD); BlockByRefDecls.push_back(VD); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Avoid repeated hash lookups (NFC) (PR #109603)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109603 None >From 6d29a8a0d011a13a9ac17fa4bf53523cfc70992d Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sun, 22 Sep 2024 07:54:30 -0700 Subject: [PATCH] [AST] Avoid repeated hash lookups (NFC) --- clang/lib/AST/ASTContext.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 8bd5abf2bf9643..fd8aa8de79b49f 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -12587,8 +12587,7 @@ void ASTContext::forEachMultiversionedFunctionVersion( FD->getDeclContext()->getRedeclContext()->lookup(FD->getDeclName())) { FunctionDecl *CurFD = CurDecl->getAsFunction()->getMostRecentDecl(); if (CurFD && hasSameType(CurFD->getType(), FD->getType()) && -!SeenDecls.contains(CurFD)) { - SeenDecls.insert(CurFD); +SeenDecls.insert(CurFD).second) { Pred(CurFD); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Frontend] Teach LoadFromASTFile to take FileName by StringRef (NFC) (PR #109583)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109583 Without this patch, several callers of LoadFromASTFile construct an instance of std::string to be passed as FileName, only to be converted back to StringRef when LoadFromASTFile calls ReadAST. This patch changes the type of FileName to StringRef and updates the callers. >From 5818c6dbd5a14d26a5d80652b90e14aec1ca1103 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 1 Jun 2024 12:54:44 -0700 Subject: [PATCH] [Frontend] Teach LoadFromASTFile to take FileName by StringRef (NFC) Without this patch, several callers of LoadFromASTFile construct an instance of std::string to be passed as FileName, only to be converted back to StringRef when LoadFromASTFile calls ReadAST. This patch changes the type of FileName to StringRef and updates the callers. --- clang/include/clang/Frontend/ASTUnit.h | 4 ++-- clang/lib/CrossTU/CrossTranslationUnit.cpp | 6 +++--- clang/lib/Frontend/ASTUnit.cpp | 2 +- clang/lib/Frontend/FrontendAction.cpp| 10 +- clang/tools/c-index-test/core_main.cpp | 12 ++-- .../tools/clang-extdef-mapping/ClangExtDefMapGen.cpp | 2 +- clang/unittests/Frontend/ASTUnitTest.cpp | 4 ++-- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/clang/include/clang/Frontend/ASTUnit.h b/clang/include/clang/Frontend/ASTUnit.h index 080844893c13c9..8cefae8587aa34 100644 --- a/clang/include/clang/Frontend/ASTUnit.h +++ b/clang/include/clang/Frontend/ASTUnit.h @@ -692,8 +692,8 @@ class ASTUnit { /// /// \returns - The initialized ASTUnit or null if the AST failed to load. static std::unique_ptr - LoadFromASTFile(const std::string &Filename, - const PCHContainerReader &PCHContainerRdr, WhatToLoad ToLoad, + LoadFromASTFile(StringRef Filename, const PCHContainerReader &PCHContainerRdr, + WhatToLoad ToLoad, IntrusiveRefCntPtr Diags, const FileSystemOptions &FileSystemOpts, std::shared_ptr HSOpts, diff --git a/clang/lib/CrossTU/CrossTranslationUnit.cpp b/clang/lib/CrossTU/CrossTranslationUnit.cpp index 986470042bd83c..9faf2a8a173411 100644 --- a/clang/lib/CrossTU/CrossTranslationUnit.cpp +++ b/clang/lib/CrossTU/CrossTranslationUnit.cpp @@ -566,9 +566,9 @@ CrossTranslationUnitContext::ASTLoader::loadFromDump(StringRef ASTDumpPath) { IntrusiveRefCntPtr Diags( new DiagnosticsEngine(DiagID, &*DiagOpts, DiagClient)); return ASTUnit::LoadFromASTFile( - std::string(ASTDumpPath.str()), - CI.getPCHContainerOperations()->getRawReader(), ASTUnit::LoadEverything, - Diags, CI.getFileSystemOpts(), CI.getHeaderSearchOptsPtr()); + ASTDumpPath, CI.getPCHContainerOperations()->getRawReader(), + ASTUnit::LoadEverything, Diags, CI.getFileSystemOpts(), + CI.getHeaderSearchOptsPtr()); } /// Load the AST from a source-file, which is supposed to be located inside the diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index 84e273a3949ef0..93836ec5402faa 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -802,7 +802,7 @@ void ASTUnit::ConfigureDiags(IntrusiveRefCntPtr Diags, } std::unique_ptr ASTUnit::LoadFromASTFile( -const std::string &Filename, const PCHContainerReader &PCHContainerRdr, +StringRef Filename, const PCHContainerReader &PCHContainerRdr, WhatToLoad ToLoad, IntrusiveRefCntPtr Diags, const FileSystemOptions &FileSystemOpts, std::shared_ptr HSOpts, diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp index a9c45e525c696c..81eea9c4c4dc58 100644 --- a/clang/lib/Frontend/FrontendAction.cpp +++ b/clang/lib/Frontend/FrontendAction.cpp @@ -625,8 +625,8 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, StringRef InputFile = Input.getFile(); std::unique_ptr AST = ASTUnit::LoadFromASTFile( -std::string(InputFile), CI.getPCHContainerReader(), -ASTUnit::LoadPreprocessorOnly, ASTDiags, CI.getFileSystemOpts(), +InputFile, CI.getPCHContainerReader(), ASTUnit::LoadPreprocessorOnly, +ASTDiags, CI.getFileSystemOpts(), /*HeaderSearchOptions=*/nullptr); if (!AST) return false; @@ -693,9 +693,9 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, StringRef InputFile = Input.getFile(); std::unique_ptr AST = ASTUnit::LoadFromASTFile( -std::string(InputFile), CI.getPCHContainerReader(), -ASTUnit::LoadEverything, Diags, CI.getFileSystemOpts(), -CI.getHeaderSearchOptsPtr(), CI.getLangOptsPtr()); +InputFile, CI.getPCHContainerReader(), ASTUnit::LoadEverything, Diags, +CI.getFileSystemOpts(), CI.getHeaderSearchOptsPtr(), +CI.getLangOptsPtr()); if (!AST) return false; diff --git a/clang/tools/c-index-test/co
[clang] 7a4b320 - [Rewrite] clang-format RewriteObjC.cpp (NFC)
Author: Kazu Hirata Date: 2024-09-22T08:03:15-07:00 New Revision: 7a4b320931a139514b2fcdf682cb4ab2abb6331d URL: https://github.com/llvm/llvm-project/commit/7a4b320931a139514b2fcdf682cb4ab2abb6331d DIFF: https://github.com/llvm/llvm-project/commit/7a4b320931a139514b2fcdf682cb4ab2abb6331d.diff LOG: [Rewrite] clang-format RewriteObjC.cpp (NFC) I'm going to touch this area in a subsequent patch. Added: Modified: clang/lib/Frontend/Rewrite/RewriteObjC.cpp Removed: diff --git a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp index f3afb3e5e83acd..180a0125023ee7 100644 --- a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp +++ b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp @@ -4359,16 +4359,18 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp, DeclRefExpr *Exp = InnerBlockDeclRefs[i]; ValueDecl *VD = Exp->getDecl(); if (!VD->hasAttr() && !BlockByCopyDeclsPtrSet.count(VD)) { - // We need to save the copied-in variables in nested - // blocks because it is needed at the end for some of the API generations. - // See SynthesizeBlockLiterals routine. -InnerDeclRefs.push_back(Exp); countOfInnerDecls++; +// We need to save the copied-in variables in nested +// blocks because it is needed at the end for some of the API +// generations. See SynthesizeBlockLiterals routine. +InnerDeclRefs.push_back(Exp); +countOfInnerDecls++; BlockDeclRefs.push_back(Exp); BlockByCopyDeclsPtrSet.insert(VD); BlockByCopyDecls.push_back(VD); } if (VD->hasAttr() && !BlockByRefDeclsPtrSet.count(VD)) { -InnerDeclRefs.push_back(Exp); countOfInnerDecls++; +InnerDeclRefs.push_back(Exp); +countOfInnerDecls++; BlockDeclRefs.push_back(Exp); BlockByRefDeclsPtrSet.insert(VD); BlockByRefDecls.push_back(VD); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [modularize] Avoid repeated hash lookups (NFC) (PR #109508)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109508 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [modularize] Avoid repeated hash lookups (NFC) (PR #109508)
https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/109508 >From d50b829fd1277736b7e65886879fcfe9a45714f2 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 13:31:12 -0700 Subject: [PATCH 1/3] [modularize] Avoid repeated hash lookups (NFC) --- clang-tools-extra/modularize/Modularize.cpp | 10 -- 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index f3e7dfc20b027d..92e4792526d6f3 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -508,13 +508,11 @@ class EntityMap : public std::map> { // Sort contents. llvm::sort(H->second); - // Check whether we've seen this header before. - auto KnownH = AllHeaderContents.find(H->first); - if (KnownH == AllHeaderContents.end()) { -// We haven't seen this header before; record its contents. -AllHeaderContents.insert(*H); + // Record this header and its contents if we haven't seen it before. + auto [KnownH, Inserted] = + AllHeaderContents.try_emplace(H->first, H->second); + if (Inserted) continue; - } // If the header contents are the same, we're done. if (H->second == KnownH->second) >From 39dea55ef4af49f1d855d78a70a5b5f535e44405 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 21 Sep 2024 09:12:57 -0700 Subject: [PATCH 2/3] Update clang-tools-extra/modularize/Modularize.cpp Co-authored-by: Nikita Popov --- clang-tools-extra/modularize/Modularize.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index 92e4792526d6f3..9dda405a392bec 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -510,7 +510,7 @@ class EntityMap : public std::map> { // Record this header and its contents if we haven't seen it before. auto [KnownH, Inserted] = - AllHeaderContents.try_emplace(H->first, H->second); + AllHeaderContents.insert(*H); if (Inserted) continue; >From 92292648faf08168d951e762ec191d1b21df2ce5 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 21 Sep 2024 09:18:17 -0700 Subject: [PATCH 3/3] Fix formatting. --- clang-tools-extra/modularize/Modularize.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index 9dda405a392bec..2c00c76c855336 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -509,8 +509,7 @@ class EntityMap : public std::map> { llvm::sort(H->second); // Record this header and its contents if we haven't seen it before. - auto [KnownH, Inserted] = - AllHeaderContents.insert(*H); + auto [KnownH, Inserted] = AllHeaderContents.insert(*H); if (Inserted) continue; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [modularize] Avoid repeated hash lookups (NFC) (PR #109508)
kazutakahirata wrote: Revised the patch. Please take a look. Thanks! https://github.com/llvm/llvm-project/pull/109508 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [modularize] Avoid repeated hash lookups (NFC) (PR #109508)
https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/109508 >From d50b829fd1277736b7e65886879fcfe9a45714f2 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 13:31:12 -0700 Subject: [PATCH 1/2] [modularize] Avoid repeated hash lookups (NFC) --- clang-tools-extra/modularize/Modularize.cpp | 10 -- 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index f3e7dfc20b027d..92e4792526d6f3 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -508,13 +508,11 @@ class EntityMap : public std::map> { // Sort contents. llvm::sort(H->second); - // Check whether we've seen this header before. - auto KnownH = AllHeaderContents.find(H->first); - if (KnownH == AllHeaderContents.end()) { -// We haven't seen this header before; record its contents. -AllHeaderContents.insert(*H); + // Record this header and its contents if we haven't seen it before. + auto [KnownH, Inserted] = + AllHeaderContents.try_emplace(H->first, H->second); + if (Inserted) continue; - } // If the header contents are the same, we're done. if (H->second == KnownH->second) >From 39dea55ef4af49f1d855d78a70a5b5f535e44405 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 21 Sep 2024 09:12:57 -0700 Subject: [PATCH 2/2] Update clang-tools-extra/modularize/Modularize.cpp Co-authored-by: Nikita Popov --- clang-tools-extra/modularize/Modularize.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index 92e4792526d6f3..9dda405a392bec 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -510,7 +510,7 @@ class EntityMap : public std::map> { // Record this header and its contents if we haven't seen it before. auto [KnownH, Inserted] = - AllHeaderContents.try_emplace(H->first, H->second); + AllHeaderContents.insert(*H); if (Inserted) continue; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-offload-bundler] Avoid repeated hash lookups (NFC) (PR #109507)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109507 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [modularize] Avoid repeated hash lookups (NFC) (PR #109508)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109508 None >From d50b829fd1277736b7e65886879fcfe9a45714f2 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 13:31:12 -0700 Subject: [PATCH] [modularize] Avoid repeated hash lookups (NFC) --- clang-tools-extra/modularize/Modularize.cpp | 10 -- 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index f3e7dfc20b027d..92e4792526d6f3 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -508,13 +508,11 @@ class EntityMap : public std::map> { // Sort contents. llvm::sort(H->second); - // Check whether we've seen this header before. - auto KnownH = AllHeaderContents.find(H->first); - if (KnownH == AllHeaderContents.end()) { -// We haven't seen this header before; record its contents. -AllHeaderContents.insert(*H); + // Record this header and its contents if we haven't seen it before. + auto [KnownH, Inserted] = + AllHeaderContents.try_emplace(H->first, H->second); + if (Inserted) continue; - } // If the header contents are the same, we're done. if (H->second == KnownH->second) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-offload-bundler] Avoid repeated hash lookups (NFC) (PR #109507)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109507 None >From a08161a8308d724e7cf41ee0f603321ee6a121d4 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 13:32:54 -0700 Subject: [PATCH] [clang-offload-bundler] Avoid repeated hash lookups (NFC) --- clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp b/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp index e336417586f70b..0189fe5d56ab2a 100644 --- a/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp +++ b/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp @@ -349,11 +349,10 @@ int main(int argc, const char **argv) { // Standardize target names to include env field std::vector StandardizedTargetNames; for (StringRef Target : TargetNames) { -if (ParsedTargets.contains(Target)) { +if (!ParsedTargets.insert(Target).second) { reportError(createStringError(errc::invalid_argument, "Duplicate targets are not allowed")); } -ParsedTargets.insert(Target); auto OffloadInfo = OffloadTargetInfo(Target, BundlerConfig); bool KindIsValid = OffloadInfo.isOffloadKindValid(); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Use StringSet instead of StringMap (NFC) (PR #109469)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109469 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Use StringSet instead of StringMap (NFC) (PR #109469)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109469 None >From 8605aa9564d7fdf1d6185ceb498e29d276d39dc3 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 09:02:01 -0700 Subject: [PATCH] [TableGen] Use StringSet instead of StringMap (NFC) --- clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp | 12 +--- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp index 2a369271cfc3f2..80cb2ee28e256a 100644 --- a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp +++ b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp @@ -20,7 +20,6 @@ #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringExtras.h" -#include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSet.h" #include "llvm/ADT/StringSwitch.h" @@ -114,9 +113,8 @@ class BuiltinNameEmitter { // \param Output (out) String containing the enums to emit in the output file. // \param List (out) List containing the extracted Types, except the Types in //TypesSeen. - void ExtractEnumTypes(ArrayRef Types, -StringMap &TypesSeen, std::string &Output, -std::vector &List); + void ExtractEnumTypes(ArrayRef Types, StringSet<> &TypesSeen, +std::string &Output, std::vector &List); // Emit the enum or struct used in the generated file. // Populate the TypeList at the same time. @@ -364,7 +362,7 @@ void BuiltinNameEmitter::Emit() { } void BuiltinNameEmitter::ExtractEnumTypes(ArrayRef Types, - StringMap &TypesSeen, + StringSet<> &TypesSeen, std::string &Output, std::vector &List) { raw_string_ostream SS(Output); @@ -376,7 +374,7 @@ void BuiltinNameEmitter::ExtractEnumTypes(ArrayRef Types, // the Record can be a VectorType or something else, only the name is // important. List.push_back(T); - TypesSeen.insert(std::make_pair(T->getValueAsString("Name"), true)); + TypesSeen.insert(T->getValueAsString("Name")); } } } @@ -385,7 +383,7 @@ void BuiltinNameEmitter::EmitDeclarations() { // Enum of scalar type names (float, int, ...) and generic type sets. OS << "enum OpenCLTypeID {\n"; - StringMap TypesSeen; + StringSet<> TypesSeen; std::string GenTypeEnums; std::string TypeEnums; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Use StringSet instead of StringMap (NFC) (PR #109441)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109441 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-move] Use a range-based for loop (NFC) (PR #109438)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109438 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Declare GlobalMethodPool with using (NFC) (PR #109437)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109437 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang][Sema] Refactor collection of multi-level template argument lists (PR #106585)
kazutakahirata wrote: I've fixed a warning from this PR with 30adb43c897a45c18d7dd163fb4ff40c915fc488. https://github.com/llvm/llvm-project/pull/106585 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 30adb43 - [AST] Fix a warning
Author: Kazu Hirata Date: 2024-09-20T13:05:04-07:00 New Revision: 30adb43c897a45c18d7dd163fb4ff40c915fc488 URL: https://github.com/llvm/llvm-project/commit/30adb43c897a45c18d7dd163fb4ff40c915fc488 DIFF: https://github.com/llvm/llvm-project/commit/30adb43c897a45c18d7dd163fb4ff40c915fc488.diff LOG: [AST] Fix a warning This patch fixes: clang/lib/AST/DeclTemplate.cpp:466:9: error: unused type alias 'Base' [-Werror,-Wunused-local-typedef] Added: Modified: clang/lib/AST/DeclTemplate.cpp Removed: diff --git a/clang/lib/AST/DeclTemplate.cpp b/clang/lib/AST/DeclTemplate.cpp index 6f17baf4fc01ad..b779d79af81f26 100644 --- a/clang/lib/AST/DeclTemplate.cpp +++ b/clang/lib/AST/DeclTemplate.cpp @@ -463,8 +463,6 @@ void FunctionTemplateDecl::addSpecialization( } void FunctionTemplateDecl::mergePrevDecl(FunctionTemplateDecl *Prev) { - using Base = RedeclarableTemplateDecl; - // If we haven't created a common pointer yet, then it can just be created // with the usual method. if (!getCommonPtrInternal()) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tools-extra] Use {} instead of std::nullopt to initialize empty ArrayRef (PR #109400)
https://github.com/kazutakahirata approved this pull request. LGTM. Thanks! https://github.com/llvm/llvm-project/pull/109400 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Use {} instead of std::nullopt to initialize empty ArrayRef (PR #109399)
https://github.com/kazutakahirata approved this pull request. LGTM. Thanks! https://github.com/llvm/llvm-project/pull/109399 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Use StringSet instead of StringMap (NFC) (PR #109441)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109441 None >From 2d341c98063a16644c373b41390d681df4908034 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 09:07:34 -0700 Subject: [PATCH] [TableGen] Use StringSet instead of StringMap (NFC) --- clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp index 25c7bf0306a891..2a369271cfc3f2 100644 --- a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp +++ b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp @@ -22,6 +22,7 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" +#include "llvm/ADT/StringSet.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" @@ -889,14 +890,14 @@ static void OCL2Qual(Sema &S, const OpenCLTypeStruct &Ty, // Only insert the plain scalar type; vector information and type qualifiers // are added in step 2. ArrayRef Types = Records.getAllDerivedDefinitions("Type"); - StringMap TypesSeen; + StringSet<> TypesSeen; for (const auto *T : Types) { // Check this is not an image type if (ImageTypesMap.contains(T->getValueAsString("Name"))) continue; // Check we have not seen this Type -if (!TypesSeen.try_emplace(T->getValueAsString("Name"), true).second) +if (!TypesSeen.insert(T->getValueAsString("Name")).second) continue; // Check the Type does not have an "abstract" QualType ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Avoid repeated hash lookups (NFC) (PR #109372)
@@ -896,9 +896,8 @@ static void OCL2Qual(Sema &S, const OpenCLTypeStruct &Ty, if (ImageTypesMap.contains(T->getValueAsString("Name"))) continue; // Check we have not seen this Type -if (TypesSeen.contains(T->getValueAsString("Name"))) +if (!TypesSeen.try_emplace(T->getValueAsString("Name"), true).second) kazutakahirata wrote: The value doesn't seem to be used indeed. Let me clean that up in a subsequent patch. https://github.com/llvm/llvm-project/pull/109372 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [TableGen] Avoid repeated hash lookups (NFC) (PR #109372)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109372 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-move] Use a range-based for loop (NFC) (PR #109438)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109438 None >From a8f5541213f25f266355db26cb685d969cdf6ef9 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 08:36:08 -0700 Subject: [PATCH] [clang-move] Use a range-based for loop (NFC) --- clang-tools-extra/clang-move/HelperDeclRefGraph.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-move/HelperDeclRefGraph.cpp b/clang-tools-extra/clang-move/HelperDeclRefGraph.cpp index ae7dc5b2c0548b..36fddcba25d616 100644 --- a/clang-tools-extra/clang-move/HelperDeclRefGraph.cpp +++ b/clang-tools-extra/clang-move/HelperDeclRefGraph.cpp @@ -78,8 +78,8 @@ HelperDeclRefGraph::getReachableNodes(const Decl *Root) const { [&](const CallGraphNode *Node) { if (!ConnectedNodes.insert(Node).second) return; -for (auto It = Node->begin(), End = Node->end(); It != End; ++It) - VisitNode(*It); +for (const CallGraphNode::CallRecord &Callee : *Node) + VisitNode(Callee); }; VisitNode(RootNode); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Declare GlobalMethodPool with using (NFC) (PR #109437)
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/109437 GlobalMethodPool is a wrapper around DenseMap that does not add anything except: using Lists = std::pair; This patch removes the wrapper and switches to an alias with "using". In ReadMethodPool in ASTReader.cpp, we can simplify: insert(std::make_pair(Sel, SemaObjC::GlobalMethodPool::Lists())) to: try_emplace(Sel) But then try_emplace(Sel).first->second is the same as operator[], so this patch simplifies the rest of the function. >From e02e3092f454bacf4154b98ae3847cf34880253a Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 20 Sep 2024 08:20:04 -0700 Subject: [PATCH] [Sema] Declare GlobalMethodPool with using (NFC) GlobalMethodPool is a wrapper around DenseMap that does not add anything except: using Lists = std::pair; This patch removes the wrapper and switches to an alias with "using". In ReadMethodPool in ASTReader.cpp, we can simplify: insert(std::make_pair(Sel, SemaObjC::GlobalMethodPool::Lists())) to: try_emplace(Sel) But then try_emplace(Sel).first->second is the same as operator[], so this patch simplifies the rest of the function. --- clang/include/clang/Sema/SemaObjC.h | 19 ++- clang/lib/Sema/SemaDeclObjC.cpp | 2 +- clang/lib/Serialization/ASTReader.cpp | 18 +++--- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/clang/include/clang/Sema/SemaObjC.h b/clang/include/clang/Sema/SemaObjC.h index b868e9e7cd0aa9..9367c680953f71 100644 --- a/clang/include/clang/Sema/SemaObjC.h +++ b/clang/include/clang/Sema/SemaObjC.h @@ -208,23 +208,8 @@ class SemaObjC : public SemaBase { /// of -Wselector. llvm::MapVector ReferencedSelectors; - class GlobalMethodPool { - public: -using Lists = std::pair; -using iterator = llvm::DenseMap::iterator; -iterator begin() { return Methods.begin(); } -iterator end() { return Methods.end(); } -iterator find(Selector Sel) { return Methods.find(Sel); } -std::pair insert(std::pair &&Val) { - return Methods.insert(Val); -} -Lists &operator[](Selector Key) { return Methods[Key]; } -int count(Selector Sel) const { return Methods.count(Sel); } -bool empty() const { return Methods.empty(); } - - private: -llvm::DenseMap Methods; - }; + using GlobalMethodPool = + llvm::DenseMap>; /// Method Pool - allows efficient lookup when typechecking messages to "id". /// We need to maintain a list, since selectors can have differing signatures diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 87be43b13813d3..d8cd09b8272930 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -3649,7 +3649,7 @@ ObjCMethodDecl *SemaObjC::LookupImplementedMethodInGlobalPool(Selector Sel) { if (Pos == MethodPool.end()) return nullptr; - GlobalMethodPool::Lists &Methods = Pos->second; + auto &Methods = Pos->second; for (const ObjCMethodList *Method = &Methods.first; Method; Method = Method->getNext()) if (Method->getMethod() && diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 7efcc81e194d95..47a286be2303fd 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -8751,22 +8751,18 @@ void ASTReader::ReadMethodPool(Selector Sel) { return; Sema &S = *getSema(); - SemaObjC::GlobalMethodPool::iterator Pos = - S.ObjC() - .MethodPool - .insert(std::make_pair(Sel, SemaObjC::GlobalMethodPool::Lists())) - .first; + auto &Methods = S.ObjC().MethodPool[Sel]; - Pos->second.first.setBits(Visitor.getInstanceBits()); - Pos->second.first.setHasMoreThanOneDecl(Visitor.instanceHasMoreThanOneDecl()); - Pos->second.second.setBits(Visitor.getFactoryBits()); - Pos->second.second.setHasMoreThanOneDecl(Visitor.factoryHasMoreThanOneDecl()); + Methods.first.setBits(Visitor.getInstanceBits()); + Methods.first.setHasMoreThanOneDecl(Visitor.instanceHasMoreThanOneDecl()); + Methods.second.setBits(Visitor.getFactoryBits()); + Methods.second.setHasMoreThanOneDecl(Visitor.factoryHasMoreThanOneDecl()); // Add methods to the global pool *after* setting hasMoreThanOneDecl, since // when building a module we keep every method individually and may need to // update hasMoreThanOneDecl as we add the methods. - addMethodsToPool(S, Visitor.getInstanceMethods(), Pos->second.first); - addMethodsToPool(S, Visitor.getFactoryMethods(), Pos->second.second); + addMethodsToPool(S, Visitor.getInstanceMethods(), Methods.first); + addMethodsToPool(S, Visitor.getFactoryMethods(), Methods.second); } void ASTReader::updateOutOfDateSelector(Selector Sel) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy] Avoid repeated hash lookups (NFC) (PR #109373)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109373 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-move] Avoid repeated hash lookups (NFC) (PR #109374)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109374 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-move] Avoid repeated hash lookups (NFC) (PR #109374)
@@ -76,9 +76,8 @@ HelperDeclRefGraph::getReachableNodes(const Decl *Root) const { llvm::DenseSet ConnectedNodes; std::function VisitNode = [&](const CallGraphNode *Node) { -if (ConnectedNodes.count(Node)) +if (!ConnectedNodes.insert(Node).second) return; -ConnectedNodes.insert(Node); for (auto It = Node->begin(), End = Node->end(); It != End; ++It) kazutakahirata wrote: Sure. I'll take care of it in a subsequent patch. https://github.com/llvm/llvm-project/pull/109374 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #109375)
https://github.com/kazutakahirata closed https://github.com/llvm/llvm-project/pull/109375 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Sema] Avoid repeated hash lookups (NFC) (PR #109375)
kazutakahirata wrote: > Hm, why does this wrapper exist at all? It looks like a trivial wrapper that > doesn't add or change any DenseMap functionality. I was wondering about the same thing. Let me get rid of the wrapper in a subsequent patch. https://github.com/llvm/llvm-project/pull/109375 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits