; RUN: opt -instcombine -S < %s | FileCheck %s ; When a pointer is addrspacecasted to a another addr space, we cannot assume ; anything about the new bits. target datalayout = "p:32:32-p3:32:32-p4:64:64" ; CHECK-LABEL: @test_shift ; CHECK-NOT: ret i64 0 define i64 @test_shift(i8* %p) { %g = addrspacecast i8* %p to i8 addrspace(4)* %i = ptrtoint i8 addrspace(4)* %g to i64 %shift = lshr i64 %i, 32 ret i64 %shift } ; CHECK-LABEL: @test_null ; A null pointer casted to another addr space may no longer have null value. ; CHECK-NOT: ret i32 0 define i32 @test_null() { %g = addrspacecast i8* null to i8 addrspace(3)* %i = ptrtoint i8 addrspace(3)* %g to i32 ret i32 %i }