[llvm] r270613 - DWARF: Omit DW_AT_APPLE attributes (except ObjC ones) when not targeting LLDB

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Tue May 24 15:19:18 PDT 2016


Awesome, thanks for doing this Dave. It kept slipping off my radar :)

-eric

On Tue, May 24, 2016 at 2:25 PM David Blaikie via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: dblaikie
> Date: Tue May 24 16:19:28 2016
> New Revision: 270613
>
> URL: http://llvm.org/viewvc/llvm-project?rev=270613&view=rev
> Log:
> DWARF: Omit DW_AT_APPLE attributes (except ObjC ones) when not targeting
> LLDB
>
> These attributes aren't used by other debuggers (& may be confused with
> other DWARF extensions) so they just waste space (about 1.5% on .dwo
> file size on a random large program I tested).
>
> We could remove the ObjC property ones too, but I figured they were
> probably more necessary when trying to understand ObjC (I could be wrong
> though) & so any debugger interested in working with ObjC would use
> them, perhaps? (also, there are some legacy tests in Clang that test for
> them - making it one of those annoying cross-project commits and/or
> cleanup to refactor those tests)
>
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
>     llvm/trunk/test/DebugInfo/Generic/2010-04-19-FramePtr.ll
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=270613&r1=270612&r2=270613&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Tue May 24
> 16:19:28 2016
> @@ -287,7 +287,8 @@ DIE &DwarfCompileUnit::updateSubprogramS
>    DIE *SPDie = getOrCreateSubprogramDIE(SP, includeMinimalInlineScopes());
>
>    attachLowHighPC(*SPDie, Asm->getFunctionBegin(), Asm->getFunctionEnd());
> -  if
> (!DD->getCurrentFunction()->getTarget().Options.DisableFramePointerElim(
> +  if (DD->useAppleExtensionAttributes() &&
> +
> !DD->getCurrentFunction()->getTarget().Options.DisableFramePointerElim(
>            *DD->getCurrentFunction()))
>      addFlag(*SPDie, dwarf::DW_AT_APPLE_omit_frame_ptr);
>
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=270613&r1=270612&r2=270613&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Tue May 24 16:19:28
> 2016
> @@ -234,6 +234,8 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Mo
>    else
>      HasDwarfAccelTables = DwarfAccelTables == Enable;
>
> +  HasAppleExtensionAttributes = tuneForLLDB();
> +
>    // Handle split DWARF. Off by default for now.
>    if (SplitDwarf == Default)
>      HasSplitDwarf = false;
> @@ -419,16 +421,18 @@ DwarfDebug::constructDwarfCompileUnit(co
>      addGnuPubAttributes(NewCU, Die);
>    }
>
> -  if (DIUnit->isOptimized())
> -    NewCU.addFlag(Die, dwarf::DW_AT_APPLE_optimized);
> -
> -  StringRef Flags = DIUnit->getFlags();
> -  if (!Flags.empty())
> -    NewCU.addString(Die, dwarf::DW_AT_APPLE_flags, Flags);
> -
> -  if (unsigned RVer = DIUnit->getRuntimeVersion())
> -    NewCU.addUInt(Die, dwarf::DW_AT_APPLE_major_runtime_vers,
> -                  dwarf::DW_FORM_data1, RVer);
> +  if (useAppleExtensionAttributes()) {
> +    if (DIUnit->isOptimized())
> +      NewCU.addFlag(Die, dwarf::DW_AT_APPLE_optimized);
> +
> +    StringRef Flags = DIUnit->getFlags();
> +    if (!Flags.empty())
> +      NewCU.addString(Die, dwarf::DW_AT_APPLE_flags, Flags);
> +
> +    if (unsigned RVer = DIUnit->getRuntimeVersion())
> +      NewCU.addUInt(Die, dwarf::DW_AT_APPLE_major_runtime_vers,
> +                    dwarf::DW_FORM_data1, RVer);
> +  }
>
>    if (useSplitDwarf())
>      NewCU.initSection(Asm->getObjFileLowering().getDwarfInfoDWOSection());
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=270613&r1=270612&r2=270613&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Tue May 24 16:19:28 2016
> @@ -260,6 +260,7 @@ class DwarfDebug : public DebugHandlerBa
>    /// DWARF5 Experimental Options
>    /// @{
>    bool HasDwarfAccelTables;
> +  bool HasAppleExtensionAttributes;
>    bool HasSplitDwarf;
>
>    /// Separated Dwarf Variables
> @@ -505,6 +506,10 @@ public:
>    /// use to accelerate lookup.
>    bool useDwarfAccelTables() const { return HasDwarfAccelTables; }
>
> +  bool useAppleExtensionAttributes() const {
> +    return HasAppleExtensionAttributes;
> +  }
> +
>    /// Returns whether or not to change the current debug info for the
>    /// split dwarf proposal support.
>    bool useSplitDwarf() const { return HasSplitDwarf; }
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=270613&r1=270612&r2=270613&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Tue May 24 16:19:28
> 2016
> @@ -1244,11 +1244,13 @@ void DwarfUnit::applySubprogramAttribute
>    if (!SP->isLocalToUnit())
>      addFlag(SPDie, dwarf::DW_AT_external);
>
> -  if (SP->isOptimized())
> -    addFlag(SPDie, dwarf::DW_AT_APPLE_optimized);
> +  if (DD->useAppleExtensionAttributes()) {
> +    if (SP->isOptimized())
> +      addFlag(SPDie, dwarf::DW_AT_APPLE_optimized);
>
> -  if (unsigned isa = Asm->getISAEncoding())
> -    addUInt(SPDie, dwarf::DW_AT_APPLE_isa, dwarf::DW_FORM_flag, isa);
> +    if (unsigned isa = Asm->getISAEncoding())
> +      addUInt(SPDie, dwarf::DW_AT_APPLE_isa, dwarf::DW_FORM_flag, isa);
> +  }
>
>    if (SP->isLValueReference())
>      addFlag(SPDie, dwarf::DW_AT_reference);
>
> Modified: llvm/trunk/test/DebugInfo/Generic/2010-04-19-FramePtr.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/2010-04-19-FramePtr.ll?rev=270613&r1=270612&r2=270613&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/Generic/2010-04-19-FramePtr.ll (original)
> +++ llvm/trunk/test/DebugInfo/Generic/2010-04-19-FramePtr.ll Tue May 24
> 16:19:28 2016
> @@ -1,7 +1,9 @@
> -; RUN: %llc_dwarf -asm-verbose -O1 -o %t < %s
> -; RUN: grep DW_AT_APPLE_omit_frame_ptr %t
> -; RUN: %llc_dwarf -disable-fp-elim -asm-verbose -O1 -o %t < %s
> -; RUN: grep -v DW_AT_APPLE_omit_frame_ptr %t
> +; RUN: %llc_dwarf -debugger-tune=lldb -asm-verbose -O1 -o - < %s |
> FileCheck %s
> +; RUN: %llc_dwarf -debugger-tune=gdb -asm-verbose -O1 -o - < %s |
> FileCheck %s --check-prefix=DISABLE
> +; RUN: %llc_dwarf -disable-fp-elim -debugger-tune=lldb -asm-verbose -O1
> -o - < %s | FileCheck %s --check-prefix=DISABLE
> +
> +; CHECK: DW_AT_APPLE_omit_frame_ptr
> +; DISABLE-NOT: DW_AT_APPLE_omit_frame_ptr
>
>
>  define i32 @foo() nounwind ssp !dbg !1 {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160524/c48c83b0/attachment.html>


More information about the llvm-commits mailing list