llvm-project/llvm/test/Analysis/ValueTracking
Mikhail Maltsev ffaa8a8781 [IR] Do not assume that function pointers are aligned
Summary:
The value tracking analysis uses function alignment to infer that the
least significant bits of function pointers are known to be zero.
Unfortunately, this is not correct for ARM targets: the least
significant bit of a function pointer stores the ARM/Thumb state
information (i.e., the LSB is set for Thumb functions and cleared for
ARM functions).

The original approach (https://reviews.llvm.org/D44781) introduced a
new field for function pointer alignment in the DataLayout structure
to address this. But it seems unlikely that optimizations based on
function pointer alignment would bring much benefit in practice to
justify the additional maintenance burden, so this patch simply
assumes that function pointer alignment is always unknown.

Reviewers: javed.absar, efriedma

Reviewed By: efriedma

Subscribers: kristof.beyls, llvm-commits, hfinkel, rogfer01

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

llvm-svn: 331025
2018-04-27 09:12:12 +00:00
..
assume.ll [ValueTracking] Don't delete assumes of side-effectful instructions 2017-08-14 17:11:43 +00:00
deref-bitcast-of-gep.ll
dereferenceable-and-aligned.ll [Loads] Fix crash in is isDereferenceableAndAlignedPointer() 2016-10-28 15:32:28 +00:00
func-ptr-lsb.ll [IR] Do not assume that function pointers are aligned 2018-04-27 09:12:12 +00:00
get-pointer-base-with-const-off.ll [ValueTracking] Fix crash in GetPointerBaseWithConstantOffset() 2016-10-07 14:23:29 +00:00
known-bits-from-range-md.ll
known-non-equal.ll
known-nonnull-at.ll [ValueTracking] use nonnull argument attribute to eliminate null checks 2017-02-12 15:35:34 +00:00
known-power-of-two.ll
known-signbit-shift.ll [ValueTracking] return zero when there's conflict in known bits of a shift (PR34838) 2017-10-12 17:31:46 +00:00
knownnonzero-shift.ll
knownzero-addrspacecast.ll Fix known zero bits for addrspacecast. 2016-11-21 15:42:31 +00:00
knownzero-shift.ll [InstSimplify] allow integer vector types to use computeKnownBits 2016-11-27 21:07:28 +00:00
memory-dereferenceable.ll Give up on array allocas in getPointerDereferenceableBytes 2017-12-20 10:01:30 +00:00
monotonic-phi.ll
non-negative-phi-bits.ll [ValueTracking] Adding missed lit-test for commit r316208 2018-01-04 10:02:50 +00:00
pr23011.ll
select-pattern.ll [ValueTracking] add recursion depth param to matchSelectPattern 2018-01-24 15:20:37 +00:00
signbits-extract-elt.ll [ValueTracking] Teach computeKnownBits and ComputeNumSignBits to look through ExtractElement. 2016-10-06 09:56:21 +00:00