[lld] r245863 - Read the alignment only when used.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 12:28:31 PDT 2015


Author: rafael
Date: Mon Aug 24 14:28:31 2015
New Revision: 245863

URL: http://llvm.org/viewvc/llvm-project?rev=245863&view=rev
Log:
Read the alignment only when used.

The rest of the header was already read lazily, no point in having align be
special.

Modified:
    lld/trunk/ELF/Chunks.cpp
    lld/trunk/ELF/Chunks.h

Modified: lld/trunk/ELF/Chunks.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Chunks.cpp?rev=245863&r1=245862&r2=245863&view=diff
==============================================================================
--- lld/trunk/ELF/Chunks.cpp (original)
+++ lld/trunk/ELF/Chunks.cpp Mon Aug 24 14:28:31 2015
@@ -20,7 +20,6 @@ template <class ELFT>
 SectionChunk<ELFT>::SectionChunk(object::ELFFile<ELFT> *Obj,
                                  const Elf_Shdr *Header)
     : Obj(Obj), Header(Header) {
-  Align = Header->sh_addralign;
 }
 
 template <class ELFT> void SectionChunk<ELFT>::writeTo(uint8_t *Buf) {

Modified: lld/trunk/ELF/Chunks.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Chunks.h?rev=245863&r1=245862&r2=245863&view=diff
==============================================================================
--- lld/trunk/ELF/Chunks.h (original)
+++ lld/trunk/ELF/Chunks.h Mon Aug 24 14:28:31 2015
@@ -23,6 +23,7 @@ template <class ELFT> class SectionChunk
   typedef llvm::object::Elf_Shdr_Impl<ELFT> Elf_Shdr;
   typedef llvm::object::Elf_Rel_Impl<ELFT, true> Elf_Rela;
   typedef llvm::object::Elf_Rel_Impl<ELFT, false> Elf_Rel;
+  typedef typename llvm::object::ELFFile<ELFT>::uintX_t uintX_t;
 
 public:
   SectionChunk(llvm::object::ELFFile<ELFT> *Obj, const Elf_Shdr *Header);
@@ -39,7 +40,7 @@ public:
 
   // The writer sets and uses the addresses.
   uint64_t getOutputSectionOff() { return OutputSectionOff; }
-  uint32_t getAlign() { return Align; }
+  uintX_t getAlign() { return Header->sh_addralign; }
   void setOutputSectionOff(uint64_t V) { OutputSectionOff = V; }
 
 private:
@@ -47,9 +48,6 @@ private:
   // to. The writer sets a value.
   uint64_t OutputSectionOff = 0;
 
-  // The alignment of this chunk. The writer uses the value.
-  uint32_t Align = 1;
-
   // A file this chunk was created from.
   llvm::object::ELFFile<ELFT> *Obj;
 




More information about the llvm-commits mailing list