Make the ptrtoint comparison simplification work if one side is a global.
llvm-svn: 91624
This commit is contained in:
parent
e43b403c87
commit
7cc86b4cc6
|
@ -6452,7 +6452,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
|
|||
// if (X) ...
|
||||
// For generality, we handle any zero-extension of any operand comparison
|
||||
// with a constant or another cast from the same type.
|
||||
if (isa<ConstantInt>(Op1) || isa<CastInst>(Op1))
|
||||
if (isa<Constant>(Op1) || isa<CastInst>(Op1))
|
||||
if (Instruction *R = visitICmpInstWithCastAndCast(I))
|
||||
return R;
|
||||
}
|
||||
|
|
|
@ -27,3 +27,12 @@ define i1 @test2(i8* %a, i8* %b) {
|
|||
ret i1 %r
|
||||
}
|
||||
|
||||
; These casts should also be folded away.
|
||||
; CHECK: @test3
|
||||
; CHECK: icmp eq i8* %a, @global
|
||||
@global = global i8 0
|
||||
define i1 @test3(i8* %a) {
|
||||
%tmpa = ptrtoint i8* %a to i32
|
||||
%r = icmp eq i32 %tmpa, ptrtoint (i8* @global to i32)
|
||||
ret i1 %r
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue