[PATCH] D13950: ELF2: Implement --gc-sections.
Rafael EspĂndola via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 21 14:34:57 PDT 2015
I am also getting a test failure:
Command Output (stderr):
--
<stdin>:178:2: error: GC-NOT: string occurred!
Name: x (3)
^
/home/espindola/llvm/lld/test/elf2/gc-sections.s:24:11: note: GC-NOT:
pattern specified here
# GC-NOT: Name: x
On 21 October 2015 at 17:33, Rafael EspĂndola
<rafael.espindola at gmail.com> wrote:
> Just applied the patch locally to review it. There are a few
> formatting issues. Please git-clang-format.
>
> On 21 October 2015 at 13:30, Rui Ueyama <ruiu at google.com> wrote:
>> ruiu created this revision.
>> ruiu added a reviewer: rafael.
>> ruiu added a subscriber: llvm-commits.
>>
>> Section garbage collection is a feature to remove unused sections
>> from outputs. Unused sections are sections that cannot be reachable
>> from known GC-root symbols or sections. Naturally the feature is
>> implemented as a mark-sweep garbage collector.
>>
>> In this patch, I added Live bit to InputSectionBase. If and only
>> if Live bit is on, the section will be written to the output.
>> Starting from GC-root symbols or sections, a new function, markLive(),
>> visits all reachable sections and sets their Live bits. Writer then
>> ignores sections whose Live bit is off, so that such sections are
>> excluded from the output.
>>
>> This change has small negative impact on performance. The time to
>> link Clang changes from 0.356s to 0.386s, or +8%.
>>
>> It reduces Clang size from 57,764,984 bytes to 55,296,600 bytes.
>> That is 4.3% reduction.
>>
>>
>> http://reviews.llvm.org/D13950
>>
>> Files:
>> ELF/CMakeLists.txt
>> ELF/Config.h
>> ELF/Driver.cpp
>> ELF/InputFiles.cpp
>> ELF/InputFiles.h
>> ELF/InputSection.h
>> ELF/MarkLive.cpp
>> ELF/Options.td
>> ELF/OutputSections.cpp
>> ELF/SymbolTable.h
>> ELF/Symbols.h
>> ELF/Writer.cpp
>> ELF/Writer.h
>> test/elf2/gc-sections.s
>>
More information about the llvm-commits
mailing list