[libcxx-commits] [clang] [libcxxabi] [lldb] [llvm] [DRAFT] [lldb][Expression] Add structor variant to LLDB's function call labels (PR #149827)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jul 31 01:56:58 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp -- lldb/test/API/lang/cpp/expr-definition-in-dylib/lib.cpp lldb/test/API/lang/cpp/expr-definition-in-dylib/lib.h lldb/test/API/lang/cpp/expr-definition-in-dylib/main.cpp lldb/unittests/Expression/ExpressionTest.cpp clang/lib/AST/Mangle.cpp libcxxabi/src/demangle/ItaniumDemangle.h lldb/include/lldb/Core/Module.h lldb/include/lldb/Core/ModuleList.h lldb/include/lldb/Expression/Expression.h lldb/include/lldb/Symbol/SymbolFile.h lldb/source/Core/Module.cpp lldb/source/Core/ModuleList.cpp lldb/source/Expression/Expression.cpp lldb/source/Expression/IRExecutionUnit.cpp lldb/source/Expression/IRInterpreter.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h lldb/unittests/Symbol/TestTypeSystemClang.cpp llvm/include/llvm/Demangle/Demangle.h llvm/include/llvm/Demangle/ItaniumDemangle.h llvm/lib/Demangle/ItaniumDemangle.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/lldb/source/Expression/Expression.cpp b/lldb/source/Expression/Expression.cpp
index 33dbc967c..c4ac1087e 100644
--- a/lldb/source/Expression/Expression.cpp
+++ b/lldb/source/Expression/Expression.cpp
@@ -62,8 +62,8 @@ lldb_private::FunctionCallLabel::fromString(llvm::StringRef label) {
uint64_t discriminator = 0;
if (!llvm::to_integer(discriminator_label, discriminator))
- return llvm::createStringError(
- llvm::formatv("failed to parse discriminator from '{0}'.", discriminator_label));
+ return llvm::createStringError(llvm::formatv(
+ "failed to parse discriminator from '{0}'.", discriminator_label));
return FunctionCallLabel{/*.module_id=*/module_id,
/*.symbol_id=*/die_id,
@@ -81,5 +81,6 @@ void llvm::format_provider<FunctionCallLabel>::format(
const FunctionCallLabel &label, raw_ostream &OS, StringRef Style) {
OS << llvm::formatv("FunctionCallLabel{ module_id: {0:x}, symbol_id: {1:x}, "
"lookup_name: {3}, discriminator: {2} }",
- label.module_id, label.symbol_id, label.lookup_name, label.discriminator);
+ label.module_id, label.symbol_id, label.lookup_name,
+ label.discriminator);
}
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index fcb69f056..0b790d23f 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -2526,26 +2526,27 @@ SymbolFileDWARF::ResolveFunctionCallLabel(const FunctionCallLabel &label) {
auto spec = entry.GetAttributeValueAsReferenceDIE(DW_AT_specification);
if (!spec)
return true;
-
+
if (spec != die)
return true;
-
+
// We're not picking a specific structor variant DIE, so we're done here.
if (!label.discriminator) {
die = entry;
return false;
}
-
+
const char *mangled =
entry.GetMangledName(/*substitute_name_allowed=*/false);
if (!mangled)
return true;
-
+
llvm::ItaniumPartialDemangler D;
if (D.partialDemangle(mangled))
return true;
-
- if (D.getCtorOrDtorVariant() != GetItaniumCtorDtorVariant(label.discriminator).value_or(-1))
+
+ if (D.getCtorOrDtorVariant() !=
+ GetItaniumCtorDtorVariant(label.discriminator).value_or(-1))
return true;
return false;
``````````
</details>
https://github.com/llvm/llvm-project/pull/149827
More information about the libcxx-commits
mailing list