mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-18 12:29:21 +00:00
Fix PR1817.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44284 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c2bfadb9df
commit
eec8b9a7d6
@ -3463,7 +3463,12 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
|
||||
LHSCC != ICmpInst::ICMP_UGE && LHSCC != ICmpInst::ICMP_ULE &&
|
||||
RHSCC != ICmpInst::ICMP_UGE && RHSCC != ICmpInst::ICMP_ULE &&
|
||||
LHSCC != ICmpInst::ICMP_SGE && LHSCC != ICmpInst::ICMP_SLE &&
|
||||
RHSCC != ICmpInst::ICMP_SGE && RHSCC != ICmpInst::ICMP_SLE) {
|
||||
RHSCC != ICmpInst::ICMP_SGE && RHSCC != ICmpInst::ICMP_SLE &&
|
||||
|
||||
// Don't try to fold ICMP_SLT + ICMP_ULT.
|
||||
(ICmpInst::isEquality(LHSCC) || ICmpInst::isEquality(RHSCC) ||
|
||||
ICmpInst::isSignedPredicate(LHSCC) ==
|
||||
ICmpInst::isSignedPredicate(RHSCC))) {
|
||||
// Ensure that the larger constant is on the RHS.
|
||||
ICmpInst::Predicate GT = ICmpInst::isSignedPredicate(LHSCC) ?
|
||||
ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT;
|
||||
|
16
test/Transforms/InstCombine/2007-11-22-IcmpCrash.ll
Normal file
16
test/Transforms/InstCombine/2007-11-22-IcmpCrash.ll
Normal file
@ -0,0 +1,16 @@
|
||||
; RUN: llvm-as < %s | opt -instcombine -disable-output
|
||||
; PR1817
|
||||
|
||||
define i1 @test1(i32 %X) {
|
||||
%A = icmp slt i32 %X, 10
|
||||
%B = icmp ult i32 %X, 10
|
||||
%C = and i1 %A, %B
|
||||
ret i1 %C
|
||||
}
|
||||
|
||||
define i1 @test2(i32 %X) {
|
||||
%A = icmp slt i32 %X, 10
|
||||
%B = icmp ult i32 %X, 10
|
||||
%C = or i1 %A, %B
|
||||
ret i1 %C
|
||||
}
|
Loading…
Reference in New Issue
Block a user