[lld] r290164 - Remove `Compressed` member from InputSectionData.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 19 21:47:56 PST 2016


Author: ruiu
Date: Mon Dec 19 23:47:55 2016
New Revision: 290164

URL: http://llvm.org/viewvc/llvm-project?rev=290164&view=rev
Log:
Remove `Compressed` member from InputSectionData.

This value is used only once, and we can compute a value.
So we don't need to save it.

Modified:
    lld/trunk/ELF/Driver.cpp
    lld/trunk/ELF/InputSection.cpp
    lld/trunk/ELF/InputSection.h

Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=290164&r1=290163&r2=290164&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Mon Dec 19 23:47:55 2016
@@ -827,7 +827,7 @@ template <class ELFT> void LinkerDriver:
           [](InputSectionBase<ELFT> *S) {
             if (!S->Live)
               return;
-            if (S->Compressed)
+            if (S->isCompressed())
               S->uncompress();
             if (auto *MS = dyn_cast<MergeInputSection<ELFT>>(S))
               MS->splitIntoPieces();

Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=290164&r1=290163&r2=290164&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Mon Dec 19 23:47:55 2016
@@ -46,13 +46,6 @@ static ArrayRef<uint8_t> getSectionConte
   return check(File->getObj().getSectionContents(Hdr));
 }
 
-// ELF supports ZLIB-compressed section. Returns true if the section
-// is compressed.
-template <class ELFT>
-static bool isCompressed(typename ELFT::uint Flags, StringRef Name) {
-  return (Flags & SHF_COMPRESSED) || Name.startswith(".zdebug");
-}
-
 template <class ELFT>
 InputSectionBase<ELFT>::InputSectionBase(elf::ObjectFile<ELFT> *File,
                                          uintX_t Flags, uint32_t Type,
@@ -60,7 +53,7 @@ InputSectionBase<ELFT>::InputSectionBase
                                          uint32_t Info, uintX_t Addralign,
                                          ArrayRef<uint8_t> Data, StringRef Name,
                                          Kind SectionKind)
-    : InputSectionData(SectionKind, Name, Data, isCompressed<ELFT>(Flags, Name),
+    : InputSectionData(SectionKind, Name, Data,
                        !Config->GcSections || !(Flags & SHF_ALLOC)),
       File(File), Flags(Flags), Entsize(Entsize), Type(Type), Link(Link),
       Info(Info), Repl(this) {
@@ -135,6 +128,10 @@ typename ELFT::uint InputSectionBase<ELF
   llvm_unreachable("invalid section kind");
 }
 
+template <class ELFT> bool InputSectionBase<ELFT>::isCompressed() const {
+  return (Flags & SHF_COMPRESSED) || Name.startswith(".zdebug");
+}
+
 // Returns compressed data and its size when uncompressed.
 template <class ELFT>
 std::pair<ArrayRef<uint8_t>, uint64_t>

Modified: lld/trunk/ELF/InputSection.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.h?rev=290164&r1=290163&r2=290164&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.h (original)
+++ lld/trunk/ELF/InputSection.h Mon Dec 19 23:47:55 2016
@@ -45,9 +45,9 @@ public:
   // The garbage collector sets sections' Live bits.
   // If GC is disabled, all sections are considered live by default.
   InputSectionData(Kind SectionKind, StringRef Name, ArrayRef<uint8_t> Data,
-                   bool Compressed, bool Live)
-      : SectionKind(SectionKind), Live(Live), Assigned(false),
-        Compressed(Compressed), Name(Name), Data(Data) {}
+                   bool Live)
+      : SectionKind(SectionKind), Live(Live), Assigned(false), Name(Name),
+        Data(Data) {}
 
 private:
   unsigned SectionKind : 3;
@@ -57,7 +57,6 @@ public:
 
   unsigned Live : 1;       // for garbage collection
   unsigned Assigned : 1;   // for linker script
-  unsigned Compressed : 1; // true if section data is compressed
   uint32_t Alignment;
   StringRef Name;
   ArrayRef<uint8_t> Data;
@@ -94,8 +93,7 @@ public:
   uint32_t Info;
 
   InputSectionBase()
-      : InputSectionData(Regular, "", ArrayRef<uint8_t>(), false, false),
-        Repl(this) {
+      : InputSectionData(Regular, "", ArrayRef<uint8_t>(), false), Repl(this) {
     NumRelocations = 0;
     AreRelocsRela = false;
   }
@@ -140,6 +138,9 @@ public:
   // section.
   uintX_t getOffset(uintX_t Offset) const;
 
+  // ELF supports ZLIB-compressed section.
+  // Returns true if the section is compressed.
+  bool isCompressed() const;
   void uncompress();
 
   // Returns a source location string. Used to construct an error message.




More information about the llvm-commits mailing list