From 5dcabbc9e8871d4eb8f6ceacf8401a7d8aada4ad Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Sat, 16 Nov 2013 01:14:37 +0000 Subject: [PATCH] Use early continue. llvm-svn: 194911 --- lld/lib/ReaderWriter/Native/WriterNative.cpp | 50 +++++++++----------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/lld/lib/ReaderWriter/Native/WriterNative.cpp b/lld/lib/ReaderWriter/Native/WriterNative.cpp index ff3a500bc9dc..45846b5bd9af 100644 --- a/lld/lib/ReaderWriter/Native/WriterNative.cpp +++ b/lld/lib/ReaderWriter/Native/WriterNative.cpp @@ -416,38 +416,34 @@ private: const Atom* atom = it.first; uint32_t targetIndex = it.second; assert(targetIndex < maxTargetIndex); - uint32_t atomIndex = 0; + TargetToIndex::iterator pos = _definedAtomIndex.find(atom); - if ( pos != _definedAtomIndex.end() ) { - atomIndex = pos->second; + if (pos != _definedAtomIndex.end()) { + targetIndexes[targetIndex] = pos->second; + continue; } - else { - pos = _undefinedAtomIndex.find(atom); - if ( pos != _undefinedAtomIndex.end() ) { - atomIndex = pos->second + _definedAtomIvars.size(); - } - else { - pos = _sharedLibraryAtomIndex.find(atom); - if ( pos != _sharedLibraryAtomIndex.end() ) { - assert(pos != _sharedLibraryAtomIndex.end()); - atomIndex = pos->second - + _definedAtomIvars.size() - + _undefinedAtomIndex.size(); - } - else { - pos = _absoluteAtomIndex.find(atom); - assert(pos != _absoluteAtomIndex.end()); - atomIndex = pos->second - + _definedAtomIvars.size() - + _undefinedAtomIndex.size() - + _sharedLibraryAtomIndex.size(); - } - } + uint32_t base = _definedAtomIvars.size(); + + pos = _undefinedAtomIndex.find(atom); + if (pos != _undefinedAtomIndex.end()) { + targetIndexes[targetIndex] = pos->second + base; + continue; } - targetIndexes[targetIndex] = atomIndex; + base += _undefinedAtomIndex.size(); + + pos = _sharedLibraryAtomIndex.find(atom); + if (pos != _sharedLibraryAtomIndex.end()) { + targetIndexes[targetIndex] = pos->second + base; + continue; + } + base += _sharedLibraryAtomIndex.size(); + + pos = _absoluteAtomIndex.find(atom); + assert(pos != _absoluteAtomIndex.end()); + targetIndexes[targetIndex] = pos->second + base; } // write table - out.write((char*)&targetIndexes[0], maxTargetIndex*sizeof(uint32_t)); + out.write((char*)&targetIndexes[0], maxTargetIndex * sizeof(uint32_t)); } uint32_t getAddendIndex(Reference::Addend addend) {