diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp index 5f641777cec2b..dc801fab1ea5a 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp @@ -128,48 +128,49 @@ struct DWARFTypePrinter { } void appendArrayType(const DWARFDie &D) { - for (const DWARFDie &C : D.children()) - if (C.getTag() == DW_TAG_subrange_type) { - Optional LB; - Optional Count; - Optional UB; - Optional DefaultLB; - if (Optional L = C.find(DW_AT_lower_bound)) - LB = L->getAsUnsignedConstant(); - if (Optional CountV = C.find(DW_AT_count)) - Count = CountV->getAsUnsignedConstant(); - if (Optional UpperV = C.find(DW_AT_upper_bound)) - UB = UpperV->getAsUnsignedConstant(); - if (Optional LV = - D.getDwarfUnit()->getUnitDIE().find(DW_AT_language)) - if (Optional LC = LV->getAsUnsignedConstant()) - if ((DefaultLB = LanguageLowerBound( - static_cast(*LC)))) - if (LB && *LB == *DefaultLB) - LB = None; - if (!LB && !Count && !UB) - OS << "[]"; - else if (!LB && (Count || UB) && DefaultLB) - OS << '[' << (Count ? *Count : *UB - *DefaultLB + 1) << ']'; - else { - OS << "[["; + for (const DWARFDie &C : D.children()) { + if (C.getTag() != DW_TAG_subrange_type) + continue; + Optional LB; + Optional Count; + Optional UB; + Optional DefaultLB; + if (Optional L = C.find(DW_AT_lower_bound)) + LB = L->getAsUnsignedConstant(); + if (Optional CountV = C.find(DW_AT_count)) + Count = CountV->getAsUnsignedConstant(); + if (Optional UpperV = C.find(DW_AT_upper_bound)) + UB = UpperV->getAsUnsignedConstant(); + if (Optional LV = + D.getDwarfUnit()->getUnitDIE().find(DW_AT_language)) + if (Optional LC = LV->getAsUnsignedConstant()) + if ((DefaultLB = + LanguageLowerBound(static_cast(*LC)))) + if (LB && *LB == *DefaultLB) + LB = None; + if (!LB && !Count && !UB) + OS << "[]"; + else if (!LB && (Count || UB) && DefaultLB) + OS << '[' << (Count ? *Count : *UB - *DefaultLB + 1) << ']'; + else { + OS << "[["; + if (LB) + OS << *LB; + else + OS << '?'; + OS << ", "; + if (Count) if (LB) - OS << *LB; + OS << *LB + *Count; else - OS << '?'; - OS << ", "; - if (Count) - if (LB) - OS << *LB + *Count; - else - OS << "? + " << *Count; - else if (UB) - OS << *UB + 1; - else - OS << '?'; - OS << ")]"; - } + OS << "? + " << *Count; + else if (UB) + OS << *UB + 1; + else + OS << '?'; + OS << ")]"; } + } } void appendPointerLikeTypeBefore(DWARFDie D, DWARFDie Inner, StringRef Ptr) {