]> granicus.if.org Git - llvm/commit
[LICM] Hoist loads that are dominated by invariant.start intrinsic, and are invariant...
authorAnna Thomas <anna@azul.com>
Thu, 2 Feb 2017 13:22:03 +0000 (13:22 +0000)
committerAnna Thomas <anna@azul.com>
Thu, 2 Feb 2017 13:22:03 +0000 (13:22 +0000)
commitd63d59a787651c15934f49ccf53959af12dbcb7c
treebaeb0997e9640efc1847283ac8ed50faa967bcb2
parente92069833f6d056b0ed415d63122bdbf29b7845d
[LICM] Hoist loads that are dominated by invariant.start intrinsic, and are invariant in the loop.

Summary:
We can hoist out loads that are dominated by invariant.start, to the preheader.
We conservatively assume the load is variant, if we see a corresponding
use of invariant.start (it could be an invariant.end or an escaping
call).

Reviewers: mkuper, sanjoy, reames

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293887 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/LICM.cpp
test/Transforms/LICM/hoisting.ll