[clang] b47d9d0 - [clang][DebugInfo] Don't emit VTable debug symbols for -gline-tables-only. (#151025)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 30 06:48:09 PDT 2025
Author: Steve Merritt
Date: 2025-07-30T09:48:06-04:00
New Revision: b47d9d033acd26e492bef9429ee9bce640be0901
URL: https://github.com/llvm/llvm-project/commit/b47d9d033acd26e492bef9429ee9bce640be0901
DIFF: https://github.com/llvm/llvm-project/commit/b47d9d033acd26e492bef9429ee9bce640be0901.diff
LOG: [clang][DebugInfo] Don't emit VTable debug symbols for -gline-tables-only. (#151025)
The -gline-tables-only option emits minimal debug info for functions,
files and line numbers while omitting variables, parameters and most
type information. VTable debug symbols are emitted to facilitate a
debugger's ability to perform automatic type promotion on variables and
parameters. With variables and parameters being omitted, the VTable
symbols are unnecessary.
Added:
Modified:
clang/lib/CodeGen/CGDebugInfo.cpp
clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index 77fc3a2aee94f..7a69b5d92022b 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -2641,6 +2641,8 @@ void CGDebugInfo::emitVTableSymbol(llvm::GlobalVariable *VTable,
const CXXRecordDecl *RD) {
if (!CGM.getTarget().getCXXABI().isItaniumFamily())
return;
+ if (DebugKind <= llvm::codegenoptions::DebugLineTablesOnly)
+ return;
ASTContext &Context = CGM.getContext();
StringRef SymbolName = "_vtable$";
diff --git a/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp b/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp
index 9b86a49d69f5b..192169b0ab798 100644
--- a/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp
+++ b/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp
@@ -14,9 +14,11 @@ class E : public C {
// CHECK-NOT: DW_TAG_reference type
void x(const D& d);
};
+// CHECK-NOT: DW_TAG_structure_type
struct F {
enum X { };
void func(X);
+ // CHECK-NOT: DW_TAG_member
virtual ~F();
};
F::~F() {
More information about the cfe-commits
mailing list