diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2014-10-12 14:02:34 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2014-10-12 14:02:34 +0000 |
| commit | 240b85eec56efb407f843e23c7e7ac81c3042998 (patch) | |
| tree | 905f243ccf6c59654fcba6a94cd6559ea35f0e7c /llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | |
| parent | 77ac26d27989bd8e949cb4464c6f98a23965516b (diff) | |
| download | bcm5719-llvm-240b85eec56efb407f843e23c7e7ac81c3042998.tar.gz bcm5719-llvm-240b85eec56efb407f843e23c7e7ac81c3042998.zip | |
InstCombine: Turn (x != 0 & x <u C) into the canonical range check form (x-1 <u C-1)
llvm-svn: 219585
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp')
| -rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp index 0a9bb2d1087..79cf288b338 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -930,6 +930,8 @@ Value *InstCombiner::FoldAndOfICmps(ICmpInst *LHS, ICmpInst *RHS) { case ICmpInst::ICMP_ULT: if (LHSCst == SubOne(RHSCst)) // (X != 13 & X u< 14) -> X < 13 return Builder->CreateICmpULT(Val, LHSCst); + if (LHSCst->isNullValue()) // (X != 0 & X u< 14) -> X-1 u< 13 + return InsertRangeTest(Val, AddOne(LHSCst), RHSCst, false, true); break; // (X != 13 & X u< 15) -> no change case ICmpInst::ICMP_SLT: if (LHSCst == SubOne(RHSCst)) // (X != 13 & X s< 14) -> X < 13 |

