[Lldb-commits] [PATCH] D79147: [WIP] Merge -debug-info-kind=constructor into -debug-info-kind=limited
akhuang updated this revision to Diff 276252. akhuang added a comment. Herald added a subscriber: fedor.sergeev. Instead of merging =constructor and =limited, change the default to use =constructor Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79147/new/ https://reviews.llvm.org/D79147 Files: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/cl-options.c clang/test/Driver/clang-g-opts.c clang/test/Driver/cuda-dwarf-2.cu clang/test/Driver/debug-options-as.c clang/test/Driver/debug-options.c clang/test/Driver/integrated-as.s clang/test/Driver/myriad-toolchain.c clang/test/Driver/split-debug.c lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp Index: lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp === --- lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp +++ lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp @@ -106,6 +106,7 @@ int main() { MemberTest::Base B1; B1.Get(); + MemberTest::Class C1; MemberTest::Class::StaticMemberFunc(1, 10, 2); return 0; } Index: clang/test/Driver/split-debug.c === --- clang/test/Driver/split-debug.c +++ clang/test/Driver/split-debug.c @@ -68,18 +68,18 @@ // RUN: FileCheck -check-prefix=CHECK-NOINLINE-WITHOUT-SPLIT < %t %s // // CHECK-NOINLINE-WITHOUT-SPLIT: "-fno-split-dwarf-inlining" -// CHECK-NOINLINE-WITHOUT-SPLIT: "-debug-info-kind=limited" +// CHECK-NOINLINE-WITHOUT-SPLIT: "-debug-info-kind=constructor" // RUN: %clang -target x86_64-unknown-linux-gnu -gmlt -gsplit-dwarf -fno-split-dwarf-inlining -S -### %s 2> %t // RUN: FileCheck -check-prefix=CHECK-SPLIT-WITH-GMLT < %t %s // -// CHECK-SPLIT-WITH-GMLT: "-debug-info-kind=limited" +// CHECK-SPLIT-WITH-GMLT: "-debug-info-kind=constructor" // CHECK-SPLIT-WITH-GMLT: "-split-dwarf-output" // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -fno-split-dwarf-inlining -S -### %s 2> %t // RUN: FileCheck -check-prefix=CHECK-SPLIT-WITH-NOINL < %t %s // -// CHECK-SPLIT-WITH-NOINL: "-debug-info-kind=limited" +// CHECK-SPLIT-WITH-NOINL: "-debug-info-kind=constructor" // CHECK-SPLIT-WITH-NOINL: "-split-dwarf-output" // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -gmlt -fsplit-dwarf-inlining -S -### %s 2> %t @@ -92,7 +92,7 @@ // RUN: %clang -target x86_64-unknown-linux-gnu -gmlt -gsplit-dwarf -S -### %s 2> %t // RUN: FileCheck -check-prefix=CHECK-SPLIT-OVER-GMLT < %t %s // -// CHECK-SPLIT-OVER-GMLT: "-debug-info-kind=limited" +// CHECK-SPLIT-OVER-GMLT: "-debug-info-kind=constructor" // CHECK-SPLIT-OVER-GMLT: "-split-dwarf-file" // CHECK-SPLIT-OVER-GMLT: "-split-dwarf-output" @@ -117,6 +117,6 @@ // RUN: %clang -target x86_64-unknown-linux-gnu -g0 -gsplit-dwarf=split -S -### %s 2> %t // RUN: FileCheck -check-prefix=CHECK-SPLIT-OVER-G0 < %t %s // -// CHECK-SPLIT-OVER-G0: "-debug-info-kind=limited" +// CHECK-SPLIT-OVER-G0: "-debug-info-kind=constructor" // CHECK-SPLIT-OVER-G0: "-split-dwarf-file" // CHECK-SPLIT-OVER-G0: "-split-dwarf-output" Index: clang/test/Driver/myriad-toolchain.c === --- clang/test/Driver/myriad-toolchain.c +++ clang/test/Driver/myriad-toolchain.c @@ -83,7 +83,7 @@ // NOSTDLIB-NOT: "-lc" // RUN: %clang -### -c -g %s -target sparc-myriad 2>&1 | FileCheck -check-prefix=G_SPARC %s -// G_SPARC: "-debug-info-kind=limited" "-dwarf-version=2" +// G_SPARC: "-debug-info-kind=constructor" "-dwarf-version=2" // RUN: %clang -### -c %s -target sparc-myriad-rtems -fuse-init-array 2>&1 \ // RUN: | FileCheck -check-prefix=USE-INIT-ARRAY %s Index: clang/test/Driver/integrated-as.s === --- clang/test/Driver/integrated-as.s +++ clang/test/Driver/integrated-as.s @@ -27,19 +27,19 @@ // XA_INCLUDE2: "-Ifoo_dir" // RUN: %clang -### -target x86_64--- -c -integrated-as %s -gdwarf-4 -gdwarf-2 2>&1 | FileCheck --check-prefix=DWARF2 %s -// DWARF2: "-debug-info-kind=limited" "-dwarf-version=2" +// DWARF2: "-debug-info-kind=constructor" "-dwarf-version=2" // RUN: %clang -### -target x86_64--- -c -integrated-as %s -gdwarf-3 2>&1 | FileCheck --check-prefix=DWARF3 %s -// DWARF3: "-debug-info-kind=limited" "-dwarf-version=3" +// DWARF3: "-debug-info-kind=constructor" "-dwarf-version=3" // RUN: %clang -### -target x86_64--- -c -integrated-as %s -gdwarf-4 2>&1 | FileCheck --check-prefix=DWARF4 %s -// DWARF4: "-debug-info-kind=limited" "-dwarf-version=4" +// DWARF4: "-debug-info-kind=constructor" "-dwarf-version=4" // RUN: %clang -### -target x86_64--- -c -integrated-as %s -Xassembler -gdwarf-2 2>&1 | FileCheck --check-prefix=DWARF2XASSEMBLER %s -// DWARF2XASSEMBLER: "-debug-info-kind=limited" "-dwarf-version=2" +// DWARF2XASSEMBLER: "-debug-info-kind=constructor" "-dwarf-version=2" // RUN: %clang -###
[Lldb-commits] [PATCH] D79147: [WIP] Merge -debug-info-kind=constructor into -debug-info-kind=limited
akhuang created this revision. Herald added subscribers: lldb-commits, cfe-commits, aprantl. Herald added projects: clang, LLDB. There will be an RFC for this in cfe-dev. This reduces the amount of class debug info emitted in Limited debug info mode. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D79147 Files: clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Basic/DebugInfoOptions.h clang/lib/CodeGen/CGDebugInfo.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/test/CodeGenCXX/debug-info-limited-ctor.cpp clang/test/CodeGenCXX/debug-lambda-this.cpp lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp Index: lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp === --- lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp +++ lldb/test/Shell/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp @@ -106,6 +106,7 @@ int main() { MemberTest::Base B1; B1.Get(); + MemberTest::Class C1; MemberTest::Class::StaticMemberFunc(1, 10, 2); return 0; } Index: clang/test/CodeGenCXX/debug-lambda-this.cpp === --- clang/test/CodeGenCXX/debug-lambda-this.cpp +++ clang/test/CodeGenCXX/debug-lambda-this.cpp @@ -1,8 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -fexceptions -std=c++11 -debug-info-kind=limited | FileCheck %s struct D { - D(); - D(const D&); int x; int d(int x); }; @@ -15,7 +13,7 @@ // CHECK: ![[D:[0-9]+]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "D", // CHECK: ![[POINTER:.*]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: ![[D]], size: 64) // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "this", -// CHECK-SAME: line: 11 +// CHECK-SAME: line: 9 // CHECK-SAME: baseType: ![[POINTER]] // CHECK-SAME: size: 64 // CHECK-NOT:offset: 0 Index: clang/test/CodeGenCXX/debug-info-limited-ctor.cpp === --- clang/test/CodeGenCXX/debug-info-limited-ctor.cpp +++ clang/test/CodeGenCXX/debug-info-limited-ctor.cpp @@ -1,4 +1,4 @@ -// RUN: %clang -cc1 -debug-info-kind=constructor -emit-llvm %s -o - | FileCheck %s +// RUN: %clang -cc1 -debug-info-kind=limited -emit-llvm %s -o - | FileCheck %s // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "A"{{.*}}DIFlagTypePassByValue struct A { Index: clang/lib/Frontend/CompilerInvocation.cpp === --- clang/lib/Frontend/CompilerInvocation.cpp +++ clang/lib/Frontend/CompilerInvocation.cpp @@ -727,7 +727,6 @@ llvm::StringSwitch(A->getValue()) .Case("line-tables-only", codegenoptions::DebugLineTablesOnly) .Case("line-directives-only", codegenoptions::DebugDirectivesOnly) -.Case("constructor", codegenoptions::DebugInfoConstructor) .Case("limited", codegenoptions::LimitedDebugInfo) .Case("standalone", codegenoptions::FullDebugInfo) .Default(~0U); Index: clang/lib/Driver/ToolChains/Clang.cpp === --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -1004,9 +1004,6 @@ case codegenoptions::DebugLineTablesOnly: CmdArgs.push_back("-debug-info-kind=line-tables-only"); break; - case codegenoptions::DebugInfoConstructor: -CmdArgs.push_back("-debug-info-kind=constructor"); -break; case codegenoptions::LimitedDebugInfo: CmdArgs.push_back("-debug-info-kind=limited"); break; Index: clang/lib/CodeGen/CGDebugInfo.cpp === --- clang/lib/CodeGen/CGDebugInfo.cpp +++ clang/lib/CodeGen/CGDebugInfo.cpp @@ -592,7 +592,6 @@ case codegenoptions::DebugDirectivesOnly: EmissionKind = llvm::DICompileUnit::DebugDirectivesOnly; break; - case codegenoptions::DebugInfoConstructor: case codegenoptions::LimitedDebugInfo: case codegenoptions::FullDebugInfo: EmissionKind = llvm::DICompileUnit::FullDebug; @@ -1689,9 +1688,8 @@ if (CGM.getLangOpts().Optimize) SPFlags |= llvm::DISubprogram::SPFlagOptimized; - // In this debug mode, emit type info for a class when its constructor type - // info is emitted. - if (DebugKind == codegenoptions::DebugInfoConstructor) + // Emit class type info when its constructor is emitted. + if (DebugKind == codegenoptions::LimitedDebugInfo) if (const CXXConstructorDecl *CD = dyn_cast(Method)) completeClass(CD->getParent()); @@ -2280,10 +2278,10 @@ !isClassOrMethodDLLImport(CXXDecl)) return true; - // In constructor debug mode, only emit debug info for a class when its - // constructor is emitted. Skip this optimization if the class or any of - // its methods