summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG/fast-fallthrough.ll
Commit message (Collapse)AuthorAgeFilesLines
* Revert 250343 and 250344Philip Reames2015-10-151-86/+0
| | | | | | | | | | | | | | | | | | | | | | | | Turns out this approach is buggy. In discussion about follow on work, Sanjoy pointed out that we could be subject to circular logic problems. Consider: if (i u< L) leave() if ((i + 1) u< L) leave() print(a[i] + a[i+1]) If we know that L is less than UINT_MAX, we could possible prove (in a control dependent way) that i + 1 does not overflow. This gives us: if (i u< L) leave() if ((i +nuw 1) u< L) leave() print(a[i] + a[i+1]) If we now do the transform this patch proposed, we end up with: if ((i +nuw 1) u< L) leave_appropriately() print(a[i] + a[i+1]) That would be a miscompile when i==-1. The problem here is that the control dependent nuw bits got used to prove something about the first condition. That's obviously invalid. This won't happen today, but since I plan to enhance LVI/CVP with exactly that transform at some point in the not too distant future... llvm-svn: 250430
* Test case which should have been part of 250343Philip Reames2015-10-141-0/+86
llvm-svn: 250344
OpenPOWER on IntegriCloud