diff options
-rw-r--r-- | lld/COFF/Chunks.cpp | 3 | ||||
-rw-r--r-- | lld/COFF/Chunks.h | 3 | ||||
-rw-r--r-- | lld/COFF/ICF.cpp | 4 | ||||
-rw-r--r-- | llvm/include/llvm/Object/COFF.h | 3 | ||||
-rw-r--r-- | llvm/lib/Object/COFFObjectFile.cpp | 9 |
5 files changed, 8 insertions, 14 deletions
diff --git a/lld/COFF/Chunks.cpp b/lld/COFF/Chunks.cpp index 451e18a600b..f5dd41e943f 100644 --- a/lld/COFF/Chunks.cpp +++ b/lld/COFF/Chunks.cpp @@ -31,8 +31,7 @@ namespace coff { SectionChunk::SectionChunk(ObjFile *F, const coff_section *H) : Chunk(SectionKind), Repl(this), Header(H), File(F), - Relocs(File->getCOFFObj()->getRelocations(Header)), - NumRelocs(std::distance(Relocs.begin(), Relocs.end())) { + Relocs(File->getCOFFObj()->getRelocations(Header)) { // Initialize SectionName. File->getCOFFObj()->getSectionName(Header, SectionName); diff --git a/lld/COFF/Chunks.h b/lld/COFF/Chunks.h index b95869a30d2..49538151377 100644 --- a/lld/COFF/Chunks.h +++ b/lld/COFF/Chunks.h @@ -216,8 +216,7 @@ public: private: StringRef SectionName; std::vector<SectionChunk *> AssocChildren; - llvm::iterator_range<const coff_relocation *> Relocs; - size_t NumRelocs; + ArrayRef<coff_relocation> Relocs; // Used by the garbage collector. bool Live; diff --git a/lld/COFF/ICF.cpp b/lld/COFF/ICF.cpp index 77c05b74ad3..ff6f936b0e8 100644 --- a/lld/COFF/ICF.cpp +++ b/lld/COFF/ICF.cpp @@ -65,7 +65,7 @@ private: // Returns a hash value for S. uint32_t ICF::getHash(SectionChunk *C) { - return hash_combine(C->getPermissions(), C->SectionName, C->NumRelocs, + return hash_combine(C->getPermissions(), C->SectionName, C->Relocs.size(), C->Alignment, uint32_t(C->Header->SizeOfRawData), C->Checksum, C->getContents()); } @@ -123,7 +123,7 @@ void ICF::segregate(size_t Begin, size_t End, bool Constant) { // Compare "non-moving" part of two sections, namely everything // except relocation targets. bool ICF::equalsConstant(const SectionChunk *A, const SectionChunk *B) { - if (A->NumRelocs != B->NumRelocs) + if (A->Relocs.size() != B->Relocs.size()) return false; // Compare relocations. diff --git a/llvm/include/llvm/Object/COFF.h b/llvm/include/llvm/Object/COFF.h index 9190149f382..99048abfdb3 100644 --- a/llvm/include/llvm/Object/COFF.h +++ b/llvm/include/llvm/Object/COFF.h @@ -1012,8 +1012,7 @@ public: llvm_unreachable("null symbol table pointer!"); } - iterator_range<const coff_relocation *> - getRelocations(const coff_section *Sec) const; + ArrayRef<coff_relocation> getRelocations(const coff_section *Sec) const; std::error_code getSectionName(const coff_section *Sec, StringRef &Res) const; uint64_t getSectionSize(const coff_section *Sec) const; diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index e45246b5776..ab4cc60cbc2 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -1147,13 +1147,10 @@ COFFObjectFile::getCOFFRelocation(const RelocationRef &Reloc) const { return toRel(Reloc.getRawDataRefImpl()); } -iterator_range<const coff_relocation *> +ArrayRef<coff_relocation> COFFObjectFile::getRelocations(const coff_section *Sec) const { - const coff_relocation *I = getFirstReloc(Sec, Data, base()); - const coff_relocation *E = I; - if (I) - E += getNumberOfRelocations(Sec, Data, base()); - return make_range(I, E); + return {getFirstReloc(Sec, Data, base()), + getNumberOfRelocations(Sec, Data, base())}; } #define LLVM_COFF_SWITCH_RELOC_TYPE_NAME(reloc_type) \ |