; RUN: opt -passes=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(ptr %p) { %g = addrspacecast ptr %p to ptr addrspace(4) %i = ptrtoint ptr 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 ptr null to ptr addrspace(3) %i = ptrtoint ptr addrspace(3) %g to i32 ret i32 %i }