mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Constant fold ptrtoint + compare with address spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191699 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e5388399c7
commit
f9dd19f498
@ -1782,7 +1782,7 @@ Instruction *InstCombiner::visitICmpInstWithCastAndCast(ICmpInst &ICI) {
|
||||
// Turn icmp (ptrtoint x), (ptrtoint/c) into a compare of the input if the
|
||||
// integer type is the same size as the pointer type.
|
||||
if (TD && LHSCI->getOpcode() == Instruction::PtrToInt &&
|
||||
TD->getPointerSizeInBits() == DestTy->getIntegerBitWidth()) {
|
||||
TD->getPointerTypeSizeInBits(SrcTy) == DestTy->getIntegerBitWidth()) {
|
||||
Value *RHSOp = 0;
|
||||
if (Constant *RHSC = dyn_cast<Constant>(ICI.getOperand(1))) {
|
||||
RHSOp = ConstantExpr::getIntToPtr(RHSC, SrcTy);
|
||||
|
@ -27,6 +27,26 @@ define i1 @test2(i8* %a, i8* %b) {
|
||||
ret i1 %r
|
||||
}
|
||||
|
||||
; These casts should be folded away.
|
||||
; CHECK-LABEL: @test2_as2_same_int(
|
||||
; CHECK: icmp eq i8 addrspace(2)* %a, %b
|
||||
define i1 @test2_as2_same_int(i8 addrspace(2)* %a, i8 addrspace(2)* %b) {
|
||||
%tmpa = ptrtoint i8 addrspace(2)* %a to i16
|
||||
%tmpb = ptrtoint i8 addrspace(2)* %b to i16
|
||||
%r = icmp eq i16 %tmpa, %tmpb
|
||||
ret i1 %r
|
||||
}
|
||||
|
||||
; These casts should be folded away.
|
||||
; CHECK-LABEL: @test2_as2_larger(
|
||||
; CHECK: icmp eq i8 addrspace(2)* %a, %b
|
||||
define i1 @test2_as2_larger(i8 addrspace(2)* %a, i8 addrspace(2)* %b) {
|
||||
%tmpa = ptrtoint i8 addrspace(2)* %a to i32
|
||||
%tmpb = ptrtoint i8 addrspace(2)* %b to i32
|
||||
%r = icmp eq i32 %tmpa, %tmpb
|
||||
ret i1 %r
|
||||
}
|
||||
|
||||
; These casts should also be folded away.
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: icmp eq i8* %a, @global
|
||||
|
Loading…
Reference in New Issue
Block a user