@@ -9042,6 +9042,21 @@ ConstString TypeSystemClang::DeclGetName(void *opaque_decl) {
9042
9042
return ConstString ();
9043
9043
}
9044
9044
9045
+ static ConstString
9046
+ ExtractMangledNameFromFunctionCallLabel (llvm::StringRef label) {
9047
+ auto components_or_err = splitFunctionCallLabel (label);
9048
+ if (!components_or_err) {
9049
+ llvm::consumeError (components_or_err.takeError ());
9050
+ return {};
9051
+ }
9052
+
9053
+ llvm::StringRef mangled = (*components_or_err)[0 ];
9054
+ if (Mangled::IsMangledName (mangled))
9055
+ return ConstString (mangled);
9056
+
9057
+ return {};
9058
+ }
9059
+
9045
9060
ConstString TypeSystemClang::DeclGetMangledName (void *opaque_decl) {
9046
9061
clang::NamedDecl *nd = llvm::dyn_cast_or_null<clang::NamedDecl>(
9047
9062
static_cast <clang::Decl *>(opaque_decl));
@@ -9053,14 +9068,12 @@ ConstString TypeSystemClang::DeclGetMangledName(void *opaque_decl) {
9053
9068
if (!mc || !mc->shouldMangleCXXName (nd))
9054
9069
return {};
9055
9070
9056
- // We have a LLDB FunctionCallLabel instead of an ordinary mangled name.
9071
+ // We have an LLDB FunctionCallLabel instead of an ordinary mangled name.
9057
9072
// Extract the mangled name out of this label.
9058
- if (const auto *label = nd->getAttr <AsmLabelAttr>()) {
9059
- if (auto components_or_err = splitFunctionCallLabel (label->getLabel ()))
9060
- return ConstString ((*components_or_err)[0 ]);
9061
- else
9062
- llvm::consumeError (components_or_err.takeError ());
9063
- }
9073
+ if (const auto *label = nd->getAttr <AsmLabelAttr>())
9074
+ if (ConstString mangled =
9075
+ ExtractMangledNameFromFunctionCallLabel (label->getLabel ()))
9076
+ return mangled;
9064
9077
9065
9078
llvm::SmallVector<char , 1024 > buf;
9066
9079
llvm::raw_svector_ostream llvm_ostrm (buf);
0 commit comments