[lld] r320070 - Simplify .gnu.hash writing. NFC.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 7 10:51:19 PST 2017
Author: rafael
Date: Thu Dec 7 10:51:19 2017
New Revision: 320070
URL: http://llvm.org/viewvc/llvm-project?rev=320070&view=rev
Log:
Simplify .gnu.hash writing. NFC.
Modified:
lld/trunk/ELF/SyntheticSections.cpp
Modified: lld/trunk/ELF/SyntheticSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=320070&r1=320069&r2=320070&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.cpp (original)
+++ lld/trunk/ELF/SyntheticSections.cpp Thu Dec 7 10:51:19 2017
@@ -1750,15 +1750,12 @@ void GnuHashTableSection::writeHashTable
// Write hash buckets. Hash buckets contain indices in the following
// hash value table.
uint32_t *Buckets = reinterpret_cast<uint32_t *>(Buf);
- auto SymI = Symbols.begin();
- for (size_t I = 0; I < NBuckets; ++I) {
- auto NewI = std::find_if(SymI, Symbols.end(), [=](const Entry &Ent) {
- return Ent.BucketIdx == I;
- });
- if (NewI != Symbols.end()) {
- write32(Buckets + I, NewI->Sym->DynsymIndex);
- SymI = NewI;
- }
+ uint32_t OldBucket = -1;
+ for (auto I = Symbols.begin(), E = Symbols.end(); I != E; ++I) {
+ if (I->BucketIdx == OldBucket)
+ continue;
+ OldBucket = I->BucketIdx;
+ write32(Buckets + OldBucket, I->Sym->DynsymIndex);
}
// Write a hash value table. It represents a sequence of chains that
More information about the llvm-commits
mailing list