diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -1572,7 +1572,7 @@ Value *IsShared = IRB.CreateCall(AMDGPUAddressShared, {AddrLong}); Value *IsPrivate = IRB.CreateCall(AMDGPUAddressPrivate, {AddrLong}); Value *IsSharedOrPrivate = IRB.CreateOr(IsShared, IsPrivate); - Value *Cmp = IRB.CreateICmpNE(IRB.getTrue(), IsSharedOrPrivate); + Value *Cmp = IRB.CreateNot(IsSharedOrPrivate); Value *AddrSpaceZeroLanding = SplitBlockAndInsertIfThen(Cmp, InsertBefore, false); InsertBefore = cast(AddrSpaceZeroLanding); @@ -1620,11 +1620,10 @@ IntegerType::get(*C, std::max(8U, TypeSize >> Mapping.Scale)); Type *ShadowPtrTy = PointerType::get(ShadowTy, 0); Value *ShadowPtr = memToShadow(AddrLong, IRB); - Value *CmpVal = Constant::getNullValue(ShadowTy); Value *ShadowValue = IRB.CreateLoad(ShadowTy, IRB.CreateIntToPtr(ShadowPtr, ShadowPtrTy)); - Value *Cmp = IRB.CreateICmpNE(ShadowValue, CmpVal); + Value *Cmp = IRB.CreateIsNotNull(ShadowValue); size_t Granularity = 1ULL << Mapping.Scale; Instruction *CrashTerm = nullptr; diff --git a/llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_generic_address_space.ll b/llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_generic_address_space.ll --- a/llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_generic_address_space.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_generic_address_space.ll @@ -10,7 +10,7 @@ ; CHECK: call i1 @llvm.amdgcn.is.shared(ptr %[[GENERIC_ADDR]]) ; CHECK: call i1 @llvm.amdgcn.is.private(ptr %[[GENERIC_ADDR]]) ; CHECK: or -; CHECK: icmp ne i1 +; CHECK: xor i1 %{{.*}}, true ; CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}} ; ; CHECK: %[[STORE_ADDR:[^ ]*]] = ptrtoint ptr %q to i64 @@ -46,7 +46,7 @@ ; CHECK: call i1 @llvm.amdgcn.is.shared(ptr %[[GENERIC_ADDR]]) ; CHECK: call i1 @llvm.amdgcn.is.private(ptr %[[GENERIC_ADDR]]) ; CHECK: or -; CHECK: icmp ne i1 +; CHECK: xor i1 %{{.*}}, true ; CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}} ; ; CHECK: %[[STORE_ADDR:[^ ]*]] = ptrtoint ptr %q to i64