Author: dblaikie Date: Wed Aug 24 13:29:58 2016 New Revision: 279651 URL: http://llvm.org/viewvc/llvm-project?rev=279651&view=rev Log: DebugInfo: Add flag to CU to disable emission of inline debug info into the skeleton CU
In cases where .dwo/.dwp files are guaranteed to be available, skipping the extra online (in the .o file) inline info can save a substantial amount of space - see the original r221306 for more details there. Added: cfe/trunk/test/CodeGen/split-debug-inlining.c Modified: cfe/trunk/include/clang/Driver/Options.td cfe/trunk/include/clang/Frontend/CodeGenOptions.def cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/test/CodeGen/debug-info-imported-entity.cpp cfe/trunk/test/CodeGen/split-debug-filename.c Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Wed Aug 24 13:29:58 2016 @@ -1255,6 +1255,10 @@ def fdebug_types_section: Flag <["-"], " Flags<[CC1Option]>, HelpText<"Place debug types in their own section (ELF Only)">; def fno_debug_types_section: Flag<["-"], "fno-debug-types-section">, Group<f_Group>, Flags<[CC1Option]>; +def fsplit_dwarf_inlining: Flag <["-"], "fsplit-dwarf-inlining">, Group<f_Group>, + Flags<[CC1Option]>, HelpText<"Place debug types in their own section (ELF Only)">; +def fno_split_dwarf_inlining: Flag<["-"], "fno-split-dwarf-inlining">, Group<f_Group>, + Flags<[CC1Option]>; def fdebug_prefix_map_EQ : Joined<["-"], "fdebug-prefix-map=">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"remap file source paths in debug info">; Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original) +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Wed Aug 24 13:29:58 2016 @@ -194,6 +194,9 @@ CODEGENOPT(DebugTypeExtRefs, 1, 0) ///< CODEGENOPT(DebugExplicitImport, 1, 0) ///< Whether or not debug info should ///< contain explicit imports for ///< anonymous namespaces +CODEGENOPT(SplitDwarfInlining, 1, 1) ///< Whether to include inlining info in the + ///< skeleton CU to allow for symbolication + ///< of inline stack frames without .dwo files. CODEGENOPT(EmitLLVMUseLists, 1, 0) ///< Control whether to serialize use-lists. Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Wed Aug 24 13:29:58 2016 @@ -454,7 +454,8 @@ void CGDebugInfo::CreateCompileUnit() { TheCU = DBuilder.createCompileUnit( LangTag, remapDIPath(MainFileName), remapDIPath(getCurrentDirname()), Producer, LO.Optimize, CGM.getCodeGenOpts().DwarfDebugFlags, RuntimeVers, - CGM.getCodeGenOpts().SplitDwarfFile, EmissionKind, 0 /* DWOid */); + CGM.getCodeGenOpts().SplitDwarfFile, EmissionKind, 0 /* DWOid */, + CGM.getCodeGenOpts().SplitDwarfInlining); } llvm::DIType *CGDebugInfo::CreateType(const BuiltinType *BT) { Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Wed Aug 24 13:29:58 2016 @@ -4697,6 +4697,10 @@ void Clang::ConstructJob(Compilation &C, CmdArgs.push_back("-generate-type-units"); } + if (!Args.hasFlag(options::OPT_fsplit_dwarf_inlining, + options::OPT_fno_split_dwarf_inlining, true)) + CmdArgs.push_back("-fno-split-dwarf-inlining"); + // CloudABI and WebAssembly use -ffunction-sections and -fdata-sections by // default. bool UseSeparateSections = Triple.getOS() == llvm::Triple::CloudABI || Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Wed Aug 24 13:29:58 2016 @@ -499,6 +499,7 @@ static bool ParseCodeGenArgs(CodeGenOpti Opts.WholeProgramVTables = Args.hasArg(OPT_fwhole_program_vtables); Opts.LTOVisibilityPublicStd = Args.hasArg(OPT_flto_visibility_public_std); Opts.SplitDwarfFile = Args.getLastArgValue(OPT_split_dwarf_file); + Opts.SplitDwarfInlining = !Args.hasArg(OPT_fno_split_dwarf_inlining); Opts.DebugTypeExtRefs = Args.hasArg(OPT_dwarf_ext_refs); Opts.DebugExplicitImport = Triple.isPS4CPU(); Modified: cfe/trunk/test/CodeGen/debug-info-imported-entity.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info-imported-entity.cpp?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/debug-info-imported-entity.cpp (original) +++ cfe/trunk/test/CodeGen/debug-info-imported-entity.cpp Wed Aug 24 13:29:58 2016 @@ -3,9 +3,7 @@ namespace std { class A; } using std::A; using ::A; - -// CHECK: [[CompileUnit:![0-9]+]] = distinct !DICompileUnit({{.+}} imports: [[Imports:![0-9]+]]) +// CHECK: [[CompileUnit:![0-9]+]] = distinct !DICompileUnit({{.+}} imports: [[Imports:![0-9]+]] // CHECK: [[Imports]] = !{[[ImportedEntity:![0-9]+]]} // CHECK: [[ImportedEntity]] = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: [[CompileUnit]], entity: [[STDA:![0-9]+]], line: 4) // CHECK: [[STDA]] = !DICompositeType(tag: DW_TAG_class_type, name: "A", - Modified: cfe/trunk/test/CodeGen/split-debug-filename.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/split-debug-filename.c?rev=279651&r1=279650&r2=279651&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/split-debug-filename.c (original) +++ cfe/trunk/test/CodeGen/split-debug-filename.c Wed Aug 24 13:29:58 2016 @@ -1,7 +1,7 @@ -// RUN: %clang -target x86_64-linux-gnu -gsplit-dwarf -S -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -debug-info-kind=limited -split-dwarf-file foo.dwo -S -emit-llvm -o - %s | FileCheck %s int main (void) { return 0; } // Testing to ensure that the dwo name gets output into the compile unit. -// CHECK: split-debug-filename.dwo +// CHECK: !DICompileUnit({{.*}}, splitDebugFilename: "foo.dwo" Added: cfe/trunk/test/CodeGen/split-debug-inlining.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/split-debug-inlining.c?rev=279651&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/split-debug-inlining.c (added) +++ cfe/trunk/test/CodeGen/split-debug-inlining.c Wed Aug 24 13:29:58 2016 @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -debug-info-kind=limited -fno-split-dwarf-inlining -S -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -debug-info-kind=limited -S -emit-llvm -o - %s | FileCheck --check-prefix=ABSENT %s +void f(void) {} +// Verify that disabling split debug inlining info is propagated to the debug +// info metadata. +// CHECK: !DICompileUnit({{.*}}, splitDebugInlining: false +// ABSENT-NOT: splitDebugInlining _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits