Fix a trip-count overflow issue in LoopUnroll.
authorMichael Zolotukhin <mzolotukhin@apple.com>
Thu, 20 Nov 2014 20:19:55 +0000 (20:19 +0000)
committerMichael Zolotukhin <mzolotukhin@apple.com>
Thu, 20 Nov 2014 20:19:55 +0000 (20:19 +0000)
commit0dcae714493752ed441ee827a7d3abc95c98e499
treeeb6cbc4aec42108f046b857911f82d0b3ba5c6a2
parent365eb05c705800f952ec9d6847478e600fffe4e7
Fix a trip-count overflow issue in LoopUnroll.

Currently LoopUnroll generates a prologue loop before the main loop
body to execute first N%UnrollFactor iterations. Also, this loop is
used if trip-count can overflow - it's determined by a runtime check.

However, we've been mistakenly optimizing this loop to a linear code for
UnrollFactor = 2, not taking into account that it also serves as a safe
version of the loop if its trip-count overflows.

llvm-svn: 222451
llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
llvm/test/Transforms/LoopUnroll/runtime-loop1.ll
llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll [new file with mode: 0644]