diff options
| author | Devang Patel <dpatel@apple.com> | 2009-01-20 18:35:14 +0000 | 
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2009-01-20 18:35:14 +0000 | 
| commit | f0dae1aae306556a6d97695535693ff6cea6519d (patch) | |
| tree | 2a2766d36514b658e94e9f1c17f24739a391db55 /llvm/lib/CodeGen | |
| parent | fe750179fff2bf9a11b331c95ca8315522694946 (diff) | |
| download | bcm5719-llvm-f0dae1aae306556a6d97695535693ff6cea6519d.tar.gz bcm5719-llvm-f0dae1aae306556a6d97695535693ff6cea6519d.zip | |
Enable debug info for enums.
llvm-svn: 62594
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp | 24 | 
1 files changed, 14 insertions, 10 deletions
| diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index d3d2ded88ff..fa05c682504 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp @@ -1752,13 +1752,18 @@ private:      case DW_TAG_array_type:        ConstructArrayTypeDIE(DW_Unit, Buffer, &CTy);        break; -    //FIXME - Enable this.  -    // case DW_TAG_enumeration_type: -    //  DIArray Elements = CTy.getTypeArray(); -    //  // Add enumerators to enumeration type. -    //  for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i)  -    //   ConstructEnumTypeDIE(Buffer, &Elements.getElement(i)); -    //  break; +    case DW_TAG_enumeration_type: +      { +        DIArray Elements = CTy.getTypeArray(); +        // Add enumerators to enumeration type. +        for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) { +          DIE *ElemDie = NULL; +          DIEnumerator Enum(Elements.getElement(i).getGV()); +          ElemDie = ConstructEnumTypeDIE(DW_Unit, &Enum); +          Buffer.AddChild(ElemDie); +        } +      } +      break;      case DW_TAG_subroutine_type:         {          // Add prototype flag. @@ -1874,14 +1879,13 @@ private:    /// ConstructEnumTypeDIE - Construct enum type DIE from     /// DIEnumerator. -  void ConstructEnumTypeDIE(CompileUnit *DW_Unit,  -                            DIE &Buffer, DIEnumerator *ETy) { +  DIE *ConstructEnumTypeDIE(CompileUnit *DW_Unit, DIEnumerator *ETy) {      DIE *Enumerator = new DIE(DW_TAG_enumerator);      AddString(Enumerator, DW_AT_name, DW_FORM_string, ETy->getName());      int64_t Value = ETy->getEnumValue();                                   AddSInt(Enumerator, DW_AT_const_value, DW_FORM_sdata, Value); -    Buffer.AddChild(Enumerator); +    return Enumerator;    }    /// CreateGlobalVariableDIE - Create new DIE using GV. | 

