diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp index 0d17ef773f44c..adf86526ebf14 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp @@ -933,8 +933,8 @@ void ObjCARCOpt::OptimizeIndividualCallImpl(Function &F, Instruction *Inst, if (IsNullOrUndef(CI->getArgOperand(0))) { Changed = true; new StoreInst(ConstantInt::getTrue(CI->getContext()), - UndefValue::get(Type::getInt1PtrTy(CI->getContext())), CI); - Value *NewValue = UndefValue::get(CI->getType()); + PoisonValue::get(Type::getInt1PtrTy(CI->getContext())), CI); + Value *NewValue = PoisonValue::get(CI->getType()); LLVM_DEBUG( dbgs() << "A null pointer-to-weak-pointer is undefined behavior." "\nOld = " @@ -952,9 +952,9 @@ void ObjCARCOpt::OptimizeIndividualCallImpl(Function &F, Instruction *Inst, IsNullOrUndef(CI->getArgOperand(1))) { Changed = true; new StoreInst(ConstantInt::getTrue(CI->getContext()), - UndefValue::get(Type::getInt1PtrTy(CI->getContext())), CI); + PoisonValue::get(Type::getInt1PtrTy(CI->getContext())), CI); - Value *NewValue = UndefValue::get(CI->getType()); + Value *NewValue = PoisonValue::get(CI->getType()); LLVM_DEBUG( dbgs() << "A null pointer-to-weak-pointer is undefined behavior." "\nOld = " diff --git a/llvm/test/Transforms/ObjCARC/weak.ll b/llvm/test/Transforms/ObjCARC/weak.ll index ad5ac571f06ca..db63847c8f6c9 100644 --- a/llvm/test/Transforms/ObjCARC/weak.ll +++ b/llvm/test/Transforms/ObjCARC/weak.ll @@ -14,24 +14,24 @@ declare void @llvm.objc.copyWeak(ptr, ptr) define void @test0(ptr %p, ptr %q) { ; CHECK-LABEL: @test0( ; CHECK-NEXT: entry: -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 -; CHECK-NEXT: store i1 true, ptr undef, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 +; CHECK-NEXT: store i1 true, ptr poison, align 1 ; CHECK-NEXT: ret void ; entry: