[llvm] r193091 - DebugInfo: Put each kind of constant (form, attribute, tag, etc) into its own enum for ease of use.
Alexey Samsonov
samsonov at google.com
Tue Oct 22 00:10:17 PDT 2013
Cool
Mind if I use all these enums in the DWARF parser? (when I get to it).
On Mon, Oct 21, 2013 at 9:28 PM, David Blaikie <dblaikie at gmail.com> wrote:
> Author: dblaikie
> Date: Mon Oct 21 12:28:37 2013
> New Revision: 193091
>
> URL: http://llvm.org/viewvc/llvm-project?rev=193091&view=rev
> Log:
> DebugInfo: Put each kind of constant (form, attribute, tag, etc) into its
> own enum for ease of use.
>
> This allows various variables to be more self-documenting and easier to
> debug by being of specific types without overlapping enum values.
>
> Precommit review by Eric Christopher.
>
> Modified:
> llvm/trunk/include/llvm/Support/Dwarf.h
> llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>
> Modified: llvm/trunk/include/llvm/Support/Dwarf.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Dwarf.h?rev=193091&r1=193090&r2=193091&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Dwarf.h (original)
> +++ llvm/trunk/include/llvm/Support/Dwarf.h Mon Oct 21 12:28:37 2013
> @@ -68,8 +68,7 @@ enum LLVMConstants LLVM_ENUM_INT_TYPE(ui
> const uint32_t DW_CIE_ID = UINT32_MAX;
> const uint64_t DW64_CIE_ID = UINT64_MAX;
>
> -enum Constants {
> - // Tags
> +enum Tag LLVM_ENUM_INT_TYPE(uint16_t) {
> DW_TAG_array_type = 0x01,
> DW_TAG_class_type = 0x02,
> DW_TAG_entry_point = 0x03,
> @@ -139,12 +138,10 @@ enum Constants {
> DW_TAG_GNU_formal_parameter_pack = 0x4108,
> DW_TAG_lo_user = 0x4080,
> DW_TAG_APPLE_property = 0x4200,
> - DW_TAG_hi_user = 0xffff,
> -
> - // Children flag
> - DW_CHILDREN_no = 0x00,
> - DW_CHILDREN_yes = 0x01,
> + DW_TAG_hi_user = 0xffff
> +};
>
> +enum Attribute LLVM_ENUM_INT_TYPE(uint16_t) {
> // Attributes
> DW_AT_sibling = 0x01,
> DW_AT_location = 0x02,
> @@ -295,8 +292,10 @@ enum Constants {
> DW_AT_APPLE_property_setter = 0x3fea,
> DW_AT_APPLE_property_attribute = 0x3feb,
> DW_AT_APPLE_objc_complete_type = 0x3fec,
> - DW_AT_APPLE_property = 0x3fed,
> + DW_AT_APPLE_property = 0x3fed
> +};
>
> +enum Form LLVM_ENUM_INT_TYPE(uint16_t) {
> // Attribute form encodings
> DW_FORM_addr = 0x01,
> DW_FORM_block2 = 0x03,
> @@ -326,8 +325,10 @@ enum Constants {
>
> // Extensions for Fission proposal
> DW_FORM_GNU_addr_index = 0x1f01,
> - DW_FORM_GNU_str_index = 0x1f02,
> + DW_FORM_GNU_str_index = 0x1f02
> +};
>
> +enum LocationAtom {
> // Operation encodings
> DW_OP_addr = 0x03,
> DW_OP_deref = 0x06,
> @@ -491,8 +492,10 @@ enum Constants {
>
> // Extensions for Fission proposal.
> DW_OP_GNU_addr_index = 0xfb,
> - DW_OP_GNU_const_index = 0xfc,
> + DW_OP_GNU_const_index = 0xfc
> +};
>
> +enum TypeKind {
> // Encoding attribute values
> DW_ATE_address = 0x01,
> DW_ATE_boolean = 0x02,
> @@ -511,37 +514,49 @@ enum Constants {
> DW_ATE_decimal_float = 0x0f,
> DW_ATE_UTF = 0x10,
> DW_ATE_lo_user = 0x80,
> - DW_ATE_hi_user = 0xff,
> + DW_ATE_hi_user = 0xff
> +};
>
> +enum DecimalSignEncoding {
> // Decimal sign attribute values
> DW_DS_unsigned = 0x01,
> DW_DS_leading_overpunch = 0x02,
> DW_DS_trailing_overpunch = 0x03,
> DW_DS_leading_separate = 0x04,
> - DW_DS_trailing_separate = 0x05,
> + DW_DS_trailing_separate = 0x05
> +};
>
> +enum EndianityEncoding {
> // Endianity attribute values
> DW_END_default = 0x00,
> DW_END_big = 0x01,
> DW_END_little = 0x02,
> DW_END_lo_user = 0x40,
> - DW_END_hi_user = 0xff,
> + DW_END_hi_user = 0xff
> +};
>
> +enum AccessAttribute {
> // Accessibility codes
> DW_ACCESS_public = 0x01,
> DW_ACCESS_protected = 0x02,
> - DW_ACCESS_private = 0x03,
> + DW_ACCESS_private = 0x03
> +};
>
> +enum VisibilityAttribute {
> // Visibility codes
> DW_VIS_local = 0x01,
> DW_VIS_exported = 0x02,
> - DW_VIS_qualified = 0x03,
> + DW_VIS_qualified = 0x03
> +};
>
> +enum VirtualityAttribute {
> // Virtuality codes
> DW_VIRTUALITY_none = 0x00,
> DW_VIRTUALITY_virtual = 0x01,
> - DW_VIRTUALITY_pure_virtual = 0x02,
> + DW_VIRTUALITY_pure_virtual = 0x02
> +};
>
> +enum SourceLanguage {
> // Language names
> DW_LANG_C89 = 0x0001,
> DW_LANG_C = 0x0002,
> @@ -565,35 +580,47 @@ enum Constants {
> DW_LANG_Python = 0x0014,
> DW_LANG_lo_user = 0x8000,
> DW_LANG_Mips_Assembler = 0x8001,
> - DW_LANG_hi_user = 0xffff,
> + DW_LANG_hi_user = 0xffff
> +};
>
> +enum CaseSensitivity {
> // Identifier case codes
> DW_ID_case_sensitive = 0x00,
> DW_ID_up_case = 0x01,
> DW_ID_down_case = 0x02,
> - DW_ID_case_insensitive = 0x03,
> + DW_ID_case_insensitive = 0x03
> +};
>
> +enum CallingConvention {
> // Calling convention codes
> DW_CC_normal = 0x01,
> DW_CC_program = 0x02,
> DW_CC_nocall = 0x03,
> DW_CC_lo_user = 0x40,
> - DW_CC_hi_user = 0xff,
> + DW_CC_hi_user = 0xff
> +};
>
> +enum InlineAttribute {
> // Inline codes
> DW_INL_not_inlined = 0x00,
> DW_INL_inlined = 0x01,
> DW_INL_declared_not_inlined = 0x02,
> - DW_INL_declared_inlined = 0x03,
> + DW_INL_declared_inlined = 0x03
> +};
>
> +enum ArrayDimensionOrdering {
> // Array ordering
> DW_ORD_row_major = 0x00,
> - DW_ORD_col_major = 0x01,
> + DW_ORD_col_major = 0x01
> +};
>
> +enum DiscriminantList {
> // Discriminant descriptor values
> DW_DSC_label = 0x00,
> - DW_DSC_range = 0x01,
> + DW_DSC_range = 0x01
> +};
>
> +enum LineNumberOps {
> // Line Number Standard Opcode Encodings
> DW_LNS_extended_op = 0x00,
> DW_LNS_copy = 0x01,
> @@ -607,23 +634,29 @@ enum Constants {
> DW_LNS_fixed_advance_pc = 0x09,
> DW_LNS_set_prologue_end = 0x0a,
> DW_LNS_set_epilogue_begin = 0x0b,
> - DW_LNS_set_isa = 0x0c,
> + DW_LNS_set_isa = 0x0c
> +};
>
> +enum LineNumberExtendedOps {
> // Line Number Extended Opcode Encodings
> DW_LNE_end_sequence = 0x01,
> DW_LNE_set_address = 0x02,
> DW_LNE_define_file = 0x03,
> DW_LNE_set_discriminator = 0x04,
> DW_LNE_lo_user = 0x80,
> - DW_LNE_hi_user = 0xff,
> + DW_LNE_hi_user = 0xff
> +};
>
> +enum MacinfoRecordType {
> // Macinfo Type Encodings
> DW_MACINFO_define = 0x01,
> DW_MACINFO_undef = 0x02,
> DW_MACINFO_start_file = 0x03,
> DW_MACINFO_end_file = 0x04,
> - DW_MACINFO_vendor_ext = 0xff,
> + DW_MACINFO_vendor_ext = 0xff
> +};
>
> +enum CallFrameInfo {
> // Call frame instruction encodings
> DW_CFA_extended = 0x00,
> DW_CFA_nop = 0x00,
> @@ -656,7 +689,13 @@ enum Constants {
> DW_CFA_GNU_window_save = 0x2d,
> DW_CFA_GNU_args_size = 0x2e,
> DW_CFA_lo_user = 0x1c,
> - DW_CFA_hi_user = 0x3f,
> + DW_CFA_hi_user = 0x3f
> +};
> +
> +enum Constants {
> + // Children flag
> + DW_CHILDREN_no = 0x00,
> + DW_CHILDREN_yes = 0x01,
>
> DW_EH_PE_absptr = 0x00,
> DW_EH_PE_omit = 0xff,
> @@ -674,8 +713,10 @@ enum Constants {
> DW_EH_PE_datarel = 0x30,
> DW_EH_PE_funcrel = 0x40,
> DW_EH_PE_aligned = 0x50,
> - DW_EH_PE_indirect = 0x80,
> + DW_EH_PE_indirect = 0x80
> +};
>
> +enum ApplePropertyAttributes {
> // Apple Objective-C Property Attributes
> DW_APPLE_PROPERTY_readonly = 0x01,
> DW_APPLE_PROPERTY_readwrite = 0x02,
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp?rev=193091&r1=193090&r2=193091&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp Mon Oct 21 12:28:37 2013
> @@ -187,7 +187,7 @@ void DIEValue::dump() const {
>
> /// EmitValue - Emit integer of appropriate size.
> ///
> -void DIEInteger::EmitValue(AsmPrinter *Asm, uint16_t Form) const {
> +void DIEInteger::EmitValue(AsmPrinter *Asm, dwarf::Form Form) const {
> unsigned Size = ~0U;
> switch (Form) {
> case dwarf::DW_FORM_flag_present:
> @@ -219,7 +219,7 @@ void DIEInteger::EmitValue(AsmPrinter *A
>
> /// SizeOf - Determine size of integer value in bytes.
> ///
> -unsigned DIEInteger::SizeOf(AsmPrinter *AP, uint16_t Form) const {
> +unsigned DIEInteger::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> switch (Form) {
> case dwarf::DW_FORM_flag_present: return 0;
> case dwarf::DW_FORM_flag: // Fall thru
> @@ -254,13 +254,13 @@ void DIEInteger::print(raw_ostream &O) c
>
> /// EmitValue - Emit expression value.
> ///
> -void DIEExpr::EmitValue(AsmPrinter *AP, uint16_t Form) const {
> +void DIEExpr::EmitValue(AsmPrinter *AP, dwarf::Form Form) const {
> AP->OutStreamer.EmitValue(Expr, SizeOf(AP, Form));
> }
>
> /// SizeOf - Determine size of expression value in bytes.
> ///
> -unsigned DIEExpr::SizeOf(AsmPrinter *AP, uint16_t Form) const {
> +unsigned DIEExpr::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> if (Form == dwarf::DW_FORM_data4) return 4;
> if (Form == dwarf::DW_FORM_sec_offset) return 4;
> if (Form == dwarf::DW_FORM_strp) return 4;
> @@ -280,15 +280,16 @@ void DIEExpr::print(raw_ostream &O) cons
>
> /// EmitValue - Emit label value.
> ///
> -void DIELabel::EmitValue(AsmPrinter *AP, uint16_t Form) const {
> - AP->EmitLabelReference(Label, SizeOf(AP, Form), Form ==
> dwarf::DW_FORM_strp
> - || Form == dwarf::DW_FORM_sec_offset || Form == dwarf::DW_OP_call_ref
> - || Form == dwarf::DW_FORM_ref_addr);
> +void DIELabel::EmitValue(AsmPrinter *AP, dwarf::Form Form) const {
> + AP->EmitLabelReference(Label, SizeOf(AP, Form),
> + Form == dwarf::DW_FORM_strp ||
> + Form == dwarf::DW_FORM_sec_offset ||
> + Form == dwarf::DW_FORM_ref_addr);
> }
>
> /// SizeOf - Determine size of label value in bytes.
> ///
> -unsigned DIELabel::SizeOf(AsmPrinter *AP, uint16_t Form) const {
> +unsigned DIELabel::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> if (Form == dwarf::DW_FORM_data4) return 4;
> if (Form == dwarf::DW_FORM_sec_offset) return 4;
> if (Form == dwarf::DW_FORM_strp) return 4;
> @@ -307,13 +308,13 @@ void DIELabel::print(raw_ostream &O) con
>
> /// EmitValue - Emit delta value.
> ///
> -void DIEDelta::EmitValue(AsmPrinter *AP, uint16_t Form) const {
> +void DIEDelta::EmitValue(AsmPrinter *AP, dwarf::Form Form) const {
> AP->EmitLabelDifference(LabelHi, LabelLo, SizeOf(AP, Form));
> }
>
> /// SizeOf - Determine size of delta value in bytes.
> ///
> -unsigned DIEDelta::SizeOf(AsmPrinter *AP, uint16_t Form) const {
> +unsigned DIEDelta::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> if (Form == dwarf::DW_FORM_data4) return 4;
> if (Form == dwarf::DW_FORM_strp) return 4;
> return AP->getDataLayout().getPointerSize();
> @@ -331,13 +332,13 @@ void DIEDelta::print(raw_ostream &O) con
>
> /// EmitValue - Emit string value.
> ///
> -void DIEString::EmitValue(AsmPrinter *AP, uint16_t Form) const {
> +void DIEString::EmitValue(AsmPrinter *AP, dwarf::Form Form) const {
> Access->EmitValue(AP, Form);
> }
>
> /// SizeOf - Determine size of delta value in bytes.
> ///
> -unsigned DIEString::SizeOf(AsmPrinter *AP, uint16_t Form) const {
> +unsigned DIEString::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> return Access->SizeOf(AP, Form);
> }
>
> @@ -354,7 +355,7 @@ void DIEString::print(raw_ostream &O) co
>
> /// EmitValue - Emit debug information entry offset.
> ///
> -void DIEEntry::EmitValue(AsmPrinter *AP, uint16_t Form) const {
> +void DIEEntry::EmitValue(AsmPrinter *AP, dwarf::Form Form) const {
> AP->EmitInt32(Entry->getOffset());
> }
>
> @@ -392,7 +393,7 @@ unsigned DIEBlock::ComputeSize(AsmPrinte
>
> /// EmitValue - Emit block data.
> ///
> -void DIEBlock::EmitValue(AsmPrinter *Asm, uint16_t Form) const {
> +void DIEBlock::EmitValue(AsmPrinter *Asm, dwarf::Form Form) const {
> switch (Form) {
> default: llvm_unreachable("Improper form for block");
> case dwarf::DW_FORM_block1: Asm->EmitInt8(Size); break;
> @@ -408,7 +409,7 @@ void DIEBlock::EmitValue(AsmPrinter *Asm
>
> /// SizeOf - Determine size of block data in bytes.
> ///
> -unsigned DIEBlock::SizeOf(AsmPrinter *AP, uint16_t Form) const {
> +unsigned DIEBlock::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> switch (Form) {
> case dwarf::DW_FORM_block1: return Size + sizeof(int8_t);
> case dwarf::DW_FORM_block2: return Size + sizeof(int16_t);
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h?rev=193091&r1=193090&r2=193091&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h Mon Oct 21 12:28:37 2013
> @@ -33,17 +33,17 @@ namespace llvm {
> class DIEAbbrevData {
> /// Attribute - Dwarf attribute code.
> ///
> - uint16_t Attribute;
> + dwarf::Attribute Attribute;
>
> /// Form - Dwarf form code.
> ///
> - uint16_t Form;
> + dwarf::Form Form;
> public:
> - DIEAbbrevData(uint16_t A, uint16_t F) : Attribute(A), Form(F) {}
> + DIEAbbrevData(dwarf::Attribute A, dwarf::Form F) : Attribute(A),
> Form(F) {}
>
> // Accessors.
> - uint16_t getAttribute() const { return Attribute; }
> - uint16_t getForm() const { return Form; }
> + dwarf::Attribute getAttribute() const { return Attribute; }
> + dwarf::Form getForm() const { return Form; }
>
> /// Profile - Used to gather unique data for the abbreviation folding
> set.
> ///
> @@ -56,7 +56,7 @@ namespace llvm {
> class DIEAbbrev : public FoldingSetNode {
> /// Tag - Dwarf tag code.
> ///
> - uint16_t Tag;
> + dwarf::Tag Tag;
>
> /// ChildrenFlag - Dwarf children flag.
> ///
> @@ -71,10 +71,10 @@ namespace llvm {
> SmallVector<DIEAbbrevData, 12> Data;
>
> public:
> - DIEAbbrev(uint16_t T, uint16_t C) : Tag(T), ChildrenFlag(C), Data() {}
> + DIEAbbrev(dwarf::Tag T, uint16_t C) : Tag(T), ChildrenFlag(C), Data()
> {}
>
> // Accessors.
> - uint16_t getTag() const { return Tag; }
> + dwarf::Tag getTag() const { return Tag; }
> unsigned getNumber() const { return Number; }
> uint16_t getChildrenFlag() const { return ChildrenFlag; }
> const SmallVectorImpl<DIEAbbrevData> &getData() const { return Data; }
> @@ -83,7 +83,7 @@ namespace llvm {
>
> /// AddAttribute - Adds another set of attribute information to the
> /// abbreviation.
> - void AddAttribute(uint16_t Attribute, uint16_t Form) {
> + void AddAttribute(dwarf::Attribute Attribute, dwarf::Form Form) {
> Data.push_back(DIEAbbrevData(Attribute, Form));
> }
>
> @@ -136,13 +136,14 @@ namespace llvm {
> #endif
> public:
> explicit DIE(unsigned Tag)
> - : Offset(0), Size(0), Abbrev(Tag, dwarf::DW_CHILDREN_no), Parent(0)
> {}
> + : Offset(0), Size(0), Abbrev((dwarf::Tag)Tag,
> dwarf::DW_CHILDREN_no),
> + Parent(0) {}
> virtual ~DIE();
>
> // Accessors.
> DIEAbbrev &getAbbrev() { return Abbrev; }
> unsigned getAbbrevNumber() const { return Abbrev.getNumber(); }
> - uint16_t getTag() const { return Abbrev.getTag(); }
> + dwarf::Tag getTag() const { return Abbrev.getTag(); }
> unsigned getOffset() const { return Offset; }
> unsigned getSize() const { return Size; }
> const std::vector<DIE *> &getChildren() const { return Children; }
> @@ -153,7 +154,8 @@ namespace llvm {
>
> /// addValue - Add a value and attributes to a DIE.
> ///
> - void addValue(uint16_t Attribute, uint16_t Form, DIEValue *Value) {
> + void addValue(dwarf::Attribute Attribute, dwarf::Form Form,
> + DIEValue *Value) {
> Abbrev.AddAttribute(Attribute, Form);
> Values.push_back(Value);
> }
> @@ -205,11 +207,11 @@ namespace llvm {
>
> /// EmitValue - Emit value via the Dwarf writer.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const = 0;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const = 0;
>
> /// SizeOf - Return the size of a value in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const = 0;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const = 0;
>
> #ifndef NDEBUG
> virtual void print(raw_ostream &O) const = 0;
> @@ -227,7 +229,7 @@ namespace llvm {
>
> /// BestForm - Choose the best form for integer.
> ///
> - static uint16_t BestForm(bool IsSigned, uint64_t Int) {
> + static dwarf::Form BestForm(bool IsSigned, uint64_t Int) {
> if (IsSigned) {
> const int64_t SignedInt = Int;
> if ((char)Int == SignedInt) return dwarf::DW_FORM_data1;
> @@ -243,13 +245,13 @@ namespace llvm {
>
> /// EmitValue - Emit integer of appropriate size.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> uint64_t getValue() const { return Integer; }
>
> /// SizeOf - Determine size of integer value in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const;
>
> // Implement isa/cast/dyncast.
> static bool classof(const DIEValue *I) { return I->getType() ==
> isInteger; }
> @@ -269,7 +271,7 @@ namespace llvm {
>
> /// EmitValue - Emit expression value.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> /// getValue - Get MCExpr.
> ///
> @@ -277,7 +279,7 @@ namespace llvm {
>
> /// SizeOf - Determine size of expression value in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const;
>
> // Implement isa/cast/dyncast.
> static bool classof(const DIEValue *E) { return E->getType() ==
> isExpr; }
> @@ -297,7 +299,7 @@ namespace llvm {
>
> /// EmitValue - Emit label value.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> /// getValue - Get MCSymbol.
> ///
> @@ -305,7 +307,7 @@ namespace llvm {
>
> /// SizeOf - Determine size of label value in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const;
>
> // Implement isa/cast/dyncast.
> static bool classof(const DIEValue *L) { return L->getType() ==
> isLabel; }
> @@ -327,11 +329,11 @@ namespace llvm {
>
> /// EmitValue - Emit delta value.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> /// SizeOf - Determine size of delta value in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const;
>
> // Implement isa/cast/dyncast.
> static bool classof(const DIEValue *D) { return D->getType() ==
> isDelta; }
> @@ -357,11 +359,11 @@ namespace llvm {
>
> /// EmitValue - Emit delta value.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> /// SizeOf - Determine size of delta value in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const;
>
> // Implement isa/cast/dyncast.
> static bool classof(const DIEValue *D) { return D->getType() ==
> isString; }
> @@ -386,11 +388,11 @@ namespace llvm {
>
> /// EmitValue - Emit debug information entry offset.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> /// SizeOf - Determine size of debug information entry in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const {
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
> return Form == dwarf::DW_FORM_ref_addr ? getRefAddrSize(AP)
> : sizeof(int32_t);
> }
> @@ -412,9 +414,7 @@ namespace llvm {
> class DIEBlock : public DIEValue, public DIE {
> unsigned Size; // Size in bytes excluding size header.
> public:
> - DIEBlock()
> - : DIEValue(isBlock), DIE(0), Size(0) {}
> - virtual ~DIEBlock() {}
> + DIEBlock() : DIEValue(isBlock), DIE(0), Size(0) {}
>
> /// ComputeSize - calculate the size of the block.
> ///
> @@ -422,7 +422,7 @@ namespace llvm {
>
> /// BestForm - Choose the best form for data.
> ///
> - uint16_t BestForm() const {
> + dwarf::Form BestForm() const {
> if ((unsigned char)Size == Size) return dwarf::DW_FORM_block1;
> if ((unsigned short)Size == Size) return dwarf::DW_FORM_block2;
> if ((unsigned int)Size == Size) return dwarf::DW_FORM_block4;
> @@ -431,11 +431,11 @@ namespace llvm {
>
> /// EmitValue - Emit block data.
> ///
> - virtual void EmitValue(AsmPrinter *AP, uint16_t Form) const;
> + virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const;
>
> /// SizeOf - Determine size of block data in bytes.
> ///
> - virtual unsigned SizeOf(AsmPrinter *AP, uint16_t Form) const;
> + virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const;
>
> // Implement isa/cast/dyncast.
> static bool classof(const DIEValue *E) { return E->getType() ==
> isBlock; }
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=193091&r1=193090&r2=193091&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Mon Oct 21
> 12:28:37 2013
> @@ -96,7 +96,7 @@ int64_t CompileUnit::getDefaultLowerBoun
> }
>
> /// addFlag - Add a flag that is true.
> -void CompileUnit::addFlag(DIE *Die, uint16_t Attribute) {
> +void CompileUnit::addFlag(DIE *Die, dwarf::Attribute Attribute) {
> if (DD->getDwarfVersion() >= 4)
> Die->addValue(Attribute, dwarf::DW_FORM_flag_present, DIEIntegerOne);
> else
> @@ -105,23 +105,32 @@ void CompileUnit::addFlag(DIE *Die, uint
>
> /// addUInt - Add an unsigned integer attribute data and value.
> ///
> -void CompileUnit::addUInt(DIE *Die, uint16_t Attribute, uint16_t Form,
> - uint64_t Integer) {
> +void CompileUnit::addUInt(DIE *Die, dwarf::Attribute Attribute,
> + Optional<dwarf::Form> Form, uint64_t Integer) {
> if (!Form)
> Form = DIEInteger::BestForm(false, Integer);
> DIEValue *Value = Integer == 1 ? DIEIntegerOne : new (DIEValueAllocator)
> DIEInteger(Integer);
> - Die->addValue(Attribute, Form, Value);
> + Die->addValue(Attribute, *Form, Value);
> +}
> +
> +void CompileUnit::addUInt(DIEBlock *Block, dwarf::Form Form, uint64_t
> Integer) {
> + addUInt(Block, (dwarf::Attribute)0, Form, Integer);
> }
>
> /// addSInt - Add an signed integer attribute data and value.
> ///
> -void CompileUnit::addSInt(DIE *Die, uint16_t Attribute, uint16_t Form,
> - int64_t Integer) {
> +void CompileUnit::addSInt(DIE *Die, dwarf::Attribute Attribute,
> + Optional<dwarf::Form> Form, int64_t Integer) {
> if (!Form)
> Form = DIEInteger::BestForm(true, Integer);
> DIEValue *Value = new (DIEValueAllocator) DIEInteger(Integer);
> - Die->addValue(Attribute, Form, Value);
> + Die->addValue(Attribute, *Form, Value);
> +}
> +
> +void CompileUnit::addSInt(DIEBlock *Die, Optional<dwarf::Form> Form,
> + int64_t Integer) {
> + addSInt(Die, (dwarf::Attribute)0, Form, Integer);
> }
>
> /// addString - Add a string attribute data and value. We always emit a
> @@ -129,9 +138,9 @@ void CompileUnit::addSInt(DIE *Die, uint
> /// more predictable sizes. In the case of split dwarf we emit an index
> /// into another table which gets us the static offset into the string
> /// table.
> -void CompileUnit::addString(DIE *Die, uint16_t Attribute, StringRef
> String) {
> +void CompileUnit::addString(DIE *Die, dwarf::Attribute Attribute,
> StringRef String) {
> DIEValue *Value;
> - uint16_t Form;
> + dwarf::Form Form;
> if (!DD->useSplitDwarf()) {
> MCSymbol *Symb = DU->getStringPoolEntry(String);
> if (Asm->needsRelocationsForDwarfStringPool())
> @@ -152,7 +161,7 @@ void CompileUnit::addString(DIE *Die, ui
>
> /// addLocalString - Add a string attribute data and value. This is
> guaranteed
> /// to be in the local string pool instead of indirected.
> -void CompileUnit::addLocalString(DIE *Die, uint16_t Attribute,
> +void CompileUnit::addLocalString(DIE *Die, dwarf::Attribute Attribute,
> StringRef String) {
> MCSymbol *Symb = DU->getStringPoolEntry(String);
> DIEValue *Value;
> @@ -167,24 +176,28 @@ void CompileUnit::addLocalString(DIE *Di
>
> /// addExpr - Add a Dwarf expression attribute data and value.
> ///
> -void CompileUnit::addExpr(DIE *Die, uint16_t Attribute, uint16_t Form,
> - const MCExpr *Expr) {
> +void CompileUnit::addExpr(DIEBlock *Die, dwarf::Form Form, const MCExpr
> *Expr) {
> DIEValue *Value = new (DIEValueAllocator) DIEExpr(Expr);
> - Die->addValue(Attribute, Form, Value);
> + Die->addValue((dwarf::Attribute)0, Form, Value);
> }
>
> /// addLabel - Add a Dwarf label attribute data and value.
> ///
> -void CompileUnit::addLabel(DIE *Die, uint16_t Attribute, uint16_t Form,
> +void CompileUnit::addLabel(DIE *Die, dwarf::Attribute Attribute,
> dwarf::Form Form,
> const MCSymbol *Label) {
> DIEValue *Value = new (DIEValueAllocator) DIELabel(Label);
> Die->addValue(Attribute, Form, Value);
> }
>
> +void CompileUnit::addLabel(DIEBlock *Die, dwarf::Form Form,
> + const MCSymbol *Label) {
> + addLabel(Die, (dwarf::Attribute)0, Form, Label);
> +}
> +
> /// addLabelAddress - Add a dwarf label attribute data and value using
> /// DW_FORM_addr or DW_FORM_GNU_addr_index.
> ///
> -void CompileUnit::addLabelAddress(DIE *Die, uint16_t Attribute,
> +void CompileUnit::addLabelAddress(DIE *Die, dwarf::Attribute Attribute,
> MCSymbol *Label) {
> if (Label)
> DD->addArangeLabel(SymbolCU(this, Label));
> @@ -207,20 +220,20 @@ void CompileUnit::addLabelAddress(DIE *D
> /// addOpAddress - Add a dwarf op address data and value using the
> /// form given and an op of either DW_FORM_addr or DW_FORM_GNU_addr_index.
> ///
> -void CompileUnit::addOpAddress(DIE *Die, const MCSymbol *Sym) {
> +void CompileUnit::addOpAddress(DIEBlock *Die, const MCSymbol *Sym) {
> DD->addArangeLabel(SymbolCU(this, Sym));
> if (!DD->useSplitDwarf()) {
> - addUInt(Die, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_addr);
> - addLabel(Die, 0, dwarf::DW_FORM_udata, Sym);
> + addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_addr);
> + addLabel(Die, dwarf::DW_FORM_udata, Sym);
> } else {
> - addUInt(Die, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_addr_index);
> - addUInt(Die, 0, dwarf::DW_FORM_GNU_addr_index,
> DU->getAddrPoolIndex(Sym));
> + addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_addr_index);
> + addUInt(Die, dwarf::DW_FORM_GNU_addr_index,
> DU->getAddrPoolIndex(Sym));
> }
> }
>
> /// addDelta - Add a label delta attribute data and value.
> ///
> -void CompileUnit::addDelta(DIE *Die, uint16_t Attribute, uint16_t Form,
> +void CompileUnit::addDelta(DIE *Die, dwarf::Attribute Attribute,
> dwarf::Form Form,
> const MCSymbol *Hi, const MCSymbol *Lo) {
> DIEValue *Value = new (DIEValueAllocator) DIEDelta(Hi, Lo);
> Die->addValue(Attribute, Form, Value);
> @@ -228,14 +241,14 @@ void CompileUnit::addDelta(DIE *Die, uin
>
> /// addDIEEntry - Add a DIE attribute data and value.
> ///
> -void CompileUnit::addDIEEntry(DIE *Die, uint16_t Attribute, DIE *Entry) {
> +void CompileUnit::addDIEEntry(DIE *Die, dwarf::Attribute Attribute, DIE
> *Entry) {
> // We currently only use ref4.
> Die->addValue(Attribute, dwarf::DW_FORM_ref4, createDIEEntry(Entry));
> }
>
> /// addBlock - Add block data.
> ///
> -void CompileUnit::addBlock(DIE *Die, uint16_t Attribute, uint16_t Form,
> +void CompileUnit::addBlock(DIE *Die, dwarf::Attribute Attribute,
> DIEBlock *Block) {
> Block->ComputeSize(Asm);
> DIEBlocks.push_back(Block); // Memoize so we can call the destructor
> later on.
> @@ -256,8 +269,8 @@ void CompileUnit::addSourceLine(DIE *Die
> DD->getOrCreateSourceID(V.getContext().getFilename(),
> V.getContext().getDirectory(),
> getUniqueID());
> assert(FileID && "Invalid file id");
> - addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
> - addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);
> + addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> + addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> }
>
> /// addSourceLine - Add location information to specified debug
> information
> @@ -273,8 +286,8 @@ void CompileUnit::addSourceLine(DIE *Die
> unsigned FileID =
> DD->getOrCreateSourceID(G.getFilename(), G.getDirectory(),
> getUniqueID());
> assert(FileID && "Invalid file id");
> - addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
> - addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);
> + addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> + addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> }
>
> /// addSourceLine - Add location information to specified debug
> information
> @@ -292,8 +305,8 @@ void CompileUnit::addSourceLine(DIE *Die
> unsigned FileID = DD->getOrCreateSourceID(SP.getFilename(),
> SP.getDirectory(),
> getUniqueID());
> assert(FileID && "Invalid file id");
> - addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
> - addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);
> + addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> + addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> }
>
> /// addSourceLine - Add location information to specified debug
> information
> @@ -309,8 +322,8 @@ void CompileUnit::addSourceLine(DIE *Die
> unsigned FileID = DD->getOrCreateSourceID(Ty.getFilename(),
> Ty.getDirectory(),
> getUniqueID());
> assert(FileID && "Invalid file id");
> - addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
> - addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);
> + addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> + addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> }
>
> /// addSourceLine - Add location information to specified debug
> information
> @@ -327,8 +340,8 @@ void CompileUnit::addSourceLine(DIE *Die
> unsigned FileID = DD->getOrCreateSourceID(File.getFilename(),
> File.getDirectory(),
> getUniqueID());
> assert(FileID && "Invalid file id");
> - addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
> - addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);
> + addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> + addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> }
>
> /// addSourceLine - Add location information to specified debug
> information
> @@ -346,8 +359,8 @@ void CompileUnit::addSourceLine(DIE *Die
> unsigned FileID =
> DD->getOrCreateSourceID(FN, NS.getDirectory(), getUniqueID());
> assert(FileID && "Invalid file id");
> - addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
> - addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);
> + addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> + addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> }
>
> /// addVariableAddress - Add DW_AT_location attribute for a
> @@ -364,37 +377,38 @@ void CompileUnit::addVariableAddress(con
> }
>
> /// addRegisterOp - Add register operand.
> -void CompileUnit::addRegisterOp(DIE *TheDie, unsigned Reg) {
> +void CompileUnit::addRegisterOp(DIEBlock *TheDie, unsigned Reg) {
> const TargetRegisterInfo *RI = Asm->TM.getRegisterInfo();
> unsigned DWReg = RI->getDwarfRegNum(Reg, false);
> if (DWReg < 32)
> - addUInt(TheDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_reg0 + DWReg);
> + addUInt(TheDie, dwarf::DW_FORM_data1, dwarf::DW_OP_reg0 + DWReg);
> else {
> - addUInt(TheDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_regx);
> - addUInt(TheDie, 0, dwarf::DW_FORM_udata, DWReg);
> + addUInt(TheDie, dwarf::DW_FORM_data1, dwarf::DW_OP_regx);
> + addUInt(TheDie, dwarf::DW_FORM_udata, DWReg);
> }
> }
>
> /// addRegisterOffset - Add register offset.
> -void CompileUnit::addRegisterOffset(DIE *TheDie, unsigned Reg, int64_t
> Offset) {
> +void CompileUnit::addRegisterOffset(DIEBlock *TheDie, unsigned Reg,
> + int64_t Offset) {
> const TargetRegisterInfo *RI = Asm->TM.getRegisterInfo();
> unsigned DWReg = RI->getDwarfRegNum(Reg, false);
> const TargetRegisterInfo *TRI = Asm->TM.getRegisterInfo();
> if (Reg == TRI->getFrameRegister(*Asm->MF))
> // If variable offset is based in frame register then use fbreg.
> - addUInt(TheDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_fbreg);
> + addUInt(TheDie, dwarf::DW_FORM_data1, dwarf::DW_OP_fbreg);
> else if (DWReg < 32)
> - addUInt(TheDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_breg0 + DWReg);
> + addUInt(TheDie, dwarf::DW_FORM_data1, dwarf::DW_OP_breg0 + DWReg);
> else {
> - addUInt(TheDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_bregx);
> - addUInt(TheDie, 0, dwarf::DW_FORM_udata, DWReg);
> + addUInt(TheDie, dwarf::DW_FORM_data1, dwarf::DW_OP_bregx);
> + addUInt(TheDie, dwarf::DW_FORM_udata, DWReg);
> }
> - addSInt(TheDie, 0, dwarf::DW_FORM_sdata, Offset);
> + addSInt(TheDie, dwarf::DW_FORM_sdata, Offset);
> }
>
> /// addAddress - Add an address attribute to a die based on the location
> /// provided.
> -void CompileUnit::addAddress(DIE *Die, uint16_t Attribute,
> +void CompileUnit::addAddress(DIE *Die, dwarf::Attribute Attribute,
> const MachineLocation &Location, bool
> Indirect) {
> DIEBlock *Block = new (DIEValueAllocator) DIEBlock();
>
> @@ -403,12 +417,12 @@ void CompileUnit::addAddress(DIE *Die, u
> else {
> addRegisterOffset(Block, Location.getReg(), Location.getOffset());
> if (Indirect && !Location.isReg()) {
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> }
> }
>
> // Now attach the location information to the DIE.
> - addBlock(Die, Attribute, 0, Block);
> + addBlock(Die, Attribute, Block);
> }
>
> /// addComplexAddress - Start with the address based on the location
> provided,
> @@ -417,7 +431,7 @@ void CompileUnit::addAddress(DIE *Die, u
> /// the starting location. Add the DWARF information to the die.
> ///
> void CompileUnit::addComplexAddress(const DbgVariable &DV, DIE *Die,
> - uint16_t Attribute,
> + dwarf::Attribute Attribute,
> const MachineLocation &Location) {
> DIEBlock *Block = new (DIEValueAllocator) DIEBlock();
> unsigned N = DV.getNumAddrElements();
> @@ -436,17 +450,17 @@ void CompileUnit::addComplexAddress(cons
> for (; i < N; ++i) {
> uint64_t Element = DV.getAddrElement(i);
> if (Element == DIBuilder::OpPlus) {
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
> - addUInt(Block, 0, dwarf::DW_FORM_udata, DV.getAddrElement(++i));
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
> + addUInt(Block, dwarf::DW_FORM_udata, DV.getAddrElement(++i));
> } else if (Element == DIBuilder::OpDeref) {
> if (!Location.isReg())
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> } else
> llvm_unreachable("unknown DIBuilder Opcode");
> }
>
> // Now attach the location information to the DIE.
> - addBlock(Die, Attribute, 0, Block);
> + addBlock(Die, Attribute, Block);
> }
>
> /* Byref variables, in Blocks, are declared by the programmer as "SomeType
> @@ -510,7 +524,7 @@ void CompileUnit::addComplexAddress(cons
> /// more information, read large comment just above here.
> ///
> void CompileUnit::addBlockByrefAddress(const DbgVariable &DV, DIE *Die,
> - uint16_t Attribute,
> + dwarf::Attribute Attribute,
> const MachineLocation &Location) {
> DIType Ty = DV.getType();
> DIType TmpTy = Ty;
> @@ -560,30 +574,30 @@ void CompileUnit::addBlockByrefAddress(c
> // If we started with a pointer to the __Block_byref... struct, then
> // the first thing we need to do is dereference the pointer
> (DW_OP_deref).
> if (isPointer)
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
>
> // Next add the offset for the '__forwarding' field:
> // DW_OP_plus_uconst ForwardingFieldOffset. Note there's no point in
> // adding the offset if it's 0.
> if (forwardingFieldOffset > 0) {
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
> - addUInt(Block, 0, dwarf::DW_FORM_udata, forwardingFieldOffset);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
> + addUInt(Block, dwarf::DW_FORM_udata, forwardingFieldOffset);
> }
>
> // Now dereference the __forwarding field to get to the real
> __Block_byref
> // struct: DW_OP_deref.
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
>
> // Now that we've got the real __Block_byref... struct, add the offset
> // for the variable's field to get to the location of the actual
> variable:
> // DW_OP_plus_uconst varFieldOffset. Again, don't add if it's 0.
> if (varFieldOffset > 0) {
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
> - addUInt(Block, 0, dwarf::DW_FORM_udata, varFieldOffset);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
> + addUInt(Block, dwarf::DW_FORM_udata, varFieldOffset);
> }
>
> // Now attach the location information to the DIE.
> - addBlock(Die, Attribute, 0, Block);
> + addBlock(Die, Attribute, Block);
> }
>
> /// isTypeSigned - Return true if the type is signed.
> @@ -654,7 +668,7 @@ void CompileUnit::addConstantValue(DIE *
> assert(MO.isImm() && "Invalid machine operand!");
> int SizeInBits = -1;
> bool SignedConstant = isTypeSigned(DD, Ty, &SizeInBits);
> - uint16_t Form;
> + dwarf::Form Form;
>
> // If we're a signed constant definitely use sdata.
> if (SignedConstant) {
> @@ -702,10 +716,10 @@ void CompileUnit::addConstantFPValue(DIE
>
> // Output the constant to DWARF one byte at a time.
> for (; Start != Stop; Start += Incr)
> - addUInt(Block, 0, dwarf::DW_FORM_data1,
> + addUInt(Block, dwarf::DW_FORM_data1,
> (unsigned char)0xFF & FltPtr[Start]);
>
> - addBlock(Die, dwarf::DW_AT_const_value, 0, Block);
> + addBlock(Die, dwarf::DW_AT_const_value, Block);
> }
>
> /// addConstantFPValue - Add constant value entry in variable DIE.
> @@ -732,7 +746,7 @@ void CompileUnit::addConstantValue(DIE *
> }
>
> // Else use data for now unless it's larger than we can deal with.
> - uint16_t Form;
> + dwarf::Form Form;
> switch (CIBitWidth) {
> case 8:
> Form = dwarf::DW_FORM_data1;
> @@ -770,10 +784,10 @@ void CompileUnit::addConstantValue(DIE *
> c = Ptr64[i / 8] >> (8 * (i & 7));
> else
> c = Ptr64[(NumBytes - 1 - i) / 8] >> (8 * ((NumBytes - 1 - i) & 7));
> - addUInt(Block, 0, dwarf::DW_FORM_data1, c);
> + addUInt(Block, dwarf::DW_FORM_data1, c);
> }
>
> - addBlock(Die, dwarf::DW_AT_const_value, 0, Block);
> + addBlock(Die, dwarf::DW_AT_const_value, Block);
> }
>
> /// addTemplateParams - Add template parameters into buffer.
> @@ -857,7 +871,7 @@ DIE *CompileUnit::getOrCreateTypeDIE(con
> }
>
> /// addType - Add a new type attribute to the specified entity.
> -void CompileUnit::addType(DIE *Entity, DIType Ty, uint16_t Attribute) {
> +void CompileUnit::addType(DIE *Entity, DIType Ty, dwarf::Attribute
> Attribute) {
> assert(Ty && "Trying to add a type that doesn't exist?");
>
> // Check for pre-existence.
> @@ -1001,7 +1015,7 @@ void CompileUnit::constructTypeDIE(DIE &
> BTy.getEncoding());
>
> uint64_t Size = BTy.getSizeInBits() >> 3;
> - addUInt(&Buffer, dwarf::DW_AT_byte_size, 0, Size);
> + addUInt(&Buffer, dwarf::DW_AT_byte_size, None, Size);
> }
>
> /// constructTypeDIE - Construct derived type die from DIDerivedType.
> @@ -1022,7 +1036,7 @@ void CompileUnit::constructTypeDIE(DIE &
>
> // Add size if non-zero (derived types might be zero-sized.)
> if (Size && Tag != dwarf::DW_TAG_pointer_type)
> - addUInt(&Buffer, dwarf::DW_AT_byte_size, 0, Size);
> + addUInt(&Buffer, dwarf::DW_AT_byte_size, None, Size);
>
> if (Tag == dwarf::DW_TAG_ptr_to_member_type)
> addDIEEntry(&Buffer, dwarf::DW_AT_containing_type,
> @@ -1182,7 +1196,7 @@ void CompileUnit::constructTypeDIE(DIE &
> if (Property.isNonAtomicObjCProperty())
> PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_nonatomic;
> if (PropertyAttributes)
> - addUInt(ElemDie, dwarf::DW_AT_APPLE_property_attribute, 0,
> + addUInt(ElemDie, dwarf::DW_AT_APPLE_property_attribute, None,
> PropertyAttributes);
>
> DIEEntry *Entry = getDIEEntry(Element);
> @@ -1228,10 +1242,10 @@ void CompileUnit::constructTypeDIE(DIE &
> // Add size if non-zero (derived types might be zero-sized.)
> // TODO: Do we care about size for enum forward declarations?
> if (Size)
> - addUInt(&Buffer, dwarf::DW_AT_byte_size, 0, Size);
> + addUInt(&Buffer, dwarf::DW_AT_byte_size, None, Size);
> else if (!CTy.isForwardDecl())
> // Add zero size if it is not a forward declaration.
> - addUInt(&Buffer, dwarf::DW_AT_byte_size, 0, 0);
> + addUInt(&Buffer, dwarf::DW_AT_byte_size, None, 0);
>
> // If we're a forward decl, say so.
> if (CTy.isForwardDecl())
> @@ -1301,8 +1315,8 @@ CompileUnit::getOrCreateTemplateValuePar
> addOpAddress(Block, Asm->Mang->getSymbol(GV));
> // Emit DW_OP_stack_value to use the address as the immediate value
> of the
> // parameter, rather than a pointer to it.
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_stack_value);
> - addBlock(ParamDIE, dwarf::DW_AT_location, 0, Block);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_stack_value);
> + addBlock(ParamDIE, dwarf::DW_AT_location, Block);
> } else if (VP.getTag() == dwarf::DW_TAG_GNU_template_template_param) {
> assert(isa<MDString>(Val));
> addString(ParamDIE, dwarf::DW_AT_GNU_template_name,
> @@ -1410,9 +1424,9 @@ DIE *CompileUnit::getOrCreateSubprogramD
> if (VK) {
> addUInt(SPDie, dwarf::DW_AT_virtuality, dwarf::DW_FORM_data1, VK);
> DIEBlock *Block = getDIEBlock();
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
> - addUInt(Block, 0, dwarf::DW_FORM_udata, SP.getVirtualIndex());
> - addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, 0, Block);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
> + addUInt(Block, dwarf::DW_FORM_udata, SP.getVirtualIndex());
> + addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, Block);
> ContainingTypeMap.insert(std::make_pair(SPDie,
>
> resolve(SP.getContainingType())));
> }
> @@ -1539,18 +1553,17 @@ void CompileUnit::createGlobalVariableDI
> // Based on GCC's support for TLS:
> if (!DD->useSplitDwarf()) {
> // 1) Start with a constNu of the appropriate pointer size
> - addUInt(Block, 0, dwarf::DW_FORM_data1,
> + addUInt(Block, dwarf::DW_FORM_data1,
> PointerSize == 4 ? dwarf::DW_OP_const4u :
> dwarf::DW_OP_const8u);
> // 2) containing the (relocated) offset of the TLS variable
> // within the module's TLS block.
> - addExpr(Block, 0, dwarf::DW_FORM_udata, Expr);
> + addExpr(Block, dwarf::DW_FORM_udata, Expr);
> } else {
> - addUInt(Block, 0, dwarf::DW_FORM_data1,
> dwarf::DW_OP_GNU_const_index);
> - addUInt(Block, 0, dwarf::DW_FORM_udata,
> DU->getAddrPoolIndex(Expr));
> + addUInt(Block, dwarf::DW_FORM_data1,
> dwarf::DW_OP_GNU_const_index);
> + addUInt(Block, dwarf::DW_FORM_udata, DU->getAddrPoolIndex(Expr));
> }
> // 3) followed by a custom OP to make the debugger do a TLS lookup.
> - addUInt(Block, 0, dwarf::DW_FORM_data1,
> - dwarf::DW_OP_GNU_push_tls_address);
> + addUInt(Block, dwarf::DW_FORM_data1,
> dwarf::DW_OP_GNU_push_tls_address);
> } else
> addOpAddress(Block, Sym);
> // Do not create specification DIE if context is either compile unit
> @@ -1560,13 +1573,13 @@ void CompileUnit::createGlobalVariableDI
> // Create specification DIE.
> VariableSpecDIE = new DIE(dwarf::DW_TAG_variable);
> addDIEEntry(VariableSpecDIE, dwarf::DW_AT_specification,
> VariableDIE);
> - addBlock(VariableSpecDIE, dwarf::DW_AT_location, 0, Block);
> + addBlock(VariableSpecDIE, dwarf::DW_AT_location, Block);
> // A static member's declaration is already flagged as such.
> if (!SDMDecl.Verify())
> addFlag(VariableDIE, dwarf::DW_AT_declaration);
> addDie(VariableSpecDIE);
> } else {
> - addBlock(VariableDIE, dwarf::DW_AT_location, 0, Block);
> + addBlock(VariableDIE, dwarf::DW_AT_location, Block);
> }
> // Add the linkage name.
> StringRef LinkageName = GV.getLinkageName();
> @@ -1591,12 +1604,12 @@ void CompileUnit::createGlobalVariableDI
> DIEBlock *Block = new (DIEValueAllocator) DIEBlock();
> Value *Ptr = CE->getOperand(0);
> addOpAddress(Block, Asm->Mang->getSymbol(cast<GlobalValue>(Ptr)));
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
> SmallVector<Value *, 3> Idx(CE->op_begin() + 1, CE->op_end());
> - addUInt(Block, 0, dwarf::DW_FORM_udata,
> + addUInt(Block, dwarf::DW_FORM_udata,
> Asm->getDataLayout().getIndexedOffset(Ptr->getType(), Idx));
> - addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
> - addBlock(VariableDIE, dwarf::DW_AT_location, 0, Block);
> + addUInt(Block, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
> + addBlock(VariableDIE, dwarf::DW_AT_location, Block);
> }
>
> if (addToAccelTable) {
> @@ -1631,12 +1644,12 @@ void CompileUnit::constructSubrangeDIE(D
> int64_t Count = SR.getCount();
>
> if (DefaultLowerBound == -1 || LowerBound != DefaultLowerBound)
> - addUInt(DW_Subrange, dwarf::DW_AT_lower_bound, 0, LowerBound);
> + addUInt(DW_Subrange, dwarf::DW_AT_lower_bound, None, LowerBound);
>
> if (Count != -1 && Count != 0)
> // FIXME: An unbounded array should reference the expression that
> defines
> // the array.
> - addUInt(DW_Subrange, dwarf::DW_AT_upper_bound, 0, LowerBound + Count
> - 1);
> + addUInt(DW_Subrange, dwarf::DW_AT_upper_bound, None, LowerBound +
> Count - 1);
>
> Buffer.addChild(DW_Subrange);
> }
> @@ -1657,7 +1670,7 @@ void CompileUnit::constructArrayTypeDIE(
> // Construct an anonymous type for index type.
> IdxTy = new DIE(dwarf::DW_TAG_base_type);
> addString(IdxTy, dwarf::DW_AT_name, "int");
> - addUInt(IdxTy, dwarf::DW_AT_byte_size, 0, sizeof(int32_t));
> + addUInt(IdxTy, dwarf::DW_AT_byte_size, None, sizeof(int32_t));
> addUInt(IdxTy, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
> dwarf::DW_ATE_signed);
> addDie(IdxTy);
> @@ -1787,15 +1800,16 @@ DIE *CompileUnit::createMemberDIE(DIDeri
> addSourceLine(MemberDie, DT);
>
> DIEBlock *MemLocationDie = new (DIEValueAllocator) DIEBlock();
> - addUInt(MemLocationDie, 0, dwarf::DW_FORM_data1,
> dwarf::DW_OP_plus_uconst);
> + addUInt(MemLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
>
> uint64_t Size = DT.getSizeInBits();
> uint64_t FieldSize = getBaseTypeSize(DD, DT);
>
> if (Size != FieldSize) {
> // Handle bitfield.
> - addUInt(MemberDie, dwarf::DW_AT_byte_size, 0, getBaseTypeSize(DD, DT)
> >> 3);
> - addUInt(MemberDie, dwarf::DW_AT_bit_size, 0, DT.getSizeInBits());
> + addUInt(MemberDie, dwarf::DW_AT_byte_size, None,
> + getBaseTypeSize(DD, DT) >> 3);
> + addUInt(MemberDie, dwarf::DW_AT_bit_size, None, DT.getSizeInBits());
>
> uint64_t Offset = DT.getOffsetInBits();
> uint64_t AlignMask = ~(DT.getAlignInBits() - 1);
> @@ -1806,15 +1820,15 @@ DIE *CompileUnit::createMemberDIE(DIDeri
> // Maybe we need to work from the other end.
> if (Asm->getDataLayout().isLittleEndian())
> Offset = FieldSize - (Offset + Size);
> - addUInt(MemberDie, dwarf::DW_AT_bit_offset, 0, Offset);
> + addUInt(MemberDie, dwarf::DW_AT_bit_offset, None, Offset);
>
> // Here WD_AT_data_member_location points to the anonymous
> // field that includes this bit field.
> - addUInt(MemLocationDie, 0, dwarf::DW_FORM_udata, FieldOffset >> 3);
> + addUInt(MemLocationDie, dwarf::DW_FORM_udata, FieldOffset >> 3);
>
> } else
> // This is not a bitfield.
> - addUInt(MemLocationDie, 0, dwarf::DW_FORM_udata, DT.getOffsetInBits()
> >> 3);
> + addUInt(MemLocationDie, dwarf::DW_FORM_udata, DT.getOffsetInBits() >>
> 3);
>
> if (DT.getTag() == dwarf::DW_TAG_inheritance && DT.isVirtual()) {
>
> @@ -1823,17 +1837,17 @@ DIE *CompileUnit::createMemberDIE(DIDeri
> // BaseAddr = ObAddr + *((*ObAddr) - Offset)
>
> DIEBlock *VBaseLocationDie = new (DIEValueAllocator) DIEBlock();
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_dup);
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_data1,
> dwarf::DW_OP_deref);
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_data1,
> dwarf::DW_OP_constu);
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_udata,
> DT.getOffsetInBits());
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_data1,
> dwarf::DW_OP_minus);
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_data1,
> dwarf::DW_OP_deref);
> - addUInt(VBaseLocationDie, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_dup);
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_udata, DT.getOffsetInBits());
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_minus);
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
> + addUInt(VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
>
> - addBlock(MemberDie, dwarf::DW_AT_data_member_location, 0,
> VBaseLocationDie);
> + addBlock(MemberDie, dwarf::DW_AT_data_member_location,
> VBaseLocationDie);
> } else
> - addBlock(MemberDie, dwarf::DW_AT_data_member_location, 0,
> MemLocationDie);
> + addBlock(MemberDie, dwarf::DW_AT_data_member_location,
> MemLocationDie);
>
> if (DT.isProtected())
> addUInt(MemberDie, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1,
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h?rev=193091&r1=193090&r2=193091&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h Mon Oct 21
> 12:28:37 2013
> @@ -17,6 +17,7 @@
> #include "DIE.h"
> #include "DwarfDebug.h"
> #include "llvm/ADT/DenseMap.h"
> +#include "llvm/ADT/Optional.h"
> #include "llvm/ADT/OwningPtr.h"
> #include "llvm/ADT/StringMap.h"
> #include "llvm/DebugInfo.h"
> @@ -166,56 +167,63 @@ public:
> void addDie(DIE *Buffer) { CUDie->addChild(Buffer); }
>
> /// addFlag - Add a flag that is true to the DIE.
> - void addFlag(DIE *Die, uint16_t Attribute);
> + void addFlag(DIE *Die, dwarf::Attribute Attribute);
>
> /// addUInt - Add an unsigned integer attribute data and value.
> ///
> - void addUInt(DIE *Die, uint16_t Attribute, uint16_t Form, uint64_t
> Integer);
> + void addUInt(DIE *Die, dwarf::Attribute Attribute,
> Optional<dwarf::Form> Form,
> + uint64_t Integer);
> +
> + void addUInt(DIEBlock *Block, dwarf::Form Form, uint64_t Integer);
>
> /// addSInt - Add an signed integer attribute data and value.
> ///
> - void addSInt(DIE *Die, uint16_t Attribute, uint16_t Form, int64_t
> Integer);
> + void addSInt(DIE *Die, dwarf::Attribute Attribute,
> Optional<dwarf::Form> Form,
> + int64_t Integer);
> +
> + void addSInt(DIEBlock *Die, Optional<dwarf::Form> Form, int64_t
> Integer);
>
> /// addString - Add a string attribute data and value.
> ///
> - void addString(DIE *Die, uint16_t Attribute, const StringRef Str);
> + void addString(DIE *Die, dwarf::Attribute Attribute, const StringRef
> Str);
>
> /// addLocalString - Add a string attribute data and value.
> ///
> - void addLocalString(DIE *Die, uint16_t Attribute, const StringRef Str);
> + void addLocalString(DIE *Die, dwarf::Attribute Attribute, const
> StringRef Str);
>
> /// addExpr - Add a Dwarf expression attribute data and value.
> ///
> - void addExpr(DIE *Die, uint16_t Attribute, uint16_t Form, const MCExpr
> *Expr);
> + void addExpr(DIEBlock *Die, dwarf::Form Form, const MCExpr *Expr);
>
> /// addLabel - Add a Dwarf label attribute data and value.
> ///
> - void addLabel(DIE *Die, uint16_t Attribute, uint16_t Form,
> + void addLabel(DIE *Die, dwarf::Attribute Attribute, dwarf::Form Form,
> const MCSymbol *Label);
>
> + void addLabel(DIEBlock *Die, dwarf::Form Form, const MCSymbol *Label);
> +
> /// addLabelAddress - Add a dwarf label attribute data and value using
> /// either DW_FORM_addr or DW_FORM_GNU_addr_index.
> ///
> - void addLabelAddress(DIE *Die, uint16_t Attribute, MCSymbol *Label);
> + void addLabelAddress(DIE *Die, dwarf::Attribute Attribute, MCSymbol
> *Label);
>
> /// addOpAddress - Add a dwarf op address data and value using the
> /// form given and an op of either DW_FORM_addr or
> DW_FORM_GNU_addr_index.
> ///
> - void addOpAddress(DIE *Die, const MCSymbol *Label);
> - void addOpAddress(DIE *Die, const MCSymbolRefExpr *Label);
> + void addOpAddress(DIEBlock *Die, const MCSymbol *Label);
>
> /// addDelta - Add a label delta attribute data and value.
> ///
> - void addDelta(DIE *Die, uint16_t Attribute, uint16_t Form, const
> MCSymbol *Hi,
> + void addDelta(DIE *Die, dwarf::Attribute Attribute, dwarf::Form Form,
> const MCSymbol *Hi,
> const MCSymbol *Lo);
>
> /// addDIEEntry - Add a DIE attribute data and value.
> ///
> - void addDIEEntry(DIE *Die, uint16_t Attribute, DIE *Entry);
> + void addDIEEntry(DIE *Die, dwarf::Attribute Attribute, DIE *Entry);
>
> /// addBlock - Add block data.
> ///
> - void addBlock(DIE *Die, uint16_t Attribute, uint16_t Form, DIEBlock
> *Block);
> + void addBlock(DIE *Die, dwarf::Attribute Attribute, DIEBlock *Block);
>
> /// addSourceLine - Add location information to specified debug
> information
> /// entry.
> @@ -228,7 +236,7 @@ public:
>
> /// addAddress - Add an address attribute to a die based on the location
> /// provided.
> - void addAddress(DIE *Die, uint16_t Attribute, const MachineLocation
> &Location,
> + void addAddress(DIE *Die, dwarf::Attribute Attribute, const
> MachineLocation &Location,
> bool Indirect = false);
>
> /// addConstantValue - Add constant value entry in variable DIE.
> @@ -244,17 +252,17 @@ public:
> void addTemplateParams(DIE &Buffer, DIArray TParams);
>
> /// addRegisterOp - Add register operand.
> - void addRegisterOp(DIE *TheDie, unsigned Reg);
> + void addRegisterOp(DIEBlock *TheDie, unsigned Reg);
>
> /// addRegisterOffset - Add register offset.
> - void addRegisterOffset(DIE *TheDie, unsigned Reg, int64_t Offset);
> + void addRegisterOffset(DIEBlock *TheDie, unsigned Reg, int64_t Offset);
>
> /// addComplexAddress - Start with the address based on the location
> provided,
> /// and generate the DWARF information necessary to find the actual
> variable
> /// (navigating the extra location information encoded in the type)
> based on
> /// the starting location. Add the DWARF information to the die.
> ///
> - void addComplexAddress(const DbgVariable &DV, DIE *Die, uint16_t
> Attribute,
> + void addComplexAddress(const DbgVariable &DV, DIE *Die,
> dwarf::Attribute Attribute,
> const MachineLocation &Location);
>
> // FIXME: Should be reformulated in terms of addComplexAddress.
> @@ -264,7 +272,7 @@ public:
> /// starting location. Add the DWARF information to the die. Obsolete,
> /// please use addComplexAddress instead.
> ///
> - void addBlockByrefAddress(const DbgVariable &DV, DIE *Die, uint16_t
> Attribute,
> + void addBlockByrefAddress(const DbgVariable &DV, DIE *Die,
> dwarf::Attribute Attribute,
> const MachineLocation &Location);
>
> /// addVariableAddress - Add DW_AT_location attribute for a
> @@ -278,7 +286,7 @@ public:
> /// addType - Add a new type attribute to the specified entity. This
> takes
> /// and attribute parameter because DW_AT_friend attributes are also
> /// type references.
> - void addType(DIE *Entity, DIType Ty, uint16_t Attribute =
> dwarf::DW_AT_type);
> + void addType(DIE *Entity, DIType Ty, dwarf::Attribute Attribute =
> dwarf::DW_AT_type);
>
> /// getOrCreateNameSpace - Create a DIE for DINameSpace.
> DIE *getOrCreateNameSpace(DINameSpace NS);
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=193091&r1=193090&r2=193091&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Mon Oct 21 12:28:37
> 2013
> @@ -558,10 +558,10 @@ DIE *DwarfDebug::constructInlinedScopeDI
>
> // Add the call site information to the DIE.
> DILocation DL(Scope->getInlinedAt());
> - TheCU->addUInt(ScopeDIE, dwarf::DW_AT_call_file, 0,
> + TheCU->addUInt(ScopeDIE, dwarf::DW_AT_call_file, None,
> getOrCreateSourceID(DL.getFilename(), DL.getDirectory(),
> TheCU->getUniqueID()));
> - TheCU->addUInt(ScopeDIE, dwarf::DW_AT_call_line, 0, DL.getLineNumber());
> + TheCU->addUInt(ScopeDIE, dwarf::DW_AT_call_line, None,
> DL.getLineNumber());
>
> // Add name to the name table, we do this here because we're guaranteed
> // to have concrete versions of our DW_TAG_inlined_subprogram nodes.
> @@ -886,8 +886,8 @@ void DwarfDebug::constructImportedEntity
> unsigned FileID = getOrCreateSourceID(Module.getContext().getFilename(),
>
> Module.getContext().getDirectory(),
> TheCU->getUniqueID());
> - TheCU->addUInt(IMDie, dwarf::DW_AT_decl_file, 0, FileID);
> - TheCU->addUInt(IMDie, dwarf::DW_AT_decl_line, 0,
> Module.getLineNumber());
> + TheCU->addUInt(IMDie, dwarf::DW_AT_decl_file, None, FileID);
> + TheCU->addUInt(IMDie, dwarf::DW_AT_decl_line, None,
> Module.getLineNumber());
> TheCU->addDIEEntry(IMDie, dwarf::DW_AT_import, EntityDie);
> StringRef Name = Module.getName();
> if (!Name.empty())
> @@ -955,14 +955,14 @@ void DwarfDebug::computeInlinedDIEs() {
> for (SmallPtrSet<DIE *, 4>::iterator AI = InlinedSubprogramDIEs.begin(),
> AE = InlinedSubprogramDIEs.end(); AI != AE; ++AI) {
> DIE *ISP = *AI;
> - FirstCU->addUInt(ISP, dwarf::DW_AT_inline, 0, dwarf::DW_INL_inlined);
> + FirstCU->addUInt(ISP, dwarf::DW_AT_inline, None,
> dwarf::DW_INL_inlined);
> }
> for (DenseMap<const MDNode *, DIE *>::iterator AI =
> AbstractSPDies.begin(),
> AE = AbstractSPDies.end(); AI != AE; ++AI) {
> DIE *ISP = AI->second;
> if (InlinedSubprogramDIEs.count(ISP))
> continue;
> - FirstCU->addUInt(ISP, dwarf::DW_AT_inline, 0, dwarf::DW_INL_inlined);
> + FirstCU->addUInt(ISP, dwarf::DW_AT_inline, None,
> dwarf::DW_INL_inlined);
> }
> }
>
> @@ -2047,8 +2047,8 @@ void DwarfDebug::emitDIE(DIE *Die, std::
>
> // Emit the DIE attribute values.
> for (unsigned i = 0, N = Values.size(); i < N; ++i) {
> - unsigned Attr = AbbrevData[i].getAttribute();
> - unsigned Form = AbbrevData[i].getForm();
> + dwarf::Attribute Attr = AbbrevData[i].getAttribute();
> + dwarf::Form Form = AbbrevData[i].getForm();
> assert(Form && "Too many attributes for DIE (check abbreviation)");
>
> if (Asm->isVerbose())
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
--
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131022/2022649f/attachment.html>
More information about the llvm-commits
mailing list