IRCE: generalize to handle loops with decreasing induction variables.
authorSanjoy Das <sanjoy@playingwithpointers.com>
Thu, 26 Feb 2015 08:19:31 +0000 (08:19 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Thu, 26 Feb 2015 08:19:31 +0000 (08:19 +0000)
commit21b2edfeae46694e3c01005ed4d3bb5c1fc58996
treee359734e202ae478e229ea1f4cebc36550e9e797
parent19c267aed13a0329f7ad111cd62bf549ae460cbc
IRCE: generalize to handle loops with decreasing induction variables.

IRCE can now split the iteration space for loops like:

   for (i = n; i >= 0; i--)
     a[i + k] = 42; // bounds check on access

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230618 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp
test/Transforms/IRCE/decrementing-loop.ll [new file with mode: 0644]
test/Transforms/IRCE/multiple-access-no-preloop.ll
test/Transforms/IRCE/single-access-no-preloop.ll
test/Transforms/IRCE/single-access-with-preloop.ll