9 Commits

Author SHA1 Message Date
Joel E. Denny af1e2bed36 [lit] Fix a test case that r374652 missed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375023 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-16 17:56:12 +00:00
Eugene Leviant ce02804eb8 [ThinLTO] Attempt to recommit r365188 after alignment fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365215 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-05 15:25:05 +00:00
Eugene Leviant 4697389ad6 Reverted r365188 due to alignment problems on i686-android
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365206 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-05 13:26:05 +00:00
Eugene Leviant 69d43aeac4 [ThinLTO] Attempt to recommit r365040 after caching fix
It's possible that some function can load and store the same
variable using the same constant expression:

store %Derived* @foo, %Derived** bitcast (%Base** @bar to %Derived**)
%42 = load %Derived*, %Derived** bitcast (%Base** @bar to %Derived**)

The bitcast expression was mistakenly cached while processing loads,
and never examined later when processing store. This caused @bar to
be mistakenly treated as read-only variable. See load-store-caching.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365188 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-05 12:00:10 +00:00
Reid Kleckner c76c57a237 Revert [ThinLTO] Optimize writeonly globals out
This reverts r365040 (git commit 5cacb914758c7f436b47c8362100f10cef14bbc4)

Speculatively reverting, since this appears to have broken check-lld on
Linux. Partial analysis in https://crbug.com/981168.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365097 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-04 00:03:30 +00:00
Eugene Leviant c9d0360e9a [ThinLTO] Optimize writeonly globals out
Differential revision: https://reviews.llvm.org/D63444


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365040 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-03 14:14:52 +00:00
Teresa Johnson 7a71aab330 [ThinLTO] Add summary entries for index-based WPD
Summary:
If LTOUnit splitting is disabled, the module summary analysis computes
the summary information necessary to perform single implementation
devirtualization during the thin link with the index and no IR. The
information collected from the regular LTO IR in the current hybrid WPD
algorithm is summarized, including:
1) For vtable definitions, record the function pointers and their offset
within the vtable initializer (subsumes the information collected from
IR by tryFindVirtualCallTargets).
2) A record for each type metadata summarizing the vtable definitions
decorated with that metadata (subsumes the TypeIdentiferMap collected
from IR).

Also added are the necessary bitcode records, and the corresponding
assembly support.

The follow-on index-based WPD patch is D55153.

Depends on D53890.

Reviewers: pcc

Subscribers: mehdi_amini, Prazek, inglorion, eraman, steven_wu, dexonsmith, arphaman, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364960 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-02 19:38:02 +00:00
Teresa Johnson 5b5290a1ba Revert "[ThinLTO] Add summary entries for index-based WPD"
Mistaken commit of something still under review!

This reverts commit r351453.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351455 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-17 16:05:04 +00:00
Teresa Johnson 70c3a1bd4a [ThinLTO] Add summary entries for index-based WPD
Summary:
If LTOUnit splitting is disabled, the module summary analysis computes
the summary information necessary to perform single implementation
devirtualization during the thin link with the index and no IR. The
information collected from the regular LTO IR in the current hybrid WPD
algorithm is summarized, including:
1) For vtable definitions, record the function pointers and their offset
within the vtable initializer (subsumes the information collected from
IR by tryFindVirtualCallTargets).
2) A record for each type metadata summarizing the vtable definitions
decorated with that metadata (subsumes the TypeIdentiferMap collected
from IR).

Also added are the necessary bitcode records, and the corresponding
assembly support.

The index-based WPD will be sent as a follow-on.

Depends on D53890.

Reviewers: pcc

Subscribers: mehdi_amini, Prazek, inglorion, eraman, steven_wu, dexonsmith, arphaman, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351453 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-17 15:49:03 +00:00