[llvm-commits] [llvm] r61714 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp

Evan Cheng echeng at apple.com
Mon Jan 5 13:24:22 PST 2009


On Jan 5, 2009, at 9:57 AM, Devang Patel wrote:

> Author: dpatel
> Date: Mon Jan  5 11:57:47 2009
> New Revision: 61714
>
> URL: http://llvm.org/viewvc/llvm-project?rev=61714&view=rev
> Log:
> Construct basic and derived type DIEs using DebugInfo.
>
> Modified:
>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=61714&r1=61713&r2=61714&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Mon Jan  5  
> 11:57:47 2009
> @@ -23,6 +23,7 @@
> #include "llvm/CodeGen/MachineModuleInfo.h"
> #include "llvm/CodeGen/MachineFrameInfo.h"
> #include "llvm/CodeGen/MachineLocation.h"
> +#include "llvm/Analysis/DebugInfo.h"
> #include "llvm/Support/Debug.h"
> #include "llvm/Support/Dwarf.h"
> #include "llvm/Support/CommandLine.h"
> @@ -1496,6 +1497,49 @@
>     }
>   }
>
> +  /// ConstructType - Construct basic type die from DIBasicType.
> +  void ConstructType(CompileUnit *DW_Unit, DIE &Buffer,
> +                     DIBasicType *BTy) {
> +
> +    // Get core information.
> +    const std::string &Name = BTy->getName();

This makes a copy of the name string. Is it possible to change  
AddString, DIEString, etc. to take const char* instead? Then you can  
use getNameStart() instead.

Evan

>
> +    Buffer.setTag(DW_TAG_base_type);
> +    AddUInt(&Buffer, DW_AT_encoding,  DW_FORM_data1, BTy- 
> >getEncoding());
> +    // Add name if not anonymous or intermediate type.
> +    if (!Name.empty())
> +      AddString(&Buffer, DW_AT_name, DW_FORM_string, Name);
> +    uint64_t Size = BTy->getSizeInBits() >> 3;
> +    AddUInt(&Buffer, DW_AT_byte_size, 0, Size);
> +  }
> +
> +  void ConstructType(CompileUnit *DW_Unit, DIE &Buffer,
> +                     DIDerivedType *DTy) {
> +
> +    // Get core information.
> +    const std::string &Name = DTy->getName();
> +    uint64_t Size = DTy->getSizeInBits() >> 3;
> +    unsigned Tag = DTy->getTag();
> +    // FIXME - Workaround for templates.
> +    if (Tag == DW_TAG_inheritance) Tag = DW_TAG_reference_type;
> +
> +    Buffer.setTag(Tag);
> +    // Map to main type, void will not have a type.
> +    DIType FromTy = DTy->getTypeDerivedFrom();
> +    // FIXME - Enable this. AddType(&Buffer, FromTy, DW_Unit);
> +
> +    // Add name if not anonymous or intermediate type.
> +    if (!Name.empty()) AddString(&Buffer, DW_AT_name,  
> DW_FORM_string, Name);
> +
> +    // Add size if non-zero (derived types might be zero-sized.)
> +    if (Size)
> +      AddUInt(&Buffer, DW_AT_byte_size, 0, Size);
> +
> +    // Add source line info if available and TyDesc is not a forward
> +    // declaration.
> +    // FIXME - Enable this. if (!DTy->isForwardDecl())
> +    // FIXME - Enable this.     AddSourceLine(&Buffer, *DTy);
> +  }
> +
>   /// ConstructType - Adds all the required attributes to the type.
>   ///
>   void ConstructType(DIE &Buffer, TypeDesc *TyDesc, CompileUnit  
> *Unit) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list