Exploit dereferenceable_or_null attribute in LICM pass
authorSanjoy Das <sanjoy@playingwithpointers.com>
Mon, 18 May 2015 18:07:00 +0000 (18:07 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Mon, 18 May 2015 18:07:00 +0000 (18:07 +0000)
commit0799eb1140748c4a049f660a2fea26223c80ab03
treef11c9096ec87d0f0fa99ee583794f8478173d6ba
parent9962fd0e2ead64250858951596e932c715093a96
Exploit dereferenceable_or_null attribute in LICM pass

Summary:
Allow hoisting of loads from values marked with dereferenceable_or_null
attribute. For values marked with the attribute perform
context-sensitive analysis to determine whether it's known-non-null or
not.

Patch by Artur Pilipenko!

Reviewers: hfinkel, sanjoy, reames

Reviewed By: reames

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9253

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237593 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/ValueTracking.h
include/llvm/Transforms/Utils/LoopUtils.h
lib/Analysis/ValueTracking.cpp
lib/Transforms/Scalar/LICM.cpp
test/Transforms/LICM/hoist-deref-load.ll