forked from OSchip/llvm-project
a1a4adf4b9
Summary: Currently we express umin as `~umax(~x, ~y)`. However, this becomes a problem for operands in non-integral pointer spaces, because `~x` is not something we can compute for `x` non-integral. However, since comparisons are generally still allowed, we are actually able to express `umin(x, y)` directly as long as we don't try to express is as a umax. Support this by adding an explicit umin/smin representation to SCEV. We do this by factoring the existing getUMax/getSMax functions into a new function that does all four. The previous two functions were largely identical. Reviewed By: sanjoy Differential Revision: https://reviews.llvm.org/D50167 llvm-svn: 360159 |
||
---|---|---|
.. | ||
backward-dep-different-types.ll | ||
forward-loop-carried.ll | ||
forward-loop-independent.ll | ||
independent-interleaved.ll | ||
interleave-innermost.ll | ||
memcheck-for-loop-invariant.ll | ||
memcheck-ni.ll | ||
memcheck-off-by-one-error.ll | ||
memcheck-wrapping-pointers.ll | ||
multiple-strides-rt-memory-checks.ll | ||
non-wrapping-pointer.ll | ||
nullptr.ll | ||
number-of-memchecks.ll | ||
pointer-with-unknown-bounds.ll | ||
pr31098.ll | ||
resort-to-memchecks-only.ll | ||
reverse-memcheck-bounds.ll | ||
safe-no-checks.ll | ||
safe-with-dep-distance.ll | ||
store-to-invariant-check1.ll | ||
store-to-invariant-check2.ll | ||
store-to-invariant-check3.ll | ||
stride-access-dependence.ll | ||
underlying-objects-1.ll | ||
underlying-objects-2.ll | ||
unsafe-and-rt-checks.ll | ||
wrapping-pointer-ni.ll | ||
wrapping-pointer-versioning.ll |