[clang-tools-extra] [clang-doc] concatenate SymbolIDs to truncated mangled names (PR #159490)

Paul Kirth via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 22 13:03:40 PDT 2025


================
@@ -780,12 +780,10 @@ static void populateSymbolInfo(SymbolInfo &I, const T *D, const FullComment *C,
     MangledStream << D->getNameAsString();
   // A 250 length limit was chosen since 255 is a common limit across
   // different filesystems, with a 5 character buffer for file extensions.
-  if (MangledName.size() > 250)
-    // File creation fails if the mangled name is too long, so default to the
-    // USR. We should look for a better check since filesystems differ in
-    // maximum filename length
-    I.MangledName = llvm::toStringRef(llvm::toHex(I.USR));
-  else
+  if (MangledName.size() > 250) {
+    auto SymbolID = llvm::toStringRef(llvm::toHex(I.USR)).str();
+    I.MangledName = MangledName.substr(0, 250 - SymbolID.size()) + SymbolID;
----------------
ilovepi wrote:

Its a micro optimization, but you can save 2 allocations by using Twine to concat in one go in the assignment. It does leave the code a bit less readable, but not too badly. Cant recall if the code below needs to be wrapped in `().str()` or not either.
```suggestion
    I.MangledName = Twine(MangledName.substr(0, 250 - SymbolID.size())) + llvm::toStringRef(llvm::toHex(I.USR));
```

https://github.com/llvm/llvm-project/pull/159490


More information about the cfe-commits mailing list