llvm-project/llvm/lib/Object
Teresa Johnson 76a1c1d0ba [ThinLTO] Support for reference graph in per-module and combined summary.
Summary:
This patch adds support for including a full reference graph including
call graph edges and other GV references in the summary.

The reference graph edges can be used to make importing decisions
without materializing any source modules, can be used in the plugin
to make file staging decisions for distributed build systems, and is
expected to have other uses.

The call graph edges are recorded in each function summary in the
bitcode via a list of <CalleeValueIds, StaticCount> tuples when no PGO
data exists, or <CalleeValueId, StaticCount, ProfileCount> pairs when
there is PGO, where the ValueId can be mapped to the function GUID via
the ValueSymbolTable. In the function index in memory, the call graph
edges reference the target via the CalleeGUID instead of the
CalleeValueId.

The reference graph edges are recorded in each summary record with a
list of referenced value IDs, which can be mapped to value GUID via the
ValueSymbolTable.

Addtionally, a new summary record type is added to record references
from global variable initializers. A number of bitcode records and data
structures have been renamed to reflect the newly expanded scope of the
summary beyond functions. More cleanup will follow.

Reviewers: joker.eph, davidxl

Subscribers: joker.eph, llvm-commits

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

llvm-svn: 263275
2016-03-11 18:52:24 +00:00
..
Archive.cpp Simplify users of StringRef::{l,r}trim (NFC) 2016-02-16 02:06:01 +00:00
ArchiveWriter.cpp Handle archives with paths in the names. 2015-12-18 16:07:17 +00:00
Binary.cpp Object: Handle Mach-O kext bundle files 2015-02-25 22:59:20 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
COFFObjectFile.cpp [Object][COFF] Revert r258665 - It doesn't do what I had intended. 2016-01-25 01:21:45 +00:00
ELF.cpp [lanai] Add ELF enum value and relocations. 2016-03-01 21:21:42 +00:00
ELFObjectFile.cpp [Object, ELF] Don't assert on invalid magic in createELFObjectFile. 2015-06-04 23:14:43 +00:00
Error.cpp Represent the dynamic table itself with a DynRegionInfo. 2016-02-17 16:48:00 +00:00
FunctionIndexObjectFile.cpp [ThinLTO] Support for reference graph in per-module and combined summary. 2016-03-11 18:52:24 +00:00
IRObjectFile.cpp Rename embedded bitcode section in MachO 2016-02-29 19:40:10 +00:00
LLVMBuild.txt Object/LLVMBuild.txt: Sort required_libraries by alphabetical order. 2014-07-14 02:52:08 +00:00
MachOObjectFile.cpp Rename embedded bitcode section in MachO 2016-02-29 19:40:10 +00:00
MachOUniversal.cpp Use early return NFC. 2015-08-03 00:10:33 +00:00
Object.cpp Convert getSymbolSection to return an ErrorOr. 2015-08-07 23:27:14 +00:00
ObjectFile.cpp Rename embedded bitcode section in MachO 2016-02-29 19:40:10 +00:00
RecordStreamer.cpp Move alignment from MCSectionData to MCSection. 2015-05-21 19:20:38 +00:00
RecordStreamer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SymbolSize.cpp [SymbolSize] Skip sorting by index, just assign by index. 2015-06-29 16:05:00 +00:00
SymbolicFile.cpp Re-apply r246276 - Object: Teach llvm-ar to create symbol table for COFF short import files 2015-08-28 07:40:30 +00:00