[clang] [llvm] [Support] Add getAllocTokenModeAsString() helper (PR #169650)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 26 05:05:09 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-support
Author: Marco Elver (melver)
<details>
<summary>Changes</summary>
Add a helper function getAllocTokenModeAsString() to convert AllocTokenMode values to their string representation.
NFC.
---
Full diff: https://github.com/llvm/llvm-project/pull/169650.diff
3 Files Affected:
- (modified) clang/lib/Frontend/CompilerInvocation.cpp (+1-15)
- (modified) llvm/include/llvm/Support/AllocToken.h (+3)
- (modified) llvm/lib/Support/AllocToken.cpp (+14)
``````````diff
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index c7c29a91721c0..81824a76ea3d0 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -3956,21 +3956,7 @@ void CompilerInvocationBase::GenerateLangArgs(const LangOptions &Opts,
std::to_string(*Opts.AllocTokenMax));
if (Opts.AllocTokenMode) {
- StringRef S;
- switch (*Opts.AllocTokenMode) {
- case llvm::AllocTokenMode::Increment:
- S = "increment";
- break;
- case llvm::AllocTokenMode::Random:
- S = "random";
- break;
- case llvm::AllocTokenMode::TypeHash:
- S = "typehash";
- break;
- case llvm::AllocTokenMode::TypeHashPointerSplit:
- S = "typehashpointersplit";
- break;
- }
+ StringRef S = llvm::getAllocTokenModeAsString(*Opts.AllocTokenMode);
GenerateArg(Consumer, OPT_falloc_token_mode_EQ, S);
}
}
diff --git a/llvm/include/llvm/Support/AllocToken.h b/llvm/include/llvm/Support/AllocToken.h
index e40d8163a9d7c..1dc3a0cacef24 100644
--- a/llvm/include/llvm/Support/AllocToken.h
+++ b/llvm/include/llvm/Support/AllocToken.h
@@ -46,6 +46,9 @@ inline constexpr AllocTokenMode DefaultAllocTokenMode =
LLVM_ABI std::optional<AllocTokenMode>
getAllocTokenModeFromString(StringRef Name);
+/// Returns the canonical string name for the given AllocTokenMode.
+LLVM_ABI StringRef getAllocTokenModeAsString(AllocTokenMode Mode);
+
/// Metadata about an allocation used to generate a token ID.
struct AllocTokenMetadata {
SmallString<64> TypeName;
diff --git a/llvm/lib/Support/AllocToken.cpp b/llvm/lib/Support/AllocToken.cpp
index daa40d4e9dcc6..cabe52189c4bb 100644
--- a/llvm/lib/Support/AllocToken.cpp
+++ b/llvm/lib/Support/AllocToken.cpp
@@ -28,6 +28,20 @@ llvm::getAllocTokenModeFromString(StringRef Name) {
.Default(std::nullopt);
}
+StringRef llvm::getAllocTokenModeAsString(AllocTokenMode Mode) {
+ switch (Mode) {
+ case AllocTokenMode::Increment:
+ return "increment";
+ case AllocTokenMode::Random:
+ return "random";
+ case AllocTokenMode::TypeHash:
+ return "typehash";
+ case AllocTokenMode::TypeHashPointerSplit:
+ return "typehashpointersplit";
+ }
+ llvm_unreachable("Unknown AllocTokenMode");
+}
+
static uint64_t getStableHash(const AllocTokenMetadata &Metadata,
uint64_t MaxTokens) {
return getStableSipHash(Metadata.TypeName) % MaxTokens;
``````````
</details>
https://github.com/llvm/llvm-project/pull/169650
More information about the llvm-commits
mailing list