[llvm] r237827 - Add bool to DebugLocDwarfExpression to control emitting comments.

Eric Christopher echristo at gmail.com
Wed May 20 13:00:18 PDT 2015


Looks like the only thing you do is turn them off? Can you explain why
you're adding something just to turn them off?

-eric

On Wed, May 20, 2015 at 12:58 PM Pete Cooper <peter_cooper at apple.com> wrote:

> Author: pete
> Date: Wed May 20 14:50:03 2015
> New Revision: 237827
>
> URL: http://llvm.org/viewvc/llvm-project?rev=237827&view=rev
> Log:
> Add bool to DebugLocDwarfExpression to control emitting comments.
>
> DebugLocDwarfExpression::EmitOp was creating temporary strings by
> concatenating Twine's.
>
> When emitting to object files, these comments are thrown away.
>
> This commit adds a boolean to the constructor of the DwarfExpression to
> control whether it will actually emit
> any comments.  This prevents it from even generating the temporary
> comments which would have been thrown away anyway.
>
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp?rev=237827&r1=237826&r2=237827&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp Wed May 20
> 14:50:03 2015
> @@ -185,7 +185,8 @@ void AsmPrinter::emitSectionOffset(const
>  void AsmPrinter::EmitDwarfRegOp(ByteStreamer &Streamer,
>                                  const MachineLocation &MLoc) const {
>    DebugLocDwarfExpression Expr(*MF->getSubtarget().getRegisterInfo(),
> -                               getDwarfDebug()->getDwarfVersion(),
> Streamer);
> +                               getDwarfDebug()->getDwarfVersion(),
> +                               OutStreamer->hasRawTextSupport(),
> Streamer);
>    const MCRegisterInfo *MRI = MMI->getContext().getRegisterInfo();
>    int Reg = MRI->getDwarfRegNum(MLoc.getReg(), false);
>    if (Reg < 0) {
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=237827&r1=237826&r2=237827&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed May 20 14:50:03
> 2015
> @@ -108,6 +108,8 @@ static const char *const DWARFGroupName
>  static const char *const DbgTimerName = "DWARF Debug Writer";
>
>  void DebugLocDwarfExpression::EmitOp(uint8_t Op, const char *Comment) {
> +  if (!PrintComments)
> +    return BS.EmitInt8(Op, Twine());
>    BS.EmitInt8(
>        Op, Comment ? Twine(Comment) + " " +
> dwarf::OperationEncodingString(Op)
>                    : dwarf::OperationEncodingString(Op));
> @@ -1477,6 +1479,7 @@ static void emitDebugLocValue(const AsmP
>                                unsigned PieceOffsetInBits) {
>    DebugLocDwarfExpression
> DwarfExpr(*AP.MF->getSubtarget().getRegisterInfo(),
>                                      AP.getDwarfDebug()->getDwarfVersion(),
> +                                    AP.OutStreamer->hasRawTextSupport(),
>                                      Streamer);
>    // Regular entry.
>    if (Value.isInt()) {
> @@ -1530,6 +1533,7 @@ void DebugLocEntry::finalize(const AsmPr
>          // The DWARF spec seriously mandates pieces with no locations for
> gaps.
>          DebugLocDwarfExpression
> Expr(*AP.MF->getSubtarget().getRegisterInfo(),
>
> AP.getDwarfDebug()->getDwarfVersion(),
> +                                     AP.OutStreamer->hasRawTextSupport(),
>                                       Streamer);
>          Expr.AddOpPiece(PieceOffset-Offset, 0);
>          Offset += PieceOffset-Offset;
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h?rev=237827&r1=237826&r2=237827&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h Wed May 20
> 14:50:03 2015
> @@ -34,10 +34,15 @@ protected:
>    const TargetRegisterInfo &TRI;
>    unsigned DwarfVersion;
>
> +  /// \brief Set to true if we want comments to be emitted.  This is
> usually
> +  /// only the case when the AsmPrinter is emitting to a text stream with
> +  /// comments enabled.
> +  bool PrintComments;
> +
>  public:
>    DwarfExpression(const TargetRegisterInfo &TRI,
> -                  unsigned DwarfVersion)
> -    : TRI(TRI), DwarfVersion(DwarfVersion) {}
> +                  unsigned DwarfVersion, bool PrintComments)
> +    : TRI(TRI), DwarfVersion(DwarfVersion), PrintComments(PrintComments)
> {}
>    virtual ~DwarfExpression() {}
>
>    /// Output a dwarf operand and an optional assembler comment.
> @@ -109,8 +114,9 @@ class DebugLocDwarfExpression : public D
>
>  public:
>    DebugLocDwarfExpression(const TargetRegisterInfo &TRI,
> -                          unsigned DwarfVersion, ByteStreamer &BS)
> -    : DwarfExpression(TRI, DwarfVersion), BS(BS) {}
> +                          unsigned DwarfVersion, bool PrintComments,
> +                          ByteStreamer &BS)
> +    : DwarfExpression(TRI, DwarfVersion, PrintComments), BS(BS) {}
>
>    void EmitOp(uint8_t Op, const char *Comment = nullptr) override;
>    void EmitSigned(int64_t Value) override;
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=237827&r1=237826&r2=237827&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Wed May 20 14:50:03
> 2015
> @@ -47,7 +47,7 @@ GenerateDwarfTypeUnits("generate-type-un
>  DIEDwarfExpression::DIEDwarfExpression(const AsmPrinter &AP, DwarfUnit
> &DU,
>                                         DIELoc &DIE)
>      : DwarfExpression(*AP.MF->getSubtarget().getRegisterInfo(),
> -                      AP.getDwarfDebug()->getDwarfVersion()),
> +                      AP.getDwarfDebug()->getDwarfVersion(), false),
>        AP(AP), DU(DU), DIE(DIE) {}
>
>  void DIEDwarfExpression::EmitOp(uint8_t Op, const char* Comment) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150520/705ac3ef/attachment.html>


More information about the llvm-commits mailing list