#
5cacb914 |
| 03-Jul-2019 |
Eugene Leviant <eleviant@accesssoftek.com> |
[ThinLTO] Optimize writeonly globals out
Differential revision: https://reviews.llvm.org/D63444
llvm-svn: 365040
|
Revision tags: llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1 |
|
#
2c5c12c0 |
| 05-Apr-2019 |
Fangrui Song <maskray@google.com> |
Change some dyn_cast to more apropriate isa. NFC
llvm-svn: 357773
|
Revision tags: llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4, llvmorg-8.0.0-rc3, llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2 |
|
#
f59242e5 |
| 31-Jan-2019 |
Teresa Johnson <tejohnson@google.com> |
Recommit "[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader"
Recommit of r352763 with fix for use after free.
llvm-svn: 352770
|
#
4877715e |
| 31-Jan-2019 |
Teresa Johnson <tejohnson@google.com> |
Revert "[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader"
This reverts commit r352763.
Causing a couple bot failures, root cause pointed to by sanitizer bot: http://lab.llvm.
Revert "[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader"
This reverts commit r352763.
Causing a couple bot failures, root cause pointed to by sanitizer bot: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/28909/steps/annotate/logs/stdio
Use after free. I understand the issue but will revert and test with fix before recommitting.
llvm-svn: 352768
show more ...
|
#
992b53fd |
| 31-Jan-2019 |
Teresa Johnson <tejohnson@google.com> |
[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader
Summary: COFF requires that COMDAT name match that of the leader. When we promote and rename an internal leader in ThinLTO due
[ThinLTO] Rename COMDATs for COFF when promoting/renaming COMDAT leader
Summary: COFF requires that COMDAT name match that of the leader. When we promote and rename an internal leader in ThinLTO due to an import, ensure we subsequently rename the associated COMDAT. Similar to D31963 which did this during ThinLTO module splitting.
Fixes PR40414.
Reviewers: pcc, inglorion
Subscribers: mehdi_amini, dexonsmith, dmajor, llvm-commits
Differential Revision: https://reviews.llvm.org/D57395
llvm-svn: 352763
show more ...
|
Revision tags: llvmorg-8.0.0-rc1 |
|
#
2946cd70 |
| 19-Jan-2019 |
Chandler Carruth <chandlerc@gmail.com> |
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the ne
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository.
llvm-svn: 351636
show more ...
|
#
5a7056fa |
| 13-Dec-2018 |
Easwaran Raman <eraman@google.com> |
[ThinLTO] Compute synthetic function entry count
Summary: This patch computes the synthetic function entry count on the whole program callgraph (based on module summary) and writes the entry counts
[ThinLTO] Compute synthetic function entry count
Summary: This patch computes the synthetic function entry count on the whole program callgraph (based on module summary) and writes the entry counts to the summary. After function importing, this count gets attached to the IR as metadata. Since it adds a new field to the summary, this bumps up the version.
Reviewers: tejohnson
Subscribers: mehdi_amini, inglorion, llvm-commits
Differential Revision: https://reviews.llvm.org/D43521
llvm-svn: 349076
show more ...
|
Revision tags: llvmorg-7.0.1, llvmorg-7.0.1-rc3 |
|
#
53e52e47 |
| 28-Nov-2018 |
Xin Tong <trent.xin.tong@gmail.com> |
[ThinLTO] Correct linkonce_any function import linkage. NFC.
Summary: This is a NFC as we do not import non-odr vague linkage when computing for import list for a module.
Reviewers: tejohnson, pcc
[ThinLTO] Correct linkonce_any function import linkage. NFC.
Summary: This is a NFC as we do not import non-odr vague linkage when computing for import list for a module.
Reviewers: tejohnson, pcc
Subscribers: inglorion, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D54928
llvm-svn: 347763
show more ...
|
#
bf46e741 |
| 16-Nov-2018 |
Eugene Leviant <eleviant@accesssoftek.com> |
[ThinLTO] Internalize readonly globals
An attempt to recommit r346584 after failure on OSX build bot. Fixed cache key computation in ThinLTOCodeGenerator and added test case
llvm-svn: 347033
|
#
fa43892d |
| 13-Nov-2018 |
Steven Wu <stevenwu@apple.com> |
Revert "[ThinLTO] Internalize readonly globals"
This reverts commit 10c84a8f35cae4a9fc421648d9608fccda3925f2.
llvm-svn: 346768
|
#
be8d1996 |
| 10-Nov-2018 |
Eugene Leviant <eleviant@accesssoftek.com> |
[ThinLTO] Internalize readonly globals
This patch allows internalising globals if all accesses to them (from live functions) are from non-volatile load instructions
Differential revision: https://r
[ThinLTO] Internalize readonly globals
This patch allows internalising globals if all accesses to them (from live functions) are from non-volatile load instructions
Differential revision: https://reviews.llvm.org/D49362
llvm-svn: 346584
show more ...
|
Revision tags: llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1, llvmorg-7.0.0, llvmorg-7.0.0-rc3, llvmorg-7.0.0-rc2, llvmorg-7.0.0-rc1, llvmorg-6.0.1, llvmorg-6.0.1-rc3, llvmorg-6.0.1-rc2, llvmorg-6.0.1-rc1, llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1 |
|
#
f5220fb6 |
| 13-Mar-2018 |
Rafael Espindola <rafael.espindola@gmail.com> |
[ThinLTO] Clear dllimport when setting dso_local.
This is PR36686.
If a user of a library is LTOed with that library we take the opportunity to set dso_local, but we don't clear dllimport, which cr
[ThinLTO] Clear dllimport when setting dso_local.
This is PR36686.
If a user of a library is LTOed with that library we take the opportunity to set dso_local, but we don't clear dllimport, which creates an invalid IR.
llvm-svn: 327408
show more ...
|
Revision tags: llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2 |
|
#
b4edfb9a |
| 05-Feb-2018 |
Peter Collingbourne <peter@pcc.me.uk> |
LTO: Include dso-local bit in ThinLTO cache key.
Differential Revision: https://reviews.llvm.org/D42713
llvm-svn: 324253
|
Revision tags: llvmorg-6.0.0-rc1 |
|
#
6af4f232 |
| 13-Dec-2017 |
Michael Zolotukhin <mzolotukhin@apple.com> |
Remove redundant includes from lib/Transforms.
llvm-svn: 320628
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2 |
|
#
4595a915 |
| 04-Nov-2017 |
Sean Fertile <sfertile@ca.ibm.com> |
[LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local.
Now that we have a way to mark GlobalValues as local we can use the symbol resolutions that the linker plugin provides a
[LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local.
Now that we have a way to mark GlobalValues as local we can use the symbol resolutions that the linker plugin provides as part of lto/thinlto link step to refine the compilers view on what symbols will end up being local.
Originally commited as r317374, but reverted in r317395 to update some missed tests.
Differential Revision: https://reviews.llvm.org/D35702
llvm-svn: 317408
show more ...
|
#
39770ca0 |
| 04-Nov-2017 |
Sean Fertile <sfertile@ca.ibm.com> |
Revert "[LTO][ThinLTO] Use the linker resolutions to mark global values ..."
Changes more tests then expected on one of the build bots. reverting to investigate.
This reverts https://llvm.org/svn/l
Revert "[LTO][ThinLTO] Use the linker resolutions to mark global values ..."
Changes more tests then expected on one of the build bots. reverting to investigate.
This reverts https://llvm.org/svn/llvm-project/llvm/trunk@317374
llvm-svn: 317395
show more ...
|
#
36528c2a |
| 03-Nov-2017 |
Sean Fertile <sfertile@ca.ibm.com> |
[LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local.
Now that we have a way to mark GlobalValues as local we can use the symbol resolutions that the linker plugin provides a
[LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local.
Now that we have a way to mark GlobalValues as local we can use the symbol resolutions that the linker plugin provides as part of lto/thinlto link step to refine the compilers view on what symbols will end up being local.
Differential Revision: https://reviews.llvm.org/D35702
llvm-svn: 317374
show more ...
|
Revision tags: llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2 |
|
#
72c0b1cc |
| 27-Jul-2017 |
David Blaikie <dblaikie@gmail.com> |
Fix assert from r309278
llvm-svn: 309281
|
#
2f0cc477 |
| 27-Jul-2017 |
David Blaikie <dblaikie@gmail.com> |
ThinLTO: Don't import aliases of any kind (even linkonce_odr)
Summary: Until a more advanced version of importing can be implemented for aliases (one that imports an alias as an available_externally
ThinLTO: Don't import aliases of any kind (even linkonce_odr)
Summary: Until a more advanced version of importing can be implemented for aliases (one that imports an alias as an available_externally definition of the aliasee), skip the narrow subset of cases that was possible but came at a cost: aliases of linkonce_odr functions could be imported because the linkonce_odr function could be safely duplicated from the source module. This came/comes at the cost of not being able to 'home' imported linkonce functions (they had to be emitted linkonce_odr in all the destination modules (even if they weren't used by an alias) rather than as available_externally - causing extra object size).
Tangentially, this also was the only reason ThinLTO would emit multiple CUs in to the resulting DWARF - which happens to be a problem for Fission (there's a fix for this in GDB but not released yet, etc). (actually it's not the only reason - but I'm sending a patch to fix the other reason shortly)
There's no reason to believe this particularly narrow alias importing was especially/meaningfully important, only that it was /possible/ to implement in this way. When a more general solution is done, it should still satisfy the DWARF concerns above, since the import will still be available_externally, and thus not create extra CUs.
Since now all aliases are treated the same, I removed/simplified some test cases since they were testing corner cases where there are no longer any corners.
Reviewers: tejohnson, mehdi_amini
Differential Revision: https://reviews.llvm.org/D35875
llvm-svn: 309278
show more ...
|
Revision tags: llvmorg-5.0.0-rc1, llvmorg-4.0.1, llvmorg-4.0.1-rc3 |
|
#
6bda14b3 |
| 06-Jun-2017 |
Chandler Carruth <chandlerc@gmail.com> |
Sort the remaining #include lines in include/... and lib/....
I did this a long time ago with a janky python script, but now clang-format has built-in support for this. I fed clang-format every line
Sort the remaining #include lines in include/... and lib/....
I did this a long time ago with a janky python script, but now clang-format has built-in support for this. I fed clang-format every line with a #include and let it re-sort things according to the precise LLVM rules for include ordering baked into clang-format these days.
I've reverted a number of files where the results of sorting includes isn't healthy. Either places where we have legacy code relying on particular include ordering (where possible, I'll fix these separately) or where we have particular formatting around #include lines that I didn't want to disturb in this patch.
This patch is *entirely* mechanical. If you get merge conflicts or anything, just ignore the changes in this patch and run clang-format over your #include lines in the files.
Sorry for any noise here, but it is important to keep these things stable. I was seeing an increasing number of patches with irrelevant re-ordering of #include lines because clang-format was used. This patch at least isolates that churn, makes it easy to skip when resolving conflicts, and gets us to a clean baseline (again).
llvm-svn: 304787
show more ...
|
Revision tags: llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2 |
|
#
6d8f817f |
| 03-Feb-2017 |
Peter Collingbourne <peter@pcc.me.uk> |
FunctionImport: Use IRMover directly.
The importer was previously using ModuleLinker in a sort of "IRMover mode". Use IRMover directly instead in order to remove a level of indirection.
I will remo
FunctionImport: Use IRMover directly.
The importer was previously using ModuleLinker in a sort of "IRMover mode". Use IRMover directly instead in order to remove a level of indirection.
I will remove all importing support from ModuleLinker in a separate change.
Differential Revision: https://reviews.llvm.org/D29468
llvm-svn: 294014
show more ...
|
Revision tags: llvmorg-4.0.0-rc1 |
|
#
9006d526 |
| 06-Jan-2017 |
Teresa Johnson <tejohnson@google.com> |
[ThinLTO] Handle conflicting local names gracefully
Summary: r285871 introduced an assert that was overly aggressive in the case of a same-named local in different same-named files (in different dir
[ThinLTO] Handle conflicting local names gracefully
Summary: r285871 introduced an assert that was overly aggressive in the case of a same-named local in different same-named files (in different directories), where the source name and therefore the GUID ended up the same because the files were compiled in their own directory without any leading path. Change the handling in the promotion logic to get the summary for the version in that module.
This also exposed an issue where we are not always importing the right copy, which is a performance not correctness issue (because the renaming is based on the module hash which must be different, see the bug report for details). I will fix that as a follow-on.
Fixes PR31561.
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28411
llvm-svn: 291304
show more ...
|
#
2b603845 |
| 05-Jan-2017 |
Teresa Johnson <tejohnson@google.com> |
[ThinLTO] Add parenthesis as per build warning
Fixes a warning about "||" and "&&" due to r291108.
llvm-svn: 291119
|
#
519465b9 |
| 05-Jan-2017 |
Teresa Johnson <tejohnson@google.com> |
[ThinLTO] Subsume all importing checks into a single flag
Summary: This adds a new summary flag NotEligibleToImport that subsumes several existing flags (NoRename, HasInlineAsmMaybeReferencingIntern
[ThinLTO] Subsume all importing checks into a single flag
Summary: This adds a new summary flag NotEligibleToImport that subsumes several existing flags (NoRename, HasInlineAsmMaybeReferencingInternal and IsNotViableToInline). It also subsumes the checking of references on the summary that was being done during the thin link by eligibleForImport() for each candidate. It is much more efficient to do that checking once during the per-module summary build and record it in the summary.
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28169
llvm-svn: 291108
show more ...
|
Revision tags: llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2 |
|
#
185b4ab6 |
| 02-Dec-2016 |
Teresa Johnson <tejohnson@google.com> |
[ThinLTO] Stop importing constant global vars as copies in the backend
Summary: We were doing an optimization in the ThinLTO backends of importing constant unnamed_addr globals unconditionally as a
[ThinLTO] Stop importing constant global vars as copies in the backend
Summary: We were doing an optimization in the ThinLTO backends of importing constant unnamed_addr globals unconditionally as a local copy (regardless of whether the thin link decided to import them). This should be done in the thin link instead, so that resulting exported references are marked and promoted appropriately, but will need a summary enhancement to mark these variables as constant unnamed_addr.
The function import logic during the thin link was trying to handle this proactively, by conservatively marking all values referenced in the initializer lists of exported global variables as also exported. However, this only handled values referenced directly from the initializer list of an exported global variable. If the value is itself a constant unnamed_addr variable, we could end up exporting its references as well. This caused multiple issues. The first is that the transitively exported references weren't promoted. Secondly, some could not be promoted/renamed (e.g. they had a section or other constraint). recursively, instead of just adding the first level of initializer list references to the ExportList directly.
Remove this optimization and the associated handling in the function import backend. SPEC measurements indicate we weren't getting much from it in any case.
Fixes PR31052.
Reviewers: mehdi_amini
Subscribers: krasin, llvm-commits
Differential Revision: https://reviews.llvm.org/D26880
llvm-svn: 288446
show more ...
|