Changes in directory llvm/lib/CodeGen:
DwarfWriter.cpp updated: 1.77 -> 1.78 --- Log message: More long term solution --- Diffs of the changes: (+14 -10) DwarfWriter.cpp | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-) Index: llvm/lib/CodeGen/DwarfWriter.cpp diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.77 llvm/lib/CodeGen/DwarfWriter.cpp:1.78 --- llvm/lib/CodeGen/DwarfWriter.cpp:1.77 Tue Oct 3 20:43:13 2006 +++ llvm/lib/CodeGen/DwarfWriter.cpp Wed Oct 4 05:40:15 2006 @@ -1259,17 +1259,27 @@ Unit->getDie()->AddChild(Die); return Die; } - + // Check for pre-existence. DIE *&Slot = Unit->getDieMapSlotFor(TyDesc); if (Slot) return Slot; + // Type DIE result. + DIE *Ty = NULL; + + // Short cut for handling subprogram types (not really a TyDesc.) + if (SubprogramDesc *SubprogramTy = dyn_cast<SubprogramDesc>(TyDesc)) { + Slot = Ty = new DIE(DW_TAG_pointer_type); + Ty->AddUInt(DW_AT_byte_size, 0, TAI->getAddressSize()); + Ty->AddString(DW_AT_name, DW_FORM_string, SubprogramTy->getName()); + Context->AddChild(Ty); + return Slot; + } + // Get core information. const std::string &Name = TyDesc->getName(); uint64_t Size = TyDesc->getSize() >> 3; - DIE *Ty = NULL; - if (BasicTypeDesc *BasicTy = dyn_cast<BasicTypeDesc>(TyDesc)) { // Fundamental types like int, float, bool Slot = Ty = new DIE(DW_TAG_base_type); @@ -1526,14 +1536,8 @@ } default: break; } - } else if (SubprogramDesc *SubprogramTy = dyn_cast<SubprogramDesc>(TyDesc)) { - Slot = Ty = new DIE(DW_TAG_pointer_type); - Ty->AddUInt(DW_AT_byte_size, 0, TAI->getAddressSize()); - Ty->AddString(DW_AT_name, DW_FORM_string, SubprogramTy->getName()); - Context->AddChild(Ty); - return Slot; } - + assert(Ty && "Type not supported yet"); // Add size if non-zero (derived types don't have a size.) _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits