Skip to content

[Clang] Improve EmitClangAttrSpellingListIndex #114899

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Nov 7, 2024

Conversation

chinmaydd
Copy link
Contributor

@chinmaydd chinmaydd commented Nov 5, 2024

EmitClangAttrSpellingListIndex() performs a lot of unnecessary string comparisons which is wasteful in time and stack space. This commit attempts to refactor this method to be more performant.

New and old AttrSpellingListIndex.inc files can be found here - https://gist.github.com/chinmaydd/1733a9a84932a45678c47f31be4d64d7. (CTRL-F for NEW_INC_FILE and OLD_INC_FILE)

Previous discussion can be found here: #114285.

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" labels Nov 5, 2024
@llvmbot
Copy link
Member

llvmbot commented Nov 5, 2024

@llvm/pr-subscribers-clang

Author: Chinmay Deshpande (chinmaydd)

Changes

EmitClangAttrSpellingListIndex() performs a lot of unnecessary string comparisons which is wasteful in time and stack space. This commit attempts to refactor this method to be more performant.

New and old AttrSpellingListIndex.inc files can be found here - https://gist.github.com/chinmaydd/1733a9a84932a45678c47f31be4d64d7.

Previous discussion can be found here: #114285.


Full diff: https://github.com/llvm/llvm-project/pull/114899.diff

3 Files Affected:

  • (modified) clang/include/clang/Basic/AttributeCommonInfo.h (+10)
  • (modified) clang/lib/Basic/Attributes.cpp (+26-2)
  • (modified) clang/utils/TableGen/ClangAttrEmitter.cpp (+90-5)
diff --git a/clang/include/clang/Basic/AttributeCommonInfo.h b/clang/include/clang/Basic/AttributeCommonInfo.h
index 5f024b4b5fd782..834b3ca62adced 100644
--- a/clang/include/clang/Basic/AttributeCommonInfo.h
+++ b/clang/include/clang/Basic/AttributeCommonInfo.h
@@ -67,6 +67,16 @@ class AttributeCommonInfo {
     IgnoredAttribute,
     UnknownAttribute,
   };
+  enum Scope {
+    SC_NONE,
+    SC_CLANG,
+    SC_GNU,
+    SC_MSVC,
+    SC_OMP,
+    SC_HLSL,
+    SC_GSL,
+    SC_RISCV
+  };
 
 private:
   const IdentifierInfo *AttrName = nullptr;
diff --git a/clang/lib/Basic/Attributes.cpp b/clang/lib/Basic/Attributes.cpp
index 867d241a2cf847..6f5a70674cbd4b 100644
--- a/clang/lib/Basic/Attributes.cpp
+++ b/clang/lib/Basic/Attributes.cpp
@@ -16,6 +16,7 @@
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/ParsedAttrInfo.h"
 #include "clang/Basic/TargetInfo.h"
+#include "llvm/ADT/StringMap.h"
 
 using namespace clang;
 
@@ -153,12 +154,35 @@ std::string AttributeCommonInfo::getNormalizedFullName() const {
       normalizeName(getAttrName(), getScopeName(), getSyntax()));
 }
 
+static const llvm::StringMap<AttributeCommonInfo::Scope> ScopeMap = {
+    {"", AttributeCommonInfo::SC_NONE},
+    {"clang", AttributeCommonInfo::SC_CLANG},
+    {"gnu", AttributeCommonInfo::SC_GNU},
+    {"msvc", AttributeCommonInfo::SC_MSVC},
+    {"omp", AttributeCommonInfo::SC_OMP},
+    {"hlsl", AttributeCommonInfo::SC_HLSL},
+    {"gsl", AttributeCommonInfo::SC_GSL},
+    {"riscv", AttributeCommonInfo::SC_RISCV}};
+
+AttributeCommonInfo::Scope
+getScopeFromNormalizedScopeName(const StringRef ScopeName) {
+  auto It = ScopeMap.find(ScopeName);
+  if (It == ScopeMap.end()) {
+    llvm_unreachable("Unknown normalized scope name. Shouldn't get here");
+  }
+
+  return It->second;
+}
+
 unsigned AttributeCommonInfo::calculateAttributeSpellingListIndex() const {
   // Both variables will be used in tablegen generated
   // attribute spell list index matching code.
   auto Syntax = static_cast<AttributeCommonInfo::Syntax>(getSyntax());
-  StringRef Scope = normalizeAttrScopeName(getScopeName(), Syntax);
-  StringRef Name = normalizeAttrName(getAttrName(), Scope, Syntax);
+  StringRef ScopeName = normalizeAttrScopeName(getScopeName(), Syntax);
+  StringRef Name = normalizeAttrName(getAttrName(), ScopeName, Syntax);
+
+  AttributeCommonInfo::Scope ComputedScope =
+      getScopeFromNormalizedScopeName(ScopeName);
 
 #include "clang/Sema/AttrSpellingListIndex.inc"
 }
diff --git a/clang/utils/TableGen/ClangAttrEmitter.cpp b/clang/utils/TableGen/ClangAttrEmitter.cpp
index 3031d81b3df731..e38cd33b81fcbc 100644
--- a/clang/utils/TableGen/ClangAttrEmitter.cpp
+++ b/clang/utils/TableGen/ClangAttrEmitter.cpp
@@ -20,6 +20,7 @@
 #include "llvm/ADT/STLExtras.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"
@@ -3841,11 +3842,95 @@ void EmitClangAttrSpellingListIndex(const RecordKeeper &Records,
     const Record &R = *I.second;
     std::vector<FlattenedSpelling> Spellings = GetFlattenedSpellings(R);
     OS << "  case AT_" << I.first << ": {\n";
-    for (unsigned I = 0; I < Spellings.size(); ++ I) {
-      OS << "    if (Name == \"" << Spellings[I].name() << "\" && "
-         << "getSyntax() == AttributeCommonInfo::AS_" << Spellings[I].variety()
-         << " && Scope == \"" << Spellings[I].nameSpace() << "\")\n"
-         << "        return " << I << ";\n";
+
+    // If there are none or one spelling to check, resort to the default
+    // behavior of returning index as 0.
+    if (Spellings.size() <= 1) {
+      OS << "    return 0;\n";
+      OS << "    break;\n";
+      OS << "  }\n";
+      continue;
+    }
+
+    bool HasSingleUniqueSpellingName = true;
+    StringMap<std::vector<const FlattenedSpelling *>> SpellingMap;
+
+    StringRef FirstName = Spellings.front().name();
+    for (const auto &S : Spellings) {
+      StringRef Name = S.name();
+      if (Name != FirstName)
+        HasSingleUniqueSpellingName = false;
+      SpellingMap[Name].push_back(&S);
+    }
+
+    // If parsed attribute has only one possible spelling name, only compare
+    // syntax and scope.
+    if (HasSingleUniqueSpellingName) {
+      for (const auto &[Idx, S] : enumerate(SpellingMap[FirstName])) {
+        OS << "    if (getSyntax() == AttributeCommonInfo::AS_" << S->variety();
+
+        std::string ScopeStr = "AttributeCommonInfo::SC_";
+        if (S->nameSpace() == "")
+          ScopeStr += "NONE";
+        else
+          ScopeStr += S->nameSpace().upper();
+
+        OS << " && ComputedScope == " << ScopeStr << ")\n"
+           << "      return " << Idx << ";\n";
+      }
+    } else {
+      size_t Idx = 0;
+      for (const auto &MapEntry : SpellingMap) {
+        StringRef Name = MapEntry.first();
+        const std::vector<const FlattenedSpelling *> &Cases = SpellingMap[Name];
+
+        if (Cases.size() > 1) {
+          // For names with multiple possible cases, emit an enclosing if such
+          // that the name is compared against only once. Eg:
+          //
+          // if (Name == "always_inline") {
+          //   if (getSyntax() == AttributeCommonInfo::AS_GNU &&
+          //       ComputedScope == AttributeCommonInfo::SC_None)
+          //     return 0;
+          //   ...
+          // }
+          OS << "    if (Name == \"" << Name << "\") {\n";
+          for (const auto &S : SpellingMap[Name]) {
+            OS << "      if (getSyntax() == AttributeCommonInfo::AS_"
+               << S->variety();
+            std::string ScopeStr = "AttributeCommonInfo::SC_";
+            if (S->nameSpace() == "")
+              ScopeStr += "NONE";
+            else
+              ScopeStr += S->nameSpace().upper();
+
+            OS << " && ComputedScope == " << ScopeStr << ")\n"
+               << "        return " << Idx << ";\n";
+            Idx++;
+          }
+          OS << "    }\n";
+        } else {
+          // If there is only possible case for the spelling name, no need of
+          // enclosing if. Eg.
+          //
+          // if (Name == "__forceinline" &&
+          //     getSyntax() == AttributeCommonInfo::AS_Keyword
+          //     && ComputedScope == AttributeCommonInfo::SC_NONE)
+          //   return 5;
+          const FlattenedSpelling *S = Cases.front();
+          OS << "    if (Name == \"" << Name << "\"";
+          OS << " && getSyntax() == AttributeCommonInfo::AS_" << S->variety();
+          std::string ScopeStr = "AttributeCommonInfo::SC_";
+          if (S->nameSpace() == "")
+            ScopeStr += "NONE";
+          else
+            ScopeStr += S->nameSpace().upper();
+
+          OS << " && ComputedScope == " << ScopeStr << ")\n"
+             << "        return " << Idx << ";\n";
+          Idx++;
+        }
+      }
     }
 
     OS << "    break;\n";

Copy link
Contributor

@arsenm arsenm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Show sample output?

@chinmaydd chinmaydd marked this pull request as draft November 5, 2024 01:10
@chinmaydd
Copy link
Contributor Author

Show sample output?

NEW:

case AT_AArch64SVEPcs: {
  if (getSyntax() == AttributeCommonInfo::AS_GNU && ComputedScope == AttributeCommonInfo::SC_NONE)
    return 0;
  if (getSyntax() == AttributeCommonInfo::AS_CXX11 && ComputedScope == AttributeCommonInfo::SC_CLANG)
    return 1;
  if (getSyntax() == AttributeCommonInfo::AS_C23 && ComputedScope == AttributeCommonInfo::SC_CLANG)
    return 2;
  break;
}

OLD:

case AT_AArch64SVEPcs: {
  if (Name == "aarch64_sve_pcs" && getSyntax() == AttributeCommonInfo::AS_GNU && Scope == "")
      return 0;
  if (Name == "aarch64_sve_pcs" && getSyntax() == AttributeCommonInfo::AS_CXX11 && Scope == "clang")
      return 1;
  if (Name == "aarch64_sve_pcs" && getSyntax() == AttributeCommonInfo::AS_C23 && Scope == "clang")
      return 2;
  break;
}

NEW:

case AT_Aligned: {
  if (Name == "aligned") {
    if (getSyntax() == AttributeCommonInfo::AS_GNU && ComputedScope == AttributeCommonInfo::SC_NONE)
      return 0;
    if (getSyntax() == AttributeCommonInfo::AS_CXX11 && ComputedScope == AttributeCommonInfo::SC_GNU)
      return 1;
    if (getSyntax() == AttributeCommonInfo::AS_C23 && ComputedScope == AttributeCommonInfo::SC_GNU)
      return 2;
  }
  if (Name == "align" && getSyntax() == AttributeCommonInfo::AS_Declspec && ComputedScope == AttributeCommonInfo::SC_NONE)
      return 3;
  if (Name == "alignas" && getSyntax() == AttributeCommonInfo::AS_Keyword && ComputedScope == AttributeCommonInfo::SC_NONE)
      return 4;
  if (Name == "_Alignas" && getSyntax() == AttributeCommonInfo::AS_Keyword && ComputedScope == AttributeCommonInfo::SC_NONE)
      return 5;
  break;
}

OLD:

case AT_Aligned: {
  if (Name == "aligned" && getSyntax() == AttributeCommonInfo::AS_GNU && Scope == "")
      return 0;
  if (Name == "aligned" && getSyntax() == AttributeCommonInfo::AS_CXX11 && Scope == "gnu")
      return 1;
  if (Name == "aligned" && getSyntax() == AttributeCommonInfo::AS_C23 && Scope == "gnu")
      return 2;
  if (Name == "align" && getSyntax() == AttributeCommonInfo::AS_Declspec && Scope == "")
      return 3;
  if (Name == "alignas" && getSyntax() == AttributeCommonInfo::AS_Keyword && Scope == "")
      return 4;
  if (Name == "_Alignas" && getSyntax() == AttributeCommonInfo::AS_Keyword && Scope == "")
      return 5;
  break;
}

Entire file at : https://gist.github.com/chinmaydd/1733a9a84932a45678c47f31be4d64d7

Copy link
Collaborator

@erichkeane erichkeane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to have missed a bunch, see alloc_size and allocating and alloc_align, all of which are the same spellings, but you're checking the name anyway (in the .inc file you linked).

There are actually quite a lot of cases you're not covering there, and the loop you did to generate this is a bit out of hand. I've suggested some simplifications.

bool HasSingleUniqueSpellingName = true;
StringMap<std::vector<const FlattenedSpelling *>> SpellingMap;

StringRef FirstName = Spellings.front().name();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does a ton of work in a way that is pretty difficult. Really what you're trying to find is that all of the names are the same, plus information about the names. I think something like:

std::vector<StringRef> Names;
llvm::transform(Spellings, std::back_inserter(Names), [](const FlattenedSpelling &FS) { return FS.name(); });
llvm::sort(Names);
llvm::erase(llvm::unique(Names), Names.end());

Would give you a lot of information that would be necessary/useful later.

First, you can check:
Names.size() ==1 <= Means that all of the names are the same name, so you can skip the name check entirely.

Names.end() == std::adjacent_find(Names.begin(), Names.end(), [](StringRef LHS, StringRef RHS){ return LHS.size() == RHS.size(); });
If THAT is true, all you have to do is check 'size', since all of them have a unique length.

THOUGH, you probably want to do this on a 'size' of name basis, so if you do that in the loop of the current FlattenedSpelling (and add to the condition in the adjacent_find that the size is the current FS.name().size()), if you don't find one, you can do just the size check.

Alternatively, you can do just a copy_if from that based on the current FlattenedSpelling name's size, which would give you the bits to tell which actual characters to check. So something like:

for (const FlattenedSpelling &FS : Spellings) {
  std::vector<StringRef> SameLenNames;
  llvm::copy_if(Names, std::back_inserter(SameLenNames), [&](StringRef N) { return N.size() == FS.name().size(); });

  // insert print size check here
  -- Since Names.size() > 1 above, we actually have to check the sizes.  THOUGH, IMO, you can be a little smarter about combining it into here too, and only doing the copy_if that is necessary (so we only do the loop on Spellings once).

  if (SameLenNames.size() > 1) {
     // if size > 1 we have to check individual characters, else we could just do size + scope/etc
     // print with just the size check.
     for(StringRef SLN : SameLenNames) {
        if (SLN == FS.name()) continue; // don't check same name!
        auto [CurItr, OtherItr] = std::mismatch(FS.name().begin(), FS.name().end(), SLN.begin());

        // NOW you know which character to check to make sure we're unique.  so something like:
        OS << "Name[" << std::distance(FS.name().begin(), CurItr) << "] == '" << *CurItr << "'';
     }
  }

}

THOUGH, like i said, you can probably combine the Names.size() ==1 condition inside of that loop as well. And probably the adjacent_find test can be skipped with the loop I just wrote above.

EmitClangAttrSpellingListIndex() performs a lot of
unnecessary string comparisons which is wasteful in time and space. This
commit attempts to refactor this method to be more performant.
@chinmaydd
Copy link
Contributor Author

chinmaydd commented Nov 5, 2024

Hi @erichkeane, thanks for your detailed review and comments.

I had some thoughts about your optimized approach which I would like to share.

I agree that falling back to full string comparisons is "safe" but non-optimal. However, performing "first different character" comparison might get complicated if you have more than 2 different spelling names with the same size.

An example case is AT_NoSanitizeSpecific with - "no_sanitize_thread" and "no_sanitize_memory" (size 18). In this case it is easy to check for the differing character by using std::mismatch. However, a case where there are 3 such strings (like "aaaba", "aaacb", "aaabc") would involve generation of a much more complex conditional. Although rare, I'm not sure if we can ignore this situation. We may sacrifice readability of the emitter code / debuggability of the .inc file at the cost of minimal optimizations (full string comparisons now happen in only 6 cases).

I'm happy to add the FIXME note, but would like to hear what you think.

To address a previous comment -

This seems to have missed a bunch, see alloc_size and allocating and alloc_align, all of which are the same spellings, but you're checking the name anyway (in the .inc file you linked).

I'm confident that my earlier approach did not perform string comparisons for "alloc_size", "allocating" and "alloc_align". The 2 tests that were failing were because I assumed that spellings with the same name would have consecutive indices. This failed for AT_unused. But I concede that the earlier loop did not leverage the .size() for a more optimal comparison :) This way is definitely better.

Gist contains updated output.

@chinmaydd chinmaydd marked this pull request as ready for review November 6, 2024 17:44
@erichkeane
Copy link
Collaborator

Hi @erichkeane, thanks for your detailed review and comments.

I had some thoughts about your optimized approach which I would like to share.

I agree that falling back to full string comparisons is "safe" but non-optimal. However, performing "first different character" comparison might get complicated if you have more than 2 different spelling names with the same size.

An example case is AT_NoSanitizeSpecific with - "no_sanitize_thread" and "no_sanitize_memory" (size 18). In this case it is easy to check for the differing character by using std::mismatch. However, a case where there are 3 such strings (like "aaaba", "aaacb", "aaabc") would involve generation of a much more complex conditional. Although rare, I'm not sure if we can ignore this situation. We may sacrifice readability of the emitter code / debuggability of the .inc file at the cost of minimal optimizations (full string comparisons now happen in only 6 cases).

I'm happy to add the FIXME note, but would like to hear what you think.

So the conditional actually doesn't have to be all that difficult. You need N-1 comparisons to differentiate (though you m ight end up with duplicates). For example, in your 3 strings example if differentiating the first one, my algorithm would generate Str.size() == 5 && Str[3] == 'b' && Str[3] == 'b' (since that is the difference character for each). It is simple enough join with an 'and' and a loop, as long as we don't care about duplicates.

As far as debugability/readability of emitted code: it isn't really a concern here. Once we get the tablegen 'right' (which traditionally doesn't take much effort/testing), no one ever gets into here again. The spelling-identification one uses a trie, and it is a giant mess of undebugability :)

To address a previous comment -

This seems to have missed a bunch, see alloc_size and allocating and alloc_align, all of which are the same spellings, but you're checking the name anyway (in the .inc file you linked).

I'm confident that my earlier approach did not perform string comparisons for "alloc_size", "allocating" and "alloc_align". The 2 tests that were failing were because I assumed that spellings with the same name would have consecutive indices. This failed for AT_unused. But I concede that the earlier loop did not leverage the .size() for a more optimal comparison :) This way is definitely better.

Got it! It wasn't clear based on the old implementation what was happening, just from the GIST that something wasn't working.

Gist contains updated output.

That GIST looks about right. I see as you mentioned, ~6 different comparisons, which isn't too bad. Definitely an improvement.

Copy link
Collaborator

@erichkeane erichkeane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just 1 nit/simplification here, else this LGTM!

@chinmaydd chinmaydd merged commit 15d1560 into llvm:main Nov 7, 2024
8 checks passed
@chinmaydd
Copy link
Contributor Author

Thanks @erichkeane and @arsenm !

@chinmaydd chinmaydd deleted the chinmaydd/attrfix branch November 7, 2024 21:02
@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 7, 2024

LLVM Buildbot has detected a new failure on builder libc-x86_64-debian-dbg-runtimes-build running on libc-x86_64-debian while building clang at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/78/builds/9236

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build
@@@BUILD_STEP build libc@@@
Running: ninja libc
[1/928] Generating VCSRevision.h
[2/928] Building CXX object tools/llvm-config/CMakeFiles/llvm-config.dir/llvm-config.cpp.o
[3/928] Linking CXX executable bin/llvm-config
[4/928] Building CXX object lib/Object/CMakeFiles/LLVMObject.dir/IRSymtab.cpp.o
[5/928] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
/usr/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/tools/clang/utils/TableGen -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/include -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/tools/clang/include -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/include -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -fno-common -Woverloaded-virtual -Wno-nested-anon-types -g  -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
[6/928] Linking CXX static library lib/libLLVMObject.a
[7/928] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/AsmPrinter.cpp.o
[8/928] Building CXX object lib/LTO/CMakeFiles/LLVMLTO.dir/LTO.cpp.o
ninja: build stopped: subcommand failed.
['ninja', 'libc'] exited with return code 1.
The build step threw an exception...
Traceback (most recent call last):
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py", line 164, in step
    yield
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py", line 121, in main
    run_command(['ninja', 'libc'])
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py", line 179, in run_command
    util.report_run_cmd(cmd, cwd=directory)
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-zorg/zorg/buildbot/builders/annotated/util.py", line 49, in report_run_cmd
    subprocess.check_call(cmd, shell=shell, *args, **kwargs)
  File "/usr/lib/python3.11/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ninja', 'libc']' returned non-zero exit status 1.
@@@STEP_FAILURE@@@
@@@BUILD_STEP check-libc@@@
Running: ninja check-libc
[1/921] Linking CXX static library lib/libLLVMLTO.a
[2/921] Linking CXX static library lib/libLLVMAsmPrinter.a
Step 6 (build libc) failure: build libc (failure)
@@@BUILD_STEP build libc@@@
Running: ninja libc
[1/928] Generating VCSRevision.h
[2/928] Building CXX object tools/llvm-config/CMakeFiles/llvm-config.dir/llvm-config.cpp.o
[3/928] Linking CXX executable bin/llvm-config
[4/928] Building CXX object lib/Object/CMakeFiles/LLVMObject.dir/IRSymtab.cpp.o
[5/928] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
/usr/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/tools/clang/utils/TableGen -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/include -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/tools/clang/include -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/include -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -fno-common -Woverloaded-virtual -Wno-nested-anon-types -g  -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
[6/928] Linking CXX static library lib/libLLVMObject.a
[7/928] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/AsmPrinter.cpp.o
[8/928] Building CXX object lib/LTO/CMakeFiles/LLVMLTO.dir/LTO.cpp.o
ninja: build stopped: subcommand failed.
['ninja', 'libc'] exited with return code 1.
The build step threw an exception...
Traceback (most recent call last):
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py", line 164, in step
    yield
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py", line 121, in main
    run_command(['ninja', 'libc'])
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/build/../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py", line 179, in run_command
    util.report_run_cmd(cmd, cwd=directory)
  File "/home/llvm-libc-buildbot/home/sivachandra/libc-x86_64-debian/libc-x86_64-debian-dbg-runtimes-build/llvm-zorg/zorg/buildbot/builders/annotated/util.py", line 49, in report_run_cmd
    subprocess.check_call(cmd, shell=shell, *args, **kwargs)
  File "/usr/lib/python3.11/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ninja', 'libc']' returned non-zero exit status 1.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 7, 2024

LLVM Buildbot has detected a new failure on builder lldb-x86_64-debian running on lldb-x86_64-debian while building clang at step 4 "build".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/162/builds/10003

Here is the relevant piece of the build log for the reference
Step 4 (build) failure: build (failure)
0.964 [1257/3/1] Generating VCSRevision.h
2.593 [1254/5/2] Building CXX object tools/llvm-config/CMakeFiles/llvm-config.dir/llvm-config.cpp.o
2.659 [1253/5/3] Linking CXX executable bin/llvm-config
2.845 [1253/4/4] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
/usr/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/worker/2.0.1/lldb-x86_64-debian/build/tools/clang/utils/TableGen -I/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/clang/utils/TableGen -I/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/clang/include -I/home/worker/2.0.1/lldb-x86_64-debian/build/tools/clang/include -I/home/worker/2.0.1/lldb-x86_64-debian/build/include -I/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /home/worker/2.0.1/lldb-x86_64-debian/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp
/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/home/worker/2.0.1/lldb-x86_64-debian/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
3.621 [1253/3/5] Building CXX object lib/Object/CMakeFiles/LLVMObject.dir/IRSymtab.cpp.o
10.819 [1253/2/6] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/AsmPrinter.cpp.o
12.032 [1253/1/7] Building CXX object lib/LTO/CMakeFiles/LLVMLTO.dir/LTO.cpp.o
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 7, 2024

LLVM Buildbot has detected a new failure on builder clang-ve-ninja running on hpce-ve-main while building clang at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/12/builds/9158

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/ve-linux.py ...' (failure)
...
[794/4055] Building ObjcopyOpts.inc...
[795/4055] Building Opts.inc...
[796/4055] Building Opts.inc...
[797/4055] Building Opts.inc...
[798/4055] Building WindresOpts.inc...
[799/4055] Building InstallNameToolOpts.inc...
[800/4055] Building BitcodeStripOpts.inc...
[801/4055] Building StripOpts.inc...
[802/4055] Building CXX object tools/llvm-mt/CMakeFiles/llvm-mt.dir/llvm-mt-driver.cpp.o
[803/4055] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
/usr/bin/ccache  /home/buildbot/install/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/scratch/buildbot/bothome/clang-ve-ninja/build/build_llvm/tools/clang/utils/TableGen -I/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen -I/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/include -I/scratch/buildbot/bothome/clang-ve-ninja/build/build_llvm/tools/clang/include -I/scratch/buildbot/bothome/clang-ve-ninja/build/build_llvm/include -I/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/llvm/include -O2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O2 -g -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp
/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
[804/4055] Building CXX object tools/llvm-mt/CMakeFiles/llvm-mt.dir/llvm-mt.cpp.o
[805/4055] Building Options.inc...
[806/4055] Building VEGenRegisterInfo.inc...
[807/4055] Building VEGenSubtargetInfo.inc...
[808/4055] Building VEGenCallingConv.inc...
[809/4055] Building VEGenAsmWriter.inc...
[810/4055] Building VEGenMCCodeEmitter.inc...
[811/4055] Building VEGenDAGISel.inc...
[812/4055] Building VEGenAsmMatcher.inc...
[813/4055] Building VEGenDisassemblerTables.inc...
[814/4055] Building VEGenInstrInfo.inc...
[815/4055] Building X86GenRegisterBank.inc...
[816/4055] Building RISCVTargetParserDef.inc...
[817/4055] Building X86GenRegisterInfo.inc...
[818/4055] Building X86GenCallingConv.inc...
[819/4055] Building X86GenInstrMapping.inc...
[820/4055] Building X86GenExegesis.inc...
[821/4055] Building X86GenFoldTables.inc...
[822/4055] Building X86GenDisassemblerTables.inc...
[823/4055] Building X86GenMnemonicTables.inc...
[824/4055] Building X86GenAsmWriter1.inc...
[825/4055] Building X86GenAsmMatcher.inc...
[826/4055] Building X86GenAsmWriter.inc...
[827/4055] Building X86GenFastISel.inc...
[828/4055] Building X86GenGlobalISel.inc...
[829/4055] Building X86GenDAGISel.inc...
[830/4055] Building X86GenSubtargetInfo.inc...
[831/4055] Building X86GenInstrInfo.inc...
ninja: build stopped: subcommand failed.
make: *** [build-llvm] Error 1
Step 7 (build-llvm) failure: build-llvm (failure)
...
[794/4055] Building ObjcopyOpts.inc...
[795/4055] Building Opts.inc...
[796/4055] Building Opts.inc...
[797/4055] Building Opts.inc...
[798/4055] Building WindresOpts.inc...
[799/4055] Building InstallNameToolOpts.inc...
[800/4055] Building BitcodeStripOpts.inc...
[801/4055] Building StripOpts.inc...
[802/4055] Building CXX object tools/llvm-mt/CMakeFiles/llvm-mt.dir/llvm-mt-driver.cpp.o
[803/4055] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
/usr/bin/ccache  /home/buildbot/install/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/scratch/buildbot/bothome/clang-ve-ninja/build/build_llvm/tools/clang/utils/TableGen -I/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen -I/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/include -I/scratch/buildbot/bothome/clang-ve-ninja/build/build_llvm/tools/clang/include -I/scratch/buildbot/bothome/clang-ve-ninja/build/build_llvm/include -I/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/llvm/include -O2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O2 -g -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp
/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/scratch/buildbot/bothome/clang-ve-ninja/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
[804/4055] Building CXX object tools/llvm-mt/CMakeFiles/llvm-mt.dir/llvm-mt.cpp.o
[805/4055] Building Options.inc...
[806/4055] Building VEGenRegisterInfo.inc...
[807/4055] Building VEGenSubtargetInfo.inc...
[808/4055] Building VEGenCallingConv.inc...
[809/4055] Building VEGenAsmWriter.inc...
[810/4055] Building VEGenMCCodeEmitter.inc...
[811/4055] Building VEGenDAGISel.inc...
[812/4055] Building VEGenAsmMatcher.inc...
[813/4055] Building VEGenDisassemblerTables.inc...
[814/4055] Building VEGenInstrInfo.inc...
[815/4055] Building X86GenRegisterBank.inc...
[816/4055] Building RISCVTargetParserDef.inc...
[817/4055] Building X86GenRegisterInfo.inc...
[818/4055] Building X86GenCallingConv.inc...
[819/4055] Building X86GenInstrMapping.inc...
[820/4055] Building X86GenExegesis.inc...
[821/4055] Building X86GenFoldTables.inc...
[822/4055] Building X86GenDisassemblerTables.inc...
[823/4055] Building X86GenMnemonicTables.inc...
[824/4055] Building X86GenAsmWriter1.inc...
[825/4055] Building X86GenAsmMatcher.inc...
[826/4055] Building X86GenAsmWriter.inc...
[827/4055] Building X86GenFastISel.inc...
[828/4055] Building X86GenGlobalISel.inc...
[829/4055] Building X86GenDAGISel.inc...
[830/4055] Building X86GenSubtargetInfo.inc...
[831/4055] Building X86GenInstrInfo.inc...
ninja: build stopped: subcommand failed.
make: *** [build-llvm] Error 1

@chinmaydd
Copy link
Contributor Author

chinmaydd commented Nov 7, 2024

Buildbot errors fixed by dd1c99b

@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 7, 2024

LLVM Buildbot has detected a new failure on builder clang-m68k-linux-cross running on suse-gary-m68k-cross while building clang at step 5 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/27/builds/1695

Here is the relevant piece of the build log for the reference
Step 5 (ninja check 1) failure: stage 1 checked (failure)
...
[202/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/ExecutionTest.cpp.o
[203/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/CastExprTest.cpp.o
[204/381] Building CXX object tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/StmtPrinterTest.cpp.o
[205/381] Building CXX object tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/EvaluateAsRValueTest.cpp.o
[206/381] Building CXX object tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/SourceLocationTest.cpp.o
[207/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/CommentHandlerTest.cpp.o
[208/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/LookupTest.cpp.o
[209/381] Building CXX object tools/clang/unittests/ASTMatchers/CMakeFiles/ASTMatchersTests.dir/ASTMatchersNodeTest.cpp.o
[210/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/LexicallyOrderedRecursiveASTVisitorTest.cpp.o
[211/381] Building CXX object tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/ASTImporterTest.cpp.o
FAILED: tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/ASTImporterTest.cpp.o 
/usr/bin/c++ -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/tools/clang/unittests/AST -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/unittests/AST -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/tools/clang/include -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/stage1/include -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/llvm/include -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/third-party/unittest/googletest/include -I/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/third-party/unittest/googlemock/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -O3 -DNDEBUG -std=c++17  -Wno-variadic-macros -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -Wno-suggest-override -MD -MT tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/ASTImporterTest.cpp.o -MF tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/ASTImporterTest.cpp.o.d -o tools/clang/unittests/AST/CMakeFiles/ASTTests.dir/ASTImporterTest.cpp.o -c /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/unittests/AST/ASTImporterTest.cpp
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
[212/381] Building CXX object tools/clang/unittests/ASTMatchers/CMakeFiles/ASTMatchersTests.dir/ASTMatchersNarrowingTest.cpp.o
[213/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/DeclRefExpr.cpp.o
[214/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/ConstructExpr.cpp.o
[215/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/InitListExprPostOrder.cpp.o
[216/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/LambdaDefaultCapture.cpp.o
[217/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RangeSelectorTest.cpp.o
[218/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/DependencyScanning/DependencyScannerTest.cpp.o
In file included from /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Serialization/ASTReader.h:30,
                 from /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h:19,
                 from /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h:17,
                 from /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h:13,
                 from /var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/unittests/Tooling/DependencyScanning/DependencyScannerTest.cpp:17:
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Sema/Sema.h:463:7: warning: ‘clang::Sema’ declared with greater visibility than the type of its field ‘clang::Sema::UnusedFileScopedDecls’ [-Wattributes]
  463 | class Sema final : public SemaBase {
      |       ^~~~
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Sema/Sema.h:463:7: warning: ‘clang::Sema’ declared with greater visibility than the type of its field ‘clang::Sema::TentativeDefinitions’ [-Wattributes]
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Sema/Sema.h:463:7: warning: ‘clang::Sema’ declared with greater visibility than the type of its field ‘clang::Sema::ExtVectorDecls’ [-Wattributes]
/var/lib/buildbot/workers/suse-gary-m68k-cross/clang-m68k-linux-cross/llvm/clang/include/clang/Sema/Sema.h:463:7: warning: ‘clang::Sema’ declared with greater visibility than the type of its field ‘clang::Sema::DelegatingCtorDecls’ [-Wattributes]
[219/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/Class.cpp.o
[220/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/Attr.cpp.o
[221/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/LambdaTemplateParams.cpp.o
[222/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/IntegerLiteral.cpp.o
[223/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/CXXBoolLiteralExpr.cpp.o
[224/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/LambdaExpr.cpp.o
[225/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/InitListExprPreOrder.cpp.o
[226/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/CallbacksCompoundAssignOperator.cpp.o
[227/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/CXXMemberCall.cpp.o
[228/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/InitListExprPostOrderNoQueue.cpp.o
[229/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/CXXOperatorCallExprTraverser.cpp.o
[230/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/BitfieldInitializer.cpp.o
[231/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/QualTypeNamesTest.cpp.o
[232/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/CXXMethodDecl.cpp.o
[233/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/ImplicitCtorInitializer.cpp.o
[234/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/DeductionGuide.cpp.o
[235/381] Building CXX object tools/clang/unittests/Tooling/CMakeFiles/ToolingTests.dir/RecursiveASTVisitorTests/ImplicitCtor.cpp.o

StringRef Value) { return Element.first < Value; });
assert(It != std::end(ScopeList) && It->first == ScopeName);

return It->second;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like exactly what StringSwitch is for...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ooof, yeah, you're right. This should jsut be a StringSwitch...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting, I had no idea about StringSwitch. I'll raise a new PR to fix that.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 7, 2024

LLVM Buildbot has detected a new failure on builder llvm-x86_64-debian-dylib running on gribozavr4 while building clang at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/60/builds/12164

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
6.141 [6301/96/631] Building HexagonGenSubtargetInfo.inc...
6.162 [6300/96/632] Building PPCGenExegesis.inc...
6.292 [6299/96/633] Building SystemZGenSubtargetInfo.inc...
6.298 [6298/96/634] Building ARMGenSubtargetInfo.inc...
6.326 [6297/96/635] Building PPCGenDisassemblerTables.inc...
6.332 [6296/96/636] Building PPCGenAsmMatcher.inc...
6.396 [6295/96/637] Building ARMGenDAGISel.inc...
6.422 [6294/96/638] Building PPCGenRegisterInfo.inc...
6.446 [6293/96/639] Building PPCGenCallingConv.inc...
6.473 [6292/96/640] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes /usr/bin/ccache /usr/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/b/1/llvm-x86_64-debian-dylib/build/tools/clang/utils/TableGen -I/b/1/llvm-x86_64-debian-dylib/llvm-project/clang/utils/TableGen -I/b/1/llvm-x86_64-debian-dylib/llvm-project/clang/include -I/b/1/llvm-x86_64-debian-dylib/build/tools/clang/include -I/b/1/llvm-x86_64-debian-dylib/build/include -I/b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /b/1/llvm-x86_64-debian-dylib/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp
/b/1/llvm-x86_64-debian-dylib/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/b/1/llvm-x86_64-debian-dylib/llvm-project/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
6.479 [6292/95/641] Building MipsGenSubtargetInfo.inc...
6.538 [6292/94/642] Building SparcGenAsmWriter.inc...
6.557 [6292/93/643] Building SparcGenDisassemblerTables.inc...
6.566 [6292/92/644] Building ARMGenGlobalISel.inc...
6.589 [6292/91/645] Building NVPTXGenRegisterInfo.inc...
6.642 [6292/90/646] Building SystemZGenInstrInfo.inc...
6.660 [6292/89/647] Building LoongArchGenDAGISel.inc...
6.662 [6292/88/648] Building SparcGenCallingConv.inc...
6.750 [6292/87/649] Building PPCGenAsmWriter.inc...
6.851 [6292/86/650] Building MipsGenFastISel.inc...
6.862 [6292/85/651] Building SparcGenAsmMatcher.inc...
6.884 [6292/84/652] Building SparcGenSubtargetInfo.inc...
6.913 [6292/83/653] Building NVPTXGenAsmWriter.inc...
6.914 [6292/82/654] Building SparcGenDAGISel.inc...
6.925 [6292/81/655] Building SparcGenRegisterInfo.inc...
6.984 [6292/80/656] Building SparcGenSearchableTables.inc...
6.995 [6292/79/657] Building MipsGenGlobalISel.inc...
7.012 [6292/78/658] Building MipsGenDAGISel.inc...
7.091 [6292/77/659] Building WebAssemblyGenAsmWriter.inc...
7.128 [6292/76/660] Building WebAssemblyGenMCCodeEmitter.inc...
7.156 [6292/75/661] Building PPCGenSubtargetInfo.inc...
7.205 [6292/74/662] Building HexagonGenDAGISel.inc...
7.222 [6292/73/663] Building WebAssemblyGenAsmMatcher.inc...
7.256 [6292/72/664] Building WebAssemblyGenRegisterInfo.inc...
7.279 [6292/71/665] Building WebAssemblyGenDisassemblerTables.inc...
7.315 [6292/70/666] Building NVPTXGenSubtargetInfo.inc...
7.446 [6292/69/667] Building AArch64GenFastISel.inc...
7.476 [6292/68/668] Building VEGenCallingConv.inc...
7.528 [6292/67/669] Building WebAssemblyGenDAGISel.inc...
7.538 [6292/66/670] Building MipsGenInstrInfo.inc...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 8, 2024

LLVM Buildbot has detected a new failure on builder clang-x86_64-debian-fast running on gribozavr4 while building clang at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/56/builds/11711

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
4.017 [5248/71/719] Building SystemZGenDAGISel.inc...
4.022 [5248/70/720] Building XCoreGenDisassemblerTables.inc...
4.023 [5248/69/721] Building PPCGenGlobalISel.inc...
4.035 [5248/68/722] Building WebAssemblyGenDAGISel.inc...
4.051 [5248/67/723] Building SystemZGenDisassemblerTables.inc...
4.075 [5248/66/724] Building AArch64GenFastISel.inc...
4.088 [5248/65/725] Building XCoreGenSubtargetInfo.inc...
4.165 [5248/64/726] Building XCoreGenRegisterInfo.inc...
4.185 [5248/63/727] Building XCoreGenDAGISel.inc...
4.258 [5248/62/728] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
FAILED: tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes /usr/bin/ccache /usr/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/b/1/clang-x86_64-debian-fast/llvm.obj/tools/clang/utils/TableGen -I/b/1/clang-x86_64-debian-fast/llvm.src/clang/utils/TableGen -I/b/1/clang-x86_64-debian-fast/llvm.src/clang/include -I/b/1/clang-x86_64-debian-fast/llvm.obj/tools/clang/include -I/b/1/clang-x86_64-debian-fast/llvm.obj/include -I/b/1/clang-x86_64-debian-fast/llvm.src/llvm/include -std=c++11 -Wdocumentation -Wno-documentation-deprecated-sync -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -MF tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o.d -o tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o -c /b/1/clang-x86_64-debian-fast/llvm.src/clang/utils/TableGen/ClangAttrEmitter.cpp
/b/1/clang-x86_64-debian-fast/llvm.src/clang/utils/TableGen/ClangAttrEmitter.cpp:3869:51: error: reference to local binding 'FS' declared in enclosing function 'clang::EmitClangAttrSpellingListIndex'
            [&](StringRef N) { return N.size() == FS.name().size(); });
                                                  ^
/b/1/clang-x86_64-debian-fast/llvm.src/clang/utils/TableGen/ClangAttrEmitter.cpp:3863:28: note: 'FS' declared here
    for (const auto &[Idx, FS] : enumerate(Spellings)) {
                           ^
1 error generated.
4.260 [5248/61/729] Building WebAssemblyGenInstrInfo.inc...
4.265 [5248/60/730] Building XCoreGenInstrInfo.inc...
4.372 [5248/59/731] Building PPCGenDAGISel.inc...
4.407 [5248/58/732] Building X86GenRegisterInfo.inc...
4.411 [5248/57/733] Building X86GenRegisterBank.inc...
4.459 [5248/56/734] Building NVPTXGenInstrInfo.inc...
4.573 [5248/55/735] Building NVPTXGenDAGISel.inc...
4.688 [5248/54/736] Building SystemZGenSubtargetInfo.inc...
4.821 [5248/53/737] Building RISCVTargetParserDef.inc...
4.854 [5248/52/738] Building AArch64GenGlobalISel.inc...
4.939 [5248/51/739] Building RISCVGenMacroFusion.inc...
5.020 [5248/50/740] Building SystemZGenInstrInfo.inc...
5.191 [5248/49/741] Building RISCVGenRegisterBank.inc...
5.219 [5248/48/742] Building RISCVGenCompressInstEmitter.inc...
5.236 [5248/47/743] Building X86GenCallingConv.inc...
5.283 [5248/46/744] Building RISCVGenPostLegalizeGICombiner.inc...
5.323 [5248/45/745] Building RISCVGenMCCodeEmitter.inc...
5.326 [5248/44/746] Building RISCVGenO0PreLegalizeGICombiner.inc...
5.334 [5248/43/747] Building RISCVGenRegisterInfo.inc...
5.402 [5248/42/748] Building RISCVGenMCPseudoLowering.inc...
5.415 [5248/41/749] Building RISCVGenDisassemblerTables.inc...
5.470 [5248/40/750] Building RISCVGenPreLegalizeGICombiner.inc...
5.510 [5248/39/751] Building RISCVGenAsmWriter.inc...
5.513 [5248/38/752] Building AArch64GenDAGISel.inc...
5.611 [5248/37/753] Building X86GenExegesis.inc...
5.655 [5248/36/754] Building X86GenAsmWriter.inc...
5.765 [5248/35/755] Building X86GenAsmWriter1.inc...
5.783 [5248/34/756] Building X86GenInstrMapping.inc...
5.927 [5248/33/757] Building X86GenMnemonicTables.inc...
6.023 [5248/32/758] Building RISCVGenAsmMatcher.inc...

Groverkss pushed a commit to iree-org/llvm-project that referenced this pull request Nov 15, 2024
`EmitClangAttrSpellingListIndex()` performs a lot of unnecessary string
comparisons which is wasteful in time and stack space. This commit
attempts to refactor this method to be more performant.
zahiraam added a commit to zahiraam/llvm-1 that referenced this pull request Dec 31, 2024
againull pushed a commit to intel/llvm that referenced this pull request Jan 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants