llvm-project/llvm/test/Transforms/IRCE
Max Kazantsev f80ffa1a78 [IRCE] Fix corner case with Start = INT_MAX
When iterating through loop

  for (int i = INT_MAX; i > 0; i--)

We fail to generate the pre-loop for it. It happens because we use the
overflown value in a comparison predicate when identifying whether or not
we need it.

In old logic, we used SLE predicate against Greatest value which exceeds all
seen values of the IV and might be overflown. Now we use the GreatestSeen
value of this IV with SLT predicate.

Also added a test that ensures that a pre-loop is generated for such loops.

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

llvm-svn: 308001
2017-07-14 06:35:03 +00:00
..
add-metadata-pre-post-loops.ll [IRCE] Avoid loop optimizations on pre and post loops 2016-12-13 21:05:21 +00:00
bad-loop-structure.ll [IRCE] Add a missing invariant check 2017-02-07 23:59:07 +00:00
bug-loop-varying-upper-limit.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
bug-mismatched-types.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
conjunctive-checks.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
correct-loop-info.ll [IRCE] Canonicalize pre/post loops after the blocks are added into parent loop 2017-06-06 14:54:01 +00:00
decrementing-loop.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
low-becount.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
multiple-access-no-preloop.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
not-likely-taken.ll
only-lower-check.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
only-upper-check.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
pre_post_loops.ll [IRCE] Fix corner case with Start = INT_MAX 2017-07-14 06:35:03 +00:00
single-access-no-preloop.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
single-access-with-preloop.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
skip-profitability-checks.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
unhandled.ll [IRCE] Create llvm::Loop instances for cloned out loops 2016-08-14 01:04:46 +00:00
with-parent-loops.ll