[Lldb-commits] [lldb] [lldb][Format][NFCI] Refactor CPlusPlusLanguage::GetFunctionDisplayName into helpers and use LLVM style (PR #135331)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Apr 11 01:50:42 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Michael Buch (Michael137)
<details>
<summary>Changes</summary>
Same cleanup as in https://github.com/llvm/llvm-project/pull/135031. It pretty much is the same code that we had to duplicate in the language plugin. Maybe eventually we'll find a way of getting rid of the duplication.
---
Full diff: https://github.com/llvm/llvm-project/pull/135331.diff
1 Files Affected:
- (modified) lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp (+76-53)
``````````diff
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 4b045d12ad494..09fe9be665df7 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -1697,65 +1697,88 @@ bool CPlusPlusLanguage::IsSourceFile(llvm::StringRef file_path) const {
return file_path.contains("/usr/include/c++/");
}
+static VariableListSP GetFunctionVariableList(const SymbolContext &sc) {
+ assert(sc.function);
+
+ if (sc.block)
+ if (Block *inline_block = sc.block->GetContainingInlinedBlock())
+ return inline_block->GetBlockVariableList(true);
+
+ return sc.function->GetBlock(true).GetBlockVariableList(true);
+}
+
+static char const *GetInlinedFunctionName(const SymbolContext &sc) {
+ if (!sc.block)
+ return nullptr;
+
+ const Block *inline_block = sc.block->GetContainingInlinedBlock();
+ if (!inline_block)
+ return nullptr;
+
+ const InlineFunctionInfo *inline_info =
+ inline_block->GetInlinedFunctionInfo();
+ if (!inline_info)
+ return nullptr;
+
+ return inline_info->GetName().AsCString(nullptr);
+}
+
+static bool PrintFunctionNameWithArgs(Stream &s,
+ const ExecutionContext *exe_ctx,
+ const SymbolContext &sc) {
+ assert(sc.function);
+
+ ExecutionContextScope *exe_scope =
+ exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr;
+
+ const char *cstr = sc.function->GetName().AsCString(nullptr);
+ if (!cstr)
+ return false;
+
+ if (const char *inlined_name = GetInlinedFunctionName(sc)) {
+ s.PutCString(cstr);
+ s.PutCString(" [inlined] ");
+ cstr = inlined_name;
+ }
+
+ VariableList args;
+ if (auto variable_list_sp = GetFunctionVariableList(sc))
+ variable_list_sp->AppendVariablesWithScope(eValueTypeVariableArgument,
+ args);
+
+ if (args.GetSize() > 0) {
+ PrettyPrintFunctionNameWithArgs(s, cstr, exe_scope, args);
+ } else {
+ s.PutCString(cstr);
+ }
+
+ return true;
+}
+
bool CPlusPlusLanguage::GetFunctionDisplayName(
const SymbolContext *sc, const ExecutionContext *exe_ctx,
FunctionNameRepresentation representation, Stream &s) {
switch (representation) {
case FunctionNameRepresentation::eNameWithArgs: {
+ assert(sc);
+
// Print the function name with arguments in it
- if (sc->function) {
- ExecutionContextScope *exe_scope =
- exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr;
- const char *cstr = sc->function->GetName().AsCString(nullptr);
- if (cstr) {
- const InlineFunctionInfo *inline_info = nullptr;
- VariableListSP variable_list_sp;
- bool get_function_vars = true;
- if (sc->block) {
- Block *inline_block = sc->block->GetContainingInlinedBlock();
-
- if (inline_block) {
- get_function_vars = false;
- inline_info = inline_block->GetInlinedFunctionInfo();
- if (inline_info)
- variable_list_sp = inline_block->GetBlockVariableList(true);
- }
- }
-
- if (get_function_vars) {
- variable_list_sp =
- sc->function->GetBlock(true).GetBlockVariableList(true);
- }
-
- if (inline_info) {
- s.PutCString(cstr);
- s.PutCString(" [inlined] ");
- cstr = inline_info->GetName().GetCString();
- }
-
- VariableList args;
- if (variable_list_sp)
- variable_list_sp->AppendVariablesWithScope(eValueTypeVariableArgument,
- args);
- if (args.GetSize() > 0) {
- if (!PrettyPrintFunctionNameWithArgs(s, cstr, exe_scope, args))
- return false;
- } else {
- s.PutCString(cstr);
- }
- return true;
- }
- } else if (sc->symbol) {
- const char *cstr = sc->symbol->GetName().AsCString(nullptr);
- if (cstr) {
- s.PutCString(cstr);
- return true;
- }
- }
- } break;
- default:
+ if (sc->function)
+ return PrintFunctionNameWithArgs(s, exe_ctx, *sc);
+
+ if (!sc->symbol)
+ return false;
+
+ const char *cstr = sc->symbol->GetName().AsCString(nullptr);
+ if (!cstr)
+ return false;
+
+ s.PutCString(cstr);
+
+ return true;
+ }
+ case FunctionNameRepresentation::eNameWithNoArgs:
+ case FunctionNameRepresentation::eName:
return false;
}
-
- return false;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/135331
More information about the lldb-commits
mailing list