From 5cff487665097d971067cbede1598e249f673182 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 28 Jul 2009 23:44:43 +0000 Subject: [PATCH] Cleanup code to use iterators instead of ".size()". Does any one else hate the name "const_reverse_iterator" as much as I do? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77399 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfException.cpp | 46 ++++++++++++----------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfException.cpp b/lib/CodeGen/AsmPrinter/DwarfException.cpp index 35aad773b71..8f20b506b30 100644 --- a/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -317,7 +317,7 @@ DwarfException::ComputeActionsTable(const SmallVectorImpl int FirstAction = 0; unsigned SizeActions = 0; const LandingPadInfo *PrevLPI = 0; - for (SmallVector::const_iterator + for (SmallVectorImpl::const_iterator I = LandingPads.begin(), E = LandingPads.end(); I != E; ++I) { const LandingPadInfo *LPI = *I; const std::vector &TypeIds = LPI->TypeIds; @@ -384,8 +384,10 @@ void DwarfException::EmitExceptionTable() { // duplicate actions. SmallVector LandingPads; LandingPads.reserve(PadInfos.size()); + for (unsigned i = 0, N = PadInfos.size(); i != N; ++i) LandingPads.push_back(&PadInfos[i]); + std::sort(LandingPads.begin(), LandingPads.end(), PadLT); // Compute the actions table and gather the first action index for each @@ -394,18 +396,10 @@ void DwarfException::EmitExceptionTable() { SmallVector FirstActions; unsigned SizeActions = ComputeActionsTable(LandingPads, Actions, FirstActions); - // Compute the call-site table. The entry for an invoke has a try-range - // containing the call, a non-zero landing pad and an appropriate action. The - // entry for an ordinary call has a try-range containing the call and zero for - // the landing pad and the action. Calls marked 'nounwind' have no entry and - // must not be contained in the try-range of any entry - they form gaps in the - // table. Entries must be ordered by try-range address. - SmallVector CallSites; - RangeMapType PadMap; - // Invokes and nounwind calls have entries in PadMap (due to being bracketed // by try-range labels when lowered). Ordinary calls do not, so appropriate // try-ranges for them need be deduced. + RangeMapType PadMap; for (unsigned i = 0, N = LandingPads.size(); i != N; ++i) { const LandingPadInfo *LandingPad = LandingPads[i]; for (unsigned j = 0, E = LandingPad->BeginLabels.size(); j != E; ++j) { @@ -416,6 +410,14 @@ void DwarfException::EmitExceptionTable() { } } + // Compute the call-site table. The entry for an invoke has a try-range + // containing the call, a non-zero landing pad and an appropriate action. The + // entry for an ordinary call has a try-range containing the call and zero for + // the landing pad and the action. Calls marked 'nounwind' have no entry and + // must not be contained in the try-range of any entry - they form gaps in the + // table. Entries must be ordered by try-range address. + SmallVector CallSites; + // The end label of the previous invoke or nounwind try-range. unsigned LastLabel = 0; @@ -423,7 +425,7 @@ void DwarfException::EmitExceptionTable() { // an ordinary call) between the end of the previous try-range and now. bool SawPotentiallyThrowing = false; - // Whether the last callsite entry was for an invoke. + // Whether the last CallSite entry was for an invoke. bool PreviousIsInvoke = false; // Visit all instructions in order of address. @@ -451,7 +453,6 @@ void DwarfException::EmitExceptionTable() { PadRange P = L->second; const LandingPadInfo *LandingPad = LandingPads[P.PadIndex]; - assert(BeginLabel == LandingPad->BeginLabels[P.RangeIndex] && "Inconsistent landing pad map!"); @@ -562,8 +563,9 @@ void DwarfException::EmitExceptionTable() { Asm->EOL("Call-site table length"); // Emit the landing pad site information. - for (unsigned i = 0, e = CallSites.size(); i < e; ++i) { - const CallSiteEntry &S = CallSites[i]; + for (SmallVectorImpl::const_iterator + I = CallSites.begin(), E = CallSites.end(); I != E; ++I) { + const CallSiteEntry &S = *I; const char *BeginTag; unsigned BeginNumber; @@ -600,9 +602,9 @@ void DwarfException::EmitExceptionTable() { } // Emit the actions. - for (unsigned I = 0, N = Actions.size(); I != N; ++I) { - ActionEntry &Action = Actions[I]; - + for (SmallVectorImpl::const_iterator + I = Actions.begin(), E = Actions.end(); I != E; ++I) { + const ActionEntry &Action = *I; Asm->EmitSLEB128Bytes(Action.ValueForTypeID); Asm->EOL("TypeInfo index"); Asm->EmitSLEB128Bytes(Action.NextAction); @@ -610,8 +612,9 @@ void DwarfException::EmitExceptionTable() { } // Emit the type ids. - for (unsigned M = TypeInfos.size(); M; --M) { - GlobalVariable *GV = TypeInfos[M - 1]; + for (std::vector::const_reverse_iterator + I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) { + GlobalVariable *GV = *I; PrintRelDirective(); if (GV) { @@ -625,8 +628,9 @@ void DwarfException::EmitExceptionTable() { } // Emit the filter typeids. - for (unsigned j = 0, M = FilterIds.size(); j < M; ++j) { - unsigned TypeID = FilterIds[j]; + for (std::vector::const_iterator + I = FilterIds.begin(), E = FilterIds.end(); I < E; ++I) { + unsigned TypeID = *I; Asm->EmitULEB128Bytes(TypeID); Asm->EOL("Filter TypeInfo index"); }