Make the ptrtoint comparison simplification work if one side is a global.

llvm-svn: 91624
This commit is contained in:
Eli Friedman 2009-12-17 21:27:47 +00:00
parent e43b403c87
commit 7cc86b4cc6
2 changed files with 10 additions and 1 deletions

View File

@ -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;
}

View File

@ -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
}