diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-07-28 23:44:43 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-07-28 23:44:43 +0000 |
commit | 23b177e86e1c4fb7d1349036837f0117038b73f6 (patch) | |
tree | d95eaa012a6d7053bb9660cd1544bd23a61f4228 | |
parent | 2f84b5ab4689009d04f7210b678ce406d42f89aa (diff) | |
download | bcm5719-llvm-23b177e86e1c4fb7d1349036837f0117038b73f6.tar.gz bcm5719-llvm-23b177e86e1c4fb7d1349036837f0117038b73f6.zip |
Cleanup code to use iterators instead of ".size()".
Does any one else hate the name "const_reverse_iterator" as much as I do?
llvm-svn: 77399
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp index 35aad773b71..8f20b506b30 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -317,7 +317,7 @@ DwarfException::ComputeActionsTable(const SmallVectorImpl<const LandingPadInfo*> int FirstAction = 0; unsigned SizeActions = 0; const LandingPadInfo *PrevLPI = 0; - for (SmallVector<const LandingPadInfo *, 64>::const_iterator + for (SmallVectorImpl<const LandingPadInfo *>::const_iterator I = LandingPads.begin(), E = LandingPads.end(); I != E; ++I) { const LandingPadInfo *LPI = *I; const std::vector<int> &TypeIds = LPI->TypeIds; @@ -384,8 +384,10 @@ void DwarfException::EmitExceptionTable() { // duplicate actions. SmallVector<const LandingPadInfo *, 64> 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<unsigned, 64> 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<CallSiteEntry, 64> 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<CallSiteEntry, 64> 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<CallSiteEntry>::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<ActionEntry>::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<GlobalVariable *>::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<unsigned>::const_iterator + I = FilterIds.begin(), E = FilterIds.end(); I < E; ++I) { + unsigned TypeID = *I; Asm->EmitULEB128Bytes(TypeID); Asm->EOL("Filter TypeInfo index"); } |