| #
385cf288 |
| 26-Mar-2016 |
Mehdi Amini <[email protected]> |
Rename ModuleSummaryIndex::modPathStringEntries() into modulePaths()
It now return the map instead of an iterator.
From: Mehdi Amini <[email protected]> llvm-svn: 264489
|
| #
aae26100 |
| 25-Mar-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Rename edges() to calls() for clarity (NFC)
Helps distinguish from refs() which iterates over non-call references.
llvm-svn: 264445
|
| #
fc811004 |
| 25-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
Revert "Bitcode: Collect all MDString records into a single blob"
This reverts commit r264409 since it failed to bootstrap: http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_build/8302/
Revert "Bitcode: Collect all MDString records into a single blob"
This reverts commit r264409 since it failed to bootstrap: http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_build/8302/
llvm-svn: 264410
show more ...
|
| #
fdbf0a5a |
| 25-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
Bitcode: Collect all MDString records into a single blob
Optimize output of MDStrings in bitcode. This emits them in big blocks (currently 1024) in a pair of records: - BULK_STRING_SIZES: the siz
Bitcode: Collect all MDString records into a single blob
Optimize output of MDStrings in bitcode. This emits them in big blocks (currently 1024) in a pair of records: - BULK_STRING_SIZES: the sizes of the strings in the block, and - BULK_STRING_DATA: a single blob, which is the concatenation of all the strings.
Inspired by Mehdi's similar patch, http://reviews.llvm.org/D18342, this should (a) slightly reduce bitcode size, since there is less record overhead, and (b) greatly improve reading speed, since blobs are super cheap to deserialize.
I needed to add support for blobs to streaming input to get the test suite passing. - StreamingMemoryObject::getPointer reads ahead and returns the address of the blob. - To avoid a possible reallocation of StreamingMemoryObject::Bytes, BitstreamCursor::readRecord needs to move the call to JumpToEnd forward so that getPointer is the last bitstream operation.
llvm-svn: 264409
show more ...
|
| #
68f56243 |
| 25-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
Bitcode: Stop using MODULE_CODE_METADATA_VALUES
The motivation for MODULE_CODE_METADATA_VALUES was to enable an -flto=thin scheme where:
1. First, one function is cherry-picked from a bitcode file
Bitcode: Stop using MODULE_CODE_METADATA_VALUES
The motivation for MODULE_CODE_METADATA_VALUES was to enable an -flto=thin scheme where:
1. First, one function is cherry-picked from a bitcode file. 2. Later, another function is cherry-picked. 3. Later, ... 4. Finally, the metadata needed by all the previous functions is loaded.
This was abandoned in favour of:
1. Calculate the superset of functions needed from a Module. 2. Link all functions at once.
Delayed metadata reading no longer serves a purpose. It also adds a few complication, since we can't count on metadata being properly parsed when exiting the BitcodeReader. After discussing with Teresa, we agreed to remove it.
The code that depended on this was removed/updated in r264326.
llvm-svn: 264378
show more ...
|
| #
a5e25a55 |
| 24-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
BitcodeWriter: Move abbreviation for GenericDINode; almost NFC
Simplify ValueEnumerator and WriteModuleMetadata by shifting the logic for the METADATA_GENERIC_DEBUG abbreviation into WriteGenericDIN
BitcodeWriter: Move abbreviation for GenericDINode; almost NFC
Simplify ValueEnumerator and WriteModuleMetadata by shifting the logic for the METADATA_GENERIC_DEBUG abbreviation into WriteGenericDINode. (This is just like r264302, but for GenericDINode.)
The only change is that the abbreviation is emitted later in the bitcode, just before the first `GenericDINode` record. This shouldn't be observable though.
llvm-svn: 264303
show more ...
|
| #
625fda27 |
| 24-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
BitcodeWriter: Move abbreviation for DILocation; almost NFC
Simplify ValueEnumerator and WriteModuleMetadata by shifting the logic for the METADATA_LOCATION abbreviation into WriteDILocation.
The o
BitcodeWriter: Move abbreviation for DILocation; almost NFC
Simplify ValueEnumerator and WriteModuleMetadata by shifting the logic for the METADATA_LOCATION abbreviation into WriteDILocation.
The only change is that the abbreviation is emitted later in the bitcode, just before the first `DILocation` record. This shouldn't be observable though.
llvm-svn: 264302
show more ...
|
| #
f8ecdf52 |
| 24-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
BitcodeWriter: Split out named metadata; almost NFC
Split writeNamedMetadata out of WriteModuleMetadata to write named metadata, and createNamedMetadataAbbrev for the abbreviation.
There should be
BitcodeWriter: Split out named metadata; almost NFC
Split writeNamedMetadata out of WriteModuleMetadata to write named metadata, and createNamedMetadataAbbrev for the abbreviation.
There should be no effective functionality change, although the layout of the bitcode will change. Previously, the abbreviation was emitted at the top of the block, but now it is delayed until immediately before the named metadata records are emitted.
llvm-svn: 264301
show more ...
|
| #
0b7243ee |
| 24-Mar-2016 |
Duncan P. N. Exon Smith <[email protected]> |
Bitcode: Module* -> Module&, NFC
llvm-svn: 264299
|
| #
12b79aa0 |
| 23-Mar-2016 |
Easwaran Raman <[email protected]> |
Add getBlockProfileCount method to BlockFrequencyInfo
Differential Revision: http://reviews.llvm.org/D18233
llvm-svn: 264179
|
| #
1396809b |
| 15-Mar-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Record all global variable defs in the summary
Record all variable defs with a summary record to aid in building a complete reference graph and locating constant variable defs to import.
[ThinLTO] Record all global variable defs in the summary
Record all variable defs with a summary record to aid in building a complete reference graph and locating constant variable defs to import.
llvm-svn: 263576
show more ...
|
| #
2794f715 |
| 15-Mar-2016 |
Teresa Johnson <[email protected]> |
BitcodeWriter dyn_cast cleanup for r263275 (NFC)
Address review suggestions from dblaikie: change a few dyn_cast to cast and fold a cast into if condition.
llvm-svn: 263526
|
| #
26ab5772 |
| 15-Mar-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Renaming of function index to module summary index (NFC)
(Resubmitting after fixing missing file issue)
With the changes in r263275, there are now more than just functions in the summary.
[ThinLTO] Renaming of function index to module summary index (NFC)
(Resubmitting after fixing missing file issue)
With the changes in r263275, there are now more than just functions in the summary. Completed the renaming of data structures (started in r263275) to reflect the wider scope. In particular, changed the FunctionIndex* data structures to ModuleIndex*, and renamed related variables and comments. Also renamed the files to reflect the changes.
A companion clang patch will immediately succeed this patch to reflect this renaming.
llvm-svn: 263513
show more ...
|
| #
cec0cae3 |
| 14-Mar-2016 |
Teresa Johnson <[email protected]> |
Revert "[ThinLTO] Renaming of function index to module summary index (NFC)"
This reverts commit r263490. Missed a file.
llvm-svn: 263493
|
| #
892920b3 |
| 14-Mar-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Renaming of function index to module summary index (NFC)
With the changes in r263275, there are now more than just functions in the summary. Completed the renaming of data structures (star
[ThinLTO] Renaming of function index to module summary index (NFC)
With the changes in r263275, there are now more than just functions in the summary. Completed the renaming of data structures (started in r263275) to reflect the wider scope. In particular, changed the FunctionIndex* data structures to ModuleIndex*, and renamed related variables and comments. Also renamed the files to reflect the changes.
A companion clang patch will immediately succeed this patch to reflect this renaming.
llvm-svn: 263490
show more ...
|
| #
90a021fb |
| 13-Mar-2016 |
David Majnemer <[email protected]> |
[Bitcode] Make writeComdats less strange
It had a weird artificial limitation on the write side: the comdat name couldn't be bigger than 2**16. However, the reader had no such limitation. Make the
[Bitcode] Make writeComdats less strange
It had a weird artificial limitation on the write side: the comdat name couldn't be bigger than 2**16. However, the reader had no such limitation. Make the reader and the writer agree.
llvm-svn: 263377
show more ...
|
| #
76a1c1d0 |
| 11-Mar-2016 |
Teresa Johnson <[email protected]> |
[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
[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
show more ...
|
|
Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3 |
|
| #
83efea89 |
| 16-Feb-2016 |
Mehdi Amini <[email protected]> |
Bitcode writer: fix a typo, using getName() instead of getSourceFileName()
When emitting the source filename, the encoding of the string was checked against the name instead of the filename.
From:
Bitcode writer: fix a typo, using getName() instead of getSourceFileName()
When emitting the source filename, the encoding of the string was checked against the name instead of the filename.
From: Mehdi Amini <[email protected]> llvm-svn: 261019
show more ...
|
| #
e1164de5 |
| 10-Feb-2016 |
Teresa Johnson <[email protected]> |
Restore "[ThinLTO] Use MD5 hash in function index." with fix
This restores commit r260408, along with a fix for a bot failure.
The bot failure was caused by dereferencing a unique_ptr in the same c
Restore "[ThinLTO] Use MD5 hash in function index." with fix
This restores commit r260408, along with a fix for a bot failure.
The bot failure was caused by dereferencing a unique_ptr in the same call instruction parameter list where it was passed via std::move. Apparently due to luck this was not exposed when I built the compiler with clang, only with gcc.
llvm-svn: 260442
show more ...
|
| #
89f38fb5 |
| 10-Feb-2016 |
Teresa Johnson <[email protected]> |
Revert "[ThinLTO] Use MD5 hash in function index." due to bot failure
This reverts commit r260408. Bot failure that I need to investigate.
llvm-svn: 260412
|
| #
0919a840 |
| 10-Feb-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Use MD5 hash in function index.
Summary: This patch uses the lower 64-bits of the MD5 hash of a function name as a GUID in the function index, instead of storing function names. Any local
[ThinLTO] Use MD5 hash in function index.
Summary: This patch uses the lower 64-bits of the MD5 hash of a function name as a GUID in the function index, instead of storing function names. Any local functions are first given a global name by prepending the original source file name. This is the same naming scheme and GUID used by PGO in the indexed profile format.
This change has a couple of benefits. The primary benefit is size reduction in the combined index file, for example 483.xalancbmk's combined index file was reduced by around 70%. It should also result in memory savings for the index file in memory, as the in-memory map is also indexed by the hash instead of the string.
Second, this enables integration with indirect call promotion, since the indirect call profile targets are recorded using the same global naming convention and hash. This will enable the function importer to easily locate function summaries for indirect call profile targets to enable their import and subsequent promotion.
The original source file name is recorded in the bitcode in a new module-level record for use in the ThinLTO backend pipeline.
Reviewers: davidxl, joker.eph
Subscribers: llvm-commits, joker.eph
Differential Revision: http://reviews.llvm.org/D17028
llvm-svn: 260408
show more ...
|
| #
79d4e2f3 |
| 10-Feb-2016 |
Teresa Johnson <[email protected]> |
Fix VST_CODE_* bitcode id comments (NFC)
llvm-svn: 260382
|
| #
5e22e446 |
| 06-Feb-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Include linkage type in function summary
Summary: Adds the linkage type to both the per-module and combined function summaries, which subsumes the current islocal bit. This will eventually
[ThinLTO] Include linkage type in function summary
Summary: Adds the linkage type to both the per-module and combined function summaries, which subsumes the current islocal bit. This will eventually be used to optimized linkage types based on global summary-based analysis.
Reviewers: joker.eph
Subscribers: joker.eph, davidxl, llvm-commits
Differential Revision: http://reviews.llvm.org/D16943
llvm-svn: 259993
show more ...
|
|
Revision tags: llvmorg-3.8.0-rc2 |
|
| #
2d9da4dc |
| 01-Feb-2016 |
Teresa Johnson <[email protected]> |
[ThinLTO] Ensure function summary output order is stable
Iterate over the function list instead of a DenseMap of Function pointers when emitting the function summary into the module.
This fixes PR2
[ThinLTO] Ensure function summary output order is stable
Iterate over the function list instead of a DenseMap of Function pointers when emitting the function summary into the module.
This fixes PR26419.
llvm-svn: 259398
show more ...
|
| #
4f472a88 |
| 29-Jan-2016 |
Akira Hatanaka <[email protected]> |
[llvm-bcanalyzer] Dump bitcode wrapper header
This patch enables llvm-bcanalyzer to print the bitcode wrapper header if the file has one, which is needed to test the changes made in r258627 (bitcode
[llvm-bcanalyzer] Dump bitcode wrapper header
This patch enables llvm-bcanalyzer to print the bitcode wrapper header if the file has one, which is needed to test the changes made in r258627 (bitcode-wrapper-header-armv7m.ll is the test case for r258627).
Differential Revision: http://reviews.llvm.org/D16642
llvm-svn: 259162
show more ...
|