1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/lib
Teresa Johnson 960ebc706f [ThinLTO] Emit individual index files for distributed backends
Summary:
When launching ThinLTO backends in a distributed build (currently
supported in gold via the thinlto-index-only plugin option), emit
an individual index file for each backend process as described here:
http://lists.llvm.org/pipermail/llvm-dev/2016-April/098272.html

The individual index file encodes the summary and module information
required for implementing the importing/exporting decisions made
for a given module in the thin link step.
This is in place of the current mechanism that uses the combined index
to make importing decisions in each back end independently. It is an
enabler for doing global summary based optimizations in the thin link
step (which will be recorded in the individual index files), and reduces
the size of the index that must be sent to each backend process, and
the amount of work to scan it in the backends.

Rather than create entirely new ModuleSummaryIndex structures (and all
the included unique_ptrs) for each backend index file, a map is created
to record all of the GUID and summary pointers needed for a particular
index file. The IndexBitcodeWriter walks this map instead of the full
index (hiding the details of managing the appropriate summary iteration
in a new iterator subclass). This is more efficient than walking the
entire combined index and filtering out just the needed summaries during
each backend bitcode index write.

Depends on D19481.

Reviewers: joker.eph

Subscribers: llvm-commits, joker.eph

Differential Revision: http://reviews.llvm.org/D19556

llvm-svn: 268627
2016-05-05 13:44:56 +00:00
..
Analysis [PM] Port Branch Probability Analysis pass to the new pass manager. 2016-05-05 02:59:57 +00:00
AsmParser IR: Enable debug info type ODR uniquing for forward decls 2016-04-19 18:00:19 +00:00
Bitcode [ThinLTO] Emit individual index files for distributed backends 2016-05-05 13:44:56 +00:00
CodeGen clean up; NFCI 2016-05-04 22:39:36 +00:00
DebugInfo [codeview] Move dumper into lib/DebugInfo/CodeView 2016-05-05 00:34:33 +00:00
ExecutionEngine Thread Expected<...> up from libObject’s getType() for symbols to allow llvm-objdump to produce a good error message. 2016-05-02 20:28:12 +00:00
Fuzzer [libFuzzer] print stats after running individual inputs 2016-05-04 20:44:50 +00:00
IR "Reapply r268521 "[InstCombine] Canonicalize icmp instructions based on dominating conditions."" 2016-05-04 21:32:14 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LibDriver LibDriver: Silently do nothing when provided no inputs. 2016-04-13 19:36:04 +00:00
LineEditor Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes. 2016-03-28 17:40:08 +00:00
Linker Fix recursive -only-needed. 2016-04-21 14:56:33 +00:00
LTO [ThinLTO] Emit individual index files for distributed backends 2016-05-05 13:44:56 +00:00
MC [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
Object Produce another specific error message for a malformed Mach-O file when a load 2016-05-03 23:13:50 +00:00
ObjectYAML [lanai] Add Lanai backend. 2016-03-28 13:09:54 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
Passes [PM] Port Branch Probability Analysis pass to the new pass manager. 2016-05-05 02:59:57 +00:00
ProfileData [Coverage] Combine counts of expansion regions if there are no code regions for the same area. 2016-05-05 09:39:45 +00:00
Support [Support] Creation of minidump after compiler crash on Windows 2016-05-04 16:56:51 +00:00
TableGen [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
Target [X86] Extend some Linux special cases to cover kFreeBSD. 2016-05-05 11:35:51 +00:00
Transforms [ThinLTO] Emit individual index files for distributed backends 2016-05-05 13:44:56 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
LLVMBuild.txt Add LLVMBuild for ObjectYAML. 2016-03-01 21:29:33 +00:00