forked from OSchip/llvm-project
eb4f41dfe5
Before we did not follow casts and geps when we looked at the users of a pointer in the pointers must-be-executed-context. This caused us to fail to determine if it was accessed for sure. With this change we follow such users now. The above extension exposed problems in getKnownNonNullAndDerefBytesForUse which did not always check what the base pointer was. We also did not handle negative offsets as conservative as we have to without explicit loop handling. Finally, we should not derive a huge number if we access a pointer that was traversed backwards first. The problems exposed by this functional change are already tested in the existing test cases as is the functional change. Differential Revision: https://reviews.llvm.org/D69647 |
||
---|---|---|
.. | ||
2008-09-03-Mutual.ll | ||
2008-09-03-ReadNone.ll | ||
2008-09-03-ReadOnly.ll | ||
2008-09-13-VolatileRead.ll | ||
2008-12-29-Constant.ll | ||
2009-01-02-LocalStores.ll | ||
2010-10-30-volatile.ll | ||
align.ll | ||
arg_nocapture.ll | ||
arg_returned.ll | ||
assume.ll | ||
atomic.ll | ||
callbacks.ll | ||
comdat-ipo.ll | ||
convergent.ll | ||
dereferenceable.ll | ||
fn_noreturn.ll | ||
heap_to_stack.ll | ||
incompatible_fn_attrs.ll | ||
int_sideeffect.ll | ||
internal-noalias.ll | ||
liveness.ll | ||
misc.ll | ||
naked_functions.ll | ||
new_attributes.ll | ||
noalias_returned.ll | ||
nocapture.ll | ||
nofree-attributor.ll | ||
nofree.ll | ||
nonnull-global.ll | ||
nonnull.ll | ||
norecurse.ll | ||
noreturn_async.ll | ||
noreturn_sync.ll | ||
nosync.ll | ||
nounwind.ll | ||
operand-bundles-scc.ll | ||
optnone-simple.ll | ||
optnone.ll | ||
out-of-bounds-iterator-bug.ll | ||
read-write-scc.ll | ||
read_write_returned_arguments_scc.ll | ||
readattrs.ll | ||
readnone.ll | ||
returned.ll | ||
value-simplify.ll | ||
willreturn.ll | ||
writeonly.ll |