#
bb1b2d09 |
| 16-Aug-2017 |
Eugene Zelenko <eugene.zelenko@gmail.com> |
[Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
llvm-svn: 311048
|
Revision tags: llvmorg-5.0.0-rc2 |
|
#
75da10d1 |
| 04-Aug-2017 |
Charles Saternos <charles.saternos@gmail.com> |
[ThinLTO] Add FunctionAttrs to ThinLTO index
Adds function attributes to index: ReadNone, ReadOnly, NoRecurse, NoAlias. This attributes will be used for future ThinLTO optimizations that will propag
[ThinLTO] Add FunctionAttrs to ThinLTO index
Adds function attributes to index: ReadNone, ReadOnly, NoRecurse, NoAlias. This attributes will be used for future ThinLTO optimizations that will propagate function attributes across modules.
llvm-svn: 310061
show more ...
|
Revision tags: llvmorg-5.0.0-rc1 |
|
#
64c46574 |
| 07-Jul-2017 |
Dehao Chen <dehao@google.com> |
Increase the import-threshold for crtical functions.
Summary: For interative sample-pgo, if a hot call site is inlined in the profiling binary, we should inline it in before profile annotation in th
Increase the import-threshold for crtical functions.
Summary: For interative sample-pgo, if a hot call site is inlined in the profiling binary, we should inline it in before profile annotation in the backend. Before that, the compile phase first collects all GUIDs that needs to be imported and creates virtual "hot" call edge in the summary. However, "hot" is not good enough to guarantee the callsites get inlined. This patch introduces "critical" call edge, and assign much higher importing threshold for those edges.
Reviewers: tejohnson
Reviewed By: tejohnson
Subscribers: sanjoy, mehdi_amini, llvm-commits, eraman
Differential Revision: https://reviews.llvm.org/D35096
llvm-svn: 307439
show more ...
|
Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3 |
|
#
e357fbd2 |
| 08-Jun-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
Write summaries for merged modules when splitting modules for ThinLTO.
This is to prepare to allow for dead stripping of globals in the merged modules.
Differential Revision: https://reviews.llvm.o
Write summaries for merged modules when splitting modules for ThinLTO.
This is to prepare to allow for dead stripping of globals in the merged modules.
Differential Revision: https://reviews.llvm.org/D33921
llvm-svn: 305027
show more ...
|
#
56584bbf |
| 01-Jun-2017 |
Evgeniy Stepanov <eugeni.stepanov@gmail.com> |
(NFC) Track global summary liveness in GVFlags.
Replace GVFlags::LiveRoot with GVFlags::Live and use that instead of all the DeadSymbols sets. This is refactoring in order to make liveness informati
(NFC) Track global summary liveness in GVFlags.
Replace GVFlags::LiveRoot with GVFlags::Live and use that instead of all the DeadSymbols sets. This is refactoring in order to make liveness information available in the RegularLTO pipeline.
llvm-svn: 304466
show more ...
|
Revision tags: llvmorg-4.0.1-rc2 |
|
#
94624aca |
| 10-May-2017 |
Teresa Johnson <tejohnson@google.com> |
Ensure non-null ProfileSummaryInfo passed to ModuleSummaryIndex builder
This fixes a ubsan bot failure after r302597, which made getProfileCount non-static, but ended up invoking it on a null Profil
Ensure non-null ProfileSummaryInfo passed to ModuleSummaryIndex builder
This fixes a ubsan bot failure after r302597, which made getProfileCount non-static, but ended up invoking it on a null ProfileSummaryInfo object in some cases from buildModuleSummaryIndex.
Most testing passed because the non-static getProfileCount currently doesn't access any member variables, but I found this when testing a follow on patch (D32877) that adds a member variable access.
llvm-svn: 302705
show more ...
|
#
f5f91600 |
| 09-May-2017 |
Easwaran Raman <eraman@google.com> |
[ProfileSummary] Make getProfileCount a non-static member function.
This change is required because the notion of count is different for sample profiling and getProfileCount will need to determine t
[ProfileSummary] Make getProfileCount a non-static member function.
This change is required because the notion of count is different for sample profiling and getProfileCount will need to determine the underlying profile type.
Differential revision: https://reviews.llvm.org/D33012
llvm-svn: 302597
show more ...
|
#
9667b91b |
| 04-May-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI." with a fix for the clang backend.
llvm-svn: 302176
|
#
f6039f25 |
| 04-May-2017 |
Eric Liu <ioeric@google.com> |
Revert "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI."
This reverts commit r302108. This causes crash in clang bootstrap with LTO.
Contacted the auther in the or
Revert "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI."
This reverts commit r302108. This causes crash in clang bootstrap with LTO.
Contacted the auther in the original commit.
llvm-svn: 302140
show more ...
|
#
5f85a9de |
| 04-May-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI.
When profiling a no-op incremental link of Chromium I found that the functions computeImportForFunction and computeD
IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI.
When profiling a no-op incremental link of Chromium I found that the functions computeImportForFunction and computeDeadSymbols were consuming roughly 10% of the profile. The goal of this change is to improve the performance of those functions by changing the map lookups that they were previously doing into pointer dereferences.
This is achieved by changing the ValueInfo data structure to be a pointer to an element of the global value map owned by ModuleSummaryIndex, and changing reference lists in the GlobalValueSummary to hold ValueInfos instead of GUIDs. This means that a ValueInfo will take a client directly to the summary list for a given GUID.
Differential Revision: https://reviews.llvm.org/D32471
llvm-svn: 302108
show more ...
|
#
e95901ca |
| 03-May-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
Revert r295861, "[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals."
We should always expect values to be named before running the module summary analysis (see NameAnonGlobals pas
Revert r295861, "[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals."
We should always expect values to be named before running the module summary analysis (see NameAnonGlobals pass), so it's fine if we crash in that case.
llvm-svn: 301991
show more ...
|
Revision tags: llvmorg-4.0.1-rc1 |
|
#
61781ac2 |
| 31-Mar-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
ModuleSummaryAnalysis: Use a more precise #include. NFC.
llvm-svn: 299142
|
#
190f17ca |
| 21-Mar-2017 |
Dehao Chen <dehao@google.com> |
Use ProfileSummary:getProfileCount to get ScaledCount for ModuleSummary
Summary: ModuleSummary should use the standard interface of ProfileSummary::getProfileCount.
Reviewers: eraman, tejohnson
Re
Use ProfileSummary:getProfileCount to get ScaledCount for ModuleSummary
Summary: ModuleSummary should use the standard interface of ProfileSummary::getProfileCount.
Reviewers: eraman, tejohnson
Reviewed By: tejohnson
Subscribers: tejohnson, mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D31154
llvm-svn: 298404
show more ...
|
#
d8204472 |
| 09-Mar-2017 |
Teresa Johnson <tejohnson@google.com> |
Perform symbol binding for .symver versioned symbols
Summary: In a .symver assembler directive like: .symver name, name2@@nodename "name2@@nodename" should get the same symbol binding as "name".
Wh
Perform symbol binding for .symver versioned symbols
Summary: In a .symver assembler directive like: .symver name, name2@@nodename "name2@@nodename" should get the same symbol binding as "name".
While the ELF object writer is updating the symbol binding for .symver aliases before emitting the object file, not doing so when the module inline assembly is handled by the RecordStreamer is causing the wrong behavior in *LTO mode.
E.g. when "name" is global, "name2@@nodename" must also be marked as global. Otherwise, the symbol is skipped when iterating over the LTO InputFile symbols (InputFile::Symbol::shouldSkip). So, for example, when performing any *LTO via the gold-plugin, the versioned symbol definition is not recorded by the plugin and passed back to the linker. If the object was in an archive, and there were no other symbols needed from that object, the object would not be included in the final link and references to the versioned symbol are undefined.
The llvm-lto2 tests added will give an error about an unused symbol resolution without the fix.
Reviewers: rafael, pcc
Reviewed By: pcc
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D30485
llvm-svn: 297332
show more ...
|
Revision tags: llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3 |
|
#
a60cdd38 |
| 28-Feb-2017 |
Dehao Chen <dehao@google.com> |
Add function importing info from samplepgo profile to the module summary.
Summary: For SamplePGO, the profile may contain cross-module inline stacks. As we need to make sure the profile annotation h
Add function importing info from samplepgo profile to the module summary.
Summary: For SamplePGO, the profile may contain cross-module inline stacks. As we need to make sure the profile annotation happens when all the hot inline stacks are expanded, we need to pass this info to the module importer so that it can import proper functions if necessary. This patch implemented this feature by emitting cross-module targets as part of function entry metadata. In the module-summary phase, the metadata is used to build call edges that points to functions need to be imported.
Reviewers: mehdi_amini, tejohnson
Reviewed By: tejohnson
Subscribers: davidxl, llvm-commits
Differential Revision: https://reviews.llvm.org/D30053
llvm-svn: 296498
show more ...
|
#
e122d688 |
| 22-Feb-2017 |
Davide Italiano <davide@freebsd.org> |
[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals.
Instead, just be conservative as these are unfrequent enough. Thanks to Peter Collingbourne for the discussion about this on IRC
[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals.
Instead, just be conservative as these are unfrequent enough. Thanks to Peter Collingbourne for the discussion about this on IRC.
llvm-svn: 295861
show more ...
|
#
be9ffaac |
| 10-Feb-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
IR: Function summary extensions for whole-program devirtualization pass.
The summary information includes all uses of llvm.type.test and llvm.type.checked.load intrinsics that can be used to devirtu
IR: Function summary extensions for whole-program devirtualization pass.
The summary information includes all uses of llvm.type.test and llvm.type.checked.load intrinsics that can be used to devirtualize calls, including any constant arguments for virtual constant propagation.
Differential Revision: https://reviews.llvm.org/D29734
llvm-svn: 294795
show more ...
|
Revision tags: llvmorg-4.0.0-rc2 |
|
#
1380edf4 |
| 03-Feb-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
Revert "[ThinLTO] Add an auto-hide feature"
This reverts commit r293970.
After more discussion, this belongs to the linker side and there is no added value to do it at this level.
llvm-svn: 293993
|
#
b0a8ff71 |
| 03-Feb-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
[ThinLTO] Add an auto-hide feature
When a symbol is not exported outside of the DSO, it is can be hidden. Usually we try to internalize as much as possible, but it is not always possible, for instan
[ThinLTO] Add an auto-hide feature
When a symbol is not exported outside of the DSO, it is can be hidden. Usually we try to internalize as much as possible, but it is not always possible, for instance a symbol can be referenced outside of the LTO unit, or there can be cross-module reference in ThinLTO.
This is a recommit of r293912 after fixing build failures, and a recommit of r293918 after fixing LLD tests.
Differential Revision: https://reviews.llvm.org/D28978
llvm-svn: 293970
show more ...
|
#
21c89dc9 |
| 02-Feb-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
Revert "[ThinLTO] Add an auto-hide feature"
This reverts commit r293918, one lld test does not pass.
llvm-svn: 293961
|
#
97624fb1 |
| 02-Feb-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
[ThinLTO] Add an auto-hide feature
When a symbol is not exported outside of the DSO, it is can be hidden. Usually we try to internalize as much as possible, but it is not always possible, for instan
[ThinLTO] Add an auto-hide feature
When a symbol is not exported outside of the DSO, it is can be hidden. Usually we try to internalize as much as possible, but it is not always possible, for instance a symbol can be referenced outside of the LTO unit, or there can be cross-module reference in ThinLTO.
This is a recommit of r293912 after fixing build failures.
Differential Revision: https://reviews.llvm.org/D28978
llvm-svn: 293918
show more ...
|
#
827600de |
| 02-Feb-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
Revert "[ThinLTO] Add an auto-hide feature"
This reverts r293912, bots are broken.
llvm-svn: 293914
|
#
dc5a7444 |
| 02-Feb-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
[ThinLTO] Add an auto-hide feature
When a symbol is not exported outside of the DSO, it is can be hidden. Usually we try to internalize as much as possible, but it is not always possible, for instan
[ThinLTO] Add an auto-hide feature
When a symbol is not exported outside of the DSO, it is can be hidden. Usually we try to internalize as much as possible, but it is not always possible, for instance a symbol can be referenced outside of the LTO unit, or there can be cross-module reference in ThinLTO.
Differential Revision: https://reviews.llvm.org/D28978
llvm-svn: 293912
show more ...
|
#
8902948f |
| 21-Jan-2017 |
Mehdi Amini <mehdi.amini@apple.com> |
Add missing dependency to "Module Summary Analysis" pass
This is fixing a clang crash when running `clang -flto=thin -save-temps`
llvm-svn: 292711
|
Revision tags: llvmorg-4.0.0-rc1 |
|
#
6c475a75 |
| 05-Jan-2017 |
Teresa Johnson <tejohnson@google.com> |
ThinLTO: add early "dead-stripping" on the Index
Summary: Using the linker-supplied list of "preserved" symbols, we can compute the list of "dead" symbols, i.e. the one that are not reachable from a
ThinLTO: add early "dead-stripping" on the Index
Summary: Using the linker-supplied list of "preserved" symbols, we can compute the list of "dead" symbols, i.e. the one that are not reachable from a "preserved" symbol transitively on the reference graph. Right now we are using this information to mark these functions as non-eligible for import.
The impact is two folds: - Reduction of compile time: we don't import these functions anywhere or import the function these symbols are calling. - The limited number of import/export leads to better internalization.
Patch originally by Mehdi Amini.
Reviewers: mehdi_amini, pcc
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23488
llvm-svn: 291177
show more ...
|