[clang] dbad941 - [NFC][Clang] Use StringSwitch instead of array for parsing attribute scope (#115414)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 8 13:27:24 PST 2024
Author: Chinmay Deshpande
Date: 2024-11-08T13:27:20-08:00
New Revision: dbad9412909a1879f29a4f717b2bf149c9a58369
URL: https://github.com/llvm/llvm-project/commit/dbad9412909a1879f29a4f717b2bf149c9a58369
DIFF: https://github.com/llvm/llvm-project/commit/dbad9412909a1879f29a4f717b2bf149c9a58369.diff
LOG: [NFC][Clang] Use StringSwitch instead of array for parsing attribute scope (#115414)
Added:
Modified:
clang/lib/Basic/Attributes.cpp
Removed:
################################################################################
diff --git a/clang/lib/Basic/Attributes.cpp b/clang/lib/Basic/Attributes.cpp
index 2d18fb3f9d5bb2..6904bce3ac51ec 100644
--- a/clang/lib/Basic/Attributes.cpp
+++ b/clang/lib/Basic/Attributes.cpp
@@ -18,6 +18,7 @@
#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringSwitch.h"
using namespace clang;
@@ -155,26 +156,17 @@ std::string AttributeCommonInfo::getNormalizedFullName() const {
normalizeName(getAttrName(), getScopeName(), getSyntax()));
}
-// Sorted list of attribute scope names
-static constexpr std::pair<StringRef, AttributeCommonInfo::Scope> ScopeList[] =
- {{"", AttributeCommonInfo::Scope::NONE},
- {"clang", AttributeCommonInfo::Scope::CLANG},
- {"gnu", AttributeCommonInfo::Scope::GNU},
- {"gsl", AttributeCommonInfo::Scope::GSL},
- {"hlsl", AttributeCommonInfo::Scope::HLSL},
- {"msvc", AttributeCommonInfo::Scope::MSVC},
- {"omp", AttributeCommonInfo::Scope::OMP},
- {"riscv", AttributeCommonInfo::Scope::RISCV}};
-
AttributeCommonInfo::Scope
getScopeFromNormalizedScopeName(StringRef ScopeName) {
- auto It = std::lower_bound(
- std::begin(ScopeList), std::end(ScopeList), ScopeName,
- [](const std::pair<StringRef, AttributeCommonInfo::Scope> &Element,
- StringRef Value) { return Element.first < Value; });
- assert(It != std::end(ScopeList) && It->first == ScopeName);
-
- return It->second;
+ return llvm::StringSwitch<AttributeCommonInfo::Scope>(ScopeName)
+ .Case("", AttributeCommonInfo::Scope::NONE)
+ .Case("clang", AttributeCommonInfo::Scope::CLANG)
+ .Case("gnu", AttributeCommonInfo::Scope::GNU)
+ .Case("gsl", AttributeCommonInfo::Scope::GSL)
+ .Case("hlsl", AttributeCommonInfo::Scope::HLSL)
+ .Case("msvc", AttributeCommonInfo::Scope::MSVC)
+ .Case("omp", AttributeCommonInfo::Scope::OMP)
+ .Case("riscv", AttributeCommonInfo::Scope::RISCV);
}
unsigned AttributeCommonInfo::calculateAttributeSpellingListIndex() const {
More information about the cfe-commits
mailing list