Changes in directory llvm/lib/CodeGen:
DwarfWriter.cpp updated: 1.108 -> 1.109 --- Log message: Need to walk the derived chain of typedefs to get actual size. --- Diffs of the changes: (+13 -4) DwarfWriter.cpp | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) Index: llvm/lib/CodeGen/DwarfWriter.cpp diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.108 llvm/lib/CodeGen/DwarfWriter.cpp:1.109 --- llvm/lib/CodeGen/DwarfWriter.cpp:1.108 Sat Dec 16 23:15:12 2006 +++ llvm/lib/CodeGen/DwarfWriter.cpp Fri Dec 22 14:03:42 2006 @@ -1539,10 +1539,19 @@ uint64_t FieldAlign = Align; uint64_t FieldOffset = Offset; - if (TypeDesc *FromTy = MemberDesc->getFromType()) { - AddType(Member, FromTy, Unit); - FieldSize = FromTy->getSize(); - FieldAlign = FromTy->getSize(); + // Set the member type. + TypeDesc *FromTy = MemberDesc->getFromType(); + AddType(Member, FromTy, Unit); + + // Walk up typedefs until a real size is found. + while (FromTy) { + if (FromTy->getTag() != DW_TAG_typedef) { + FieldSize = FromTy->getSize(); + FieldAlign = FromTy->getSize(); + break; + } + + FromTy = dyn_cast<DerivedTypeDesc>(FromTy)->getFromType(); } // Unless we have a bit field. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits