Commit Graph

8 Commits

Author SHA1 Message Date
Peter Collingbourne
37911b93a0 WholeProgramDevirt: Add import/export support for targets without absolute symbol constants.
Not all targets support the use of absolute symbols to export
constants. In particular, ARM has a wide variety of constant encodings
that cannot currently be relocated by linkers. So instead of exporting
the constants using symbols, export them directly in the summary.
The values of the constants are left as zeroes on targets that support
symbolic exports.

This may result in more cache misses when targeting those architectures
as a result of arbitrary changes in constant values, but this seems
somewhat unavoidable for now.

Differential Revision: https://reviews.llvm.org/D37407

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312967 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-11 22:34:42 +00:00
Evgeniy Stepanov
93d430ca14 Skip CFI for dead functions.
Differential Revision: https://reviews.llvm.org/D33805

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304578 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-02 18:24:23 +00:00
Peter Collingbourne
bfecb4640b WholeProgramDevirt: Implement export/import support for VCP.
Differential Revision: https://reviews.llvm.org/D30017

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297503 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-10 20:13:58 +00:00
Peter Collingbourne
eb3c7034f3 WholeProgramDevirt: Implement export/import support for unique ret val opt.
Differential Revision: https://reviews.llvm.org/D29917

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297502 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-10 20:09:11 +00:00
Peter Collingbourne
1166572ca3 WholeProgramDevirt: Implement importing for uniform ret val opt.
Differential Revision: https://reviews.llvm.org/D29854

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297350 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09 01:11:15 +00:00
Peter Collingbourne
0e534009f0 WholeProgramDevirt: Implement importing for single-impl devirtualization.
Differential Revision: https://reviews.llvm.org/D29844

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297333 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09 00:21:25 +00:00
Peter Collingbourne
d31e3edb6f WholeProgramDevirt: Add any unsuccessful llvm.type.checked.load devirtualizations to the list of llvm.type.test users.
Any unsuccessful llvm.type.checked.load devirtualizations will be translated
into uses of llvm.type.test, so we need to add the resulting llvm.type.test
intrinsics to the function summaries so that the LowerTypeTests pass will
export them.

Differential Revision: https://reviews.llvm.org/D29808

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296939 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-04 01:23:30 +00:00
Peter Collingbourne
a5035323ac IR: Type ID summary extensions for WPD; thread summary into WPD pass.
Make the whole thing testable by adding YAML I/O support for the WPD
summary information and adding some negative tests that exercise the
YAML support.

Differential Revision: https://reviews.llvm.org/D29782

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294981 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-13 19:26:18 +00:00