summaryrefslogtreecommitdiffstats
path: root/clang/runtime/compiler-rt
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-10-28 07:30:06 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-10-28 07:30:06 +0000
commit6094f30da2e717cdf159743c0140590994862244 (patch)
tree49191fd3f994d81c7c764f06253026dfabfcd2a1 /clang/runtime/compiler-rt
parenta67c9c32aa87ad774c6555256d6f09a26d52cc88 (diff)
downloadbcm5719-llvm-6094f30da2e717cdf159743c0140590994862244.tar.gz
bcm5719-llvm-6094f30da2e717cdf159743c0140590994862244.zip
SCEV: Make the final add of an inbounds GEP nuw if we know that the index is positive.
We can't do this for the general case as saying a GEP with a negative index doesn't have unsigned wrap isn't valid for negative indices. %gep = getelementptr inbounds i32* %p, i64 -1 But an inbounds GEP cannot run past the end of address space. So we check for the very common case of a positive index and make GEPs derived from that NUW. Together with Andy's recent non-unit stride work this lets us analyze loops like void foo3(int *a, int *b) { for (; a < b; a++) {} } PR12375, PR12376. Differential Revision: http://llvm-reviews.chandlerc.com/D2033 llvm-svn: 193514
Diffstat (limited to 'clang/runtime/compiler-rt')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud