mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
When the two operands of an icmp are equal, there are five possible predicates
that would make the icmp true. Fixes PR1637. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41740 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dd199d29b7
commit
5a5ff9d7df
@ -4563,7 +4563,9 @@ Instruction *InstCombiner::FoldGEPICmp(User *GEPLHS, Value *RHS,
|
||||
if (NumDifferences == 0) // SAME GEP?
|
||||
return ReplaceInstUsesWith(I, // No comparison is needed here.
|
||||
ConstantInt::get(Type::Int1Ty,
|
||||
Cond == ICmpInst::ICMP_EQ));
|
||||
Cond == ICmpInst::ICMP_EQ ||
|
||||
Cond == ICmpInst::ICMP_ULE || Cond == ICmpInst::ICMP_UGE ||
|
||||
Cond == ICmpInst::ICMP_SLE || Cond == ICmpInst::ICMP_SGE));
|
||||
else if (NumDifferences == 1) {
|
||||
Value *LHSV = GEPLHS->getOperand(DiffOperand);
|
||||
Value *RHSV = GEPRHS->getOperand(DiffOperand);
|
||||
|
10
test/Transforms/InstCombine/2007-09-05-EqualGEP.ll
Normal file
10
test/Transforms/InstCombine/2007-09-05-EqualGEP.ll
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep {ret i1 true}
|
||||
; PR1637
|
||||
|
||||
define i1 @f(i8* %arr) {
|
||||
%X = getelementptr i8* %arr, i32 1
|
||||
%Y = getelementptr i8* %arr, i32 1
|
||||
%test = icmp uge i8* %X, %Y
|
||||
ret i1 %test
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user