[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