llvm-project/lld/ELF
Rui Ueyama 9dedfb1fa8 Change how we manage groups in ICF.
Previously, on each iteration in ICF, we scan the entire vector of
input sections to find boundaries of groups having the same ID.

This patch changes the algorithm so that we now have a vector of ranges.
Each range contains a starting index and an ending index of the group.
So we no longer have to search boundaries on each iteration.

Performance-wise, this seems neutral. Instead of searching boundaries,
we now have to maintain ranges. But I think this is more readable
than the previous implementation.

Moreover, this makes easy to parallelize the main loop of ICF,
which I'll do in a follow-up patch.

llvm-svn: 288228
2016-11-30 01:50:03 +00:00
..
CMakeLists.txt Remove a file that is too short to be an independent file. 2016-11-19 23:26:41 +00:00
Config.h [ELF] - Implemented -N (-omagic) command line option. 2016-11-29 09:43:51 +00:00
Driver.cpp [ELF][MIPS] Restore Config->Threads for MIPS targets 2016-11-29 10:24:00 +00:00
Driver.h Remove a file that is too short to be an independent file. 2016-11-19 23:26:41 +00:00
DriverUtils.cpp [ELF] Better error reporting for linker scripts 2016-11-21 15:49:56 +00:00
EhFrame.cpp Move getLocation from Relocations.cpp to InputSection.cpp. 2016-11-25 18:51:53 +00:00
EhFrame.h [ELF] Print error location in .eh_frame parser 2016-11-23 09:45:17 +00:00
Error.cpp Make getColorDiagnostics return a boolean value instead of an enum. 2016-11-26 15:10:01 +00:00
Error.h Update comment. 2016-11-24 01:44:21 +00:00
GdbIndex.cpp Define toString() as a generic function to get a string for error message. 2016-11-23 18:07:33 +00:00
GdbIndex.h [ELF] - Partial support of --gdb-index command line option (Part 1). 2016-10-20 09:19:48 +00:00
ICF.cpp Change how we manage groups in ICF. 2016-11-30 01:50:03 +00:00
ICF.h Do not pass Symtab to markLive/doICF since Symtab is globally accessible. 2016-05-02 19:30:42 +00:00
InputFiles.cpp Use StringRefZ explicitly instead of const char *. 2016-11-29 19:11:39 +00:00
InputFiles.h Move typedefs inside a class definition. 2016-11-25 18:51:56 +00:00
InputSection.cpp [ELF] - Disable emiting multiple output sections when merging is disabled. 2016-11-29 16:11:09 +00:00
InputSection.h Change return types of split{Non,}Strings. 2016-11-26 15:15:11 +00:00
LTO.cpp Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
LTO.h [ELF] Be compliant with LLVM and rename Lto into LTO. NFCI. 2016-11-26 05:37:04 +00:00
LinkerScript.cpp [ELF] - Add support of proccessing of the rest allocatable synthetic sections from linkerscript. 2016-11-29 16:05:27 +00:00
LinkerScript.h [ELF] Print file:line for 'undefined section' errors 2016-11-28 09:58:04 +00:00
MarkLive.cpp Parse relocations only once. 2016-11-10 14:53:24 +00:00
Memory.cpp Replace GAlloc with a template function. 2016-11-01 21:06:40 +00:00
Memory.h [ELF] - Fix mistype. NFC. 2016-11-08 15:26:21 +00:00
Mips.cpp [ELF][MIPS] N32 ABI support 2016-11-05 22:58:01 +00:00
Options.td [ELF] - Implemented -N (-omagic) command line option. 2016-11-29 09:43:51 +00:00
OutputSections.cpp [ELF] Refactor target error messages 2016-11-29 08:05:44 +00:00
OutputSections.h [ELF] Refactor target error messages 2016-11-29 08:05:44 +00:00
README.md Update the documents of the new LLD. 2016-03-12 06:06:40 +00:00
Relocations.cpp [ELF] Add support for static TLS to ARM 2016-11-29 16:23:50 +00:00
Relocations.h Move getLocation from Relocations.cpp to InputSection.cpp. 2016-11-25 18:51:53 +00:00
ScriptParser.cpp [ELF] Print file:line for 'undefined section' errors 2016-11-28 09:58:04 +00:00
ScriptParser.h [ELF] Print file:line for 'undefined section' errors 2016-11-28 09:58:04 +00:00
Strings.cpp Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
Strings.h Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
SymbolTable.cpp Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
SymbolTable.h Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
Symbols.cpp Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
Symbols.h Introduce StringRefZ class to represent null-terminated strings. 2016-11-29 18:05:04 +00:00
SyntheticSections.cpp [ELF] - Add support of proccessing of the rest allocatable synthetic sections from linkerscript. 2016-11-29 16:05:27 +00:00
SyntheticSections.h [ELF] - Add support of proccessing of the rest allocatable synthetic sections from linkerscript. 2016-11-29 16:05:27 +00:00
Target.cpp [ELF] Add support for static TLS to ARM 2016-11-29 16:23:50 +00:00
Target.h [ELF] Refactor getDynRel to print error location 2016-11-25 08:56:36 +00:00
Thunks.cpp Split Header into individual fields. 2016-11-09 01:42:41 +00:00
Thunks.h Attempt to fix buildbots. 2016-07-09 23:02:37 +00:00
Writer.cpp [ELF] - Add support of proccessing of the rest allocatable synthetic sections from linkerscript. 2016-11-29 16:05:27 +00:00
Writer.h [ELF] Refactor target error messages 2016-11-29 08:05:44 +00:00

README.md

See docs/NewLLD.rst