Lines Matching refs:CGF

31     CodeGenFunction &CGF;  member in __anon5e56f1450111::AtomicInfo
43 AtomicInfo(CodeGenFunction &CGF, LValue &lvalue) in AtomicInfo() argument
44 : CGF(CGF), AtomicSizeInBits(0), ValueSizeInBits(0), in AtomicInfo()
47 ASTContext &C = CGF.getContext(); in AtomicInfo()
54 EvaluationKind = CGF.getEvaluationKind(ValueTy); in AtomicInfo()
83 llvm::Value *BitFieldPtr = lvalue.getRawBitFieldPointer(CGF); in AtomicInfo()
87 llvm::Value *StoragePtr = CGF.Builder.CreateConstGEP1_64( in AtomicInfo()
88 CGF.Int8Ty, BitFieldPtr, OffsetInChars.getQuantity()); in AtomicInfo()
89 StoragePtr = CGF.Builder.CreateAddrSpaceCast( in AtomicInfo()
90 StoragePtr, CGF.UnqualPtrTy, "atomic_bitfield_base"); in AtomicInfo()
95 llvm::Type *StorageTy = CGF.Builder.getIntNTy(AtomicSizeInBits); in AtomicInfo()
120 AtomicTy = ValueTy = CGF.getContext().getExtVectorType( in AtomicInfo()
142 return LVal.emitRawPointer(CGF); in getAtomicPointer()
144 return LVal.getRawBitFieldPointer(CGF); in getAtomicPointer()
146 return LVal.getRawVectorPointer(CGF); in getAtomicPointer()
148 return LVal.getRawExtVectorPointer(CGF); in getAtomicPointer()
180 CharUnits size = CGF.getContext().toCharUnitsFromBits(AtomicSizeInBits); in getAtomicSizeValue()
181 return CGF.CGM.getSize(size); in getAtomicSizeValue()
214 addr = CGF.Builder.CreateStructGEP(addr, 0); in projectValue()
216 return LValue::MakeAddr(addr, getValueType(), CGF.getContext(), in projectValue()
302 Address TempAlloca = CGF.CreateMemTemp( in CreateTempAlloca()
309 return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in CreateTempAlloca()
315 static RValue emitAtomicLibcall(CodeGenFunction &CGF, in emitAtomicLibcall() argument
320 CGF.CGM.getTypes().arrangeBuiltinFunctionCall(resultType, args); in emitAtomicLibcall()
321 llvm::FunctionType *fnTy = CGF.CGM.getTypes().GetFunctionType(fnInfo); in emitAtomicLibcall()
322 llvm::AttrBuilder fnAttrB(CGF.getLLVMContext()); in emitAtomicLibcall()
326 CGF.getLLVMContext(), llvm::AttributeList::FunctionIndex, fnAttrB); in emitAtomicLibcall()
329 CGF.CGM.CreateRuntimeFunction(fnTy, fnName, fnAttrs); in emitAtomicLibcall()
331 return CGF.EmitCall(fnInfo, callee, ReturnValueSlot(), args); in emitAtomicLibcall()
352 return !isFullSizeType(CGF.CGM, type, AtomicSizeInBits); in requiresMemSetZero()
354 return !isFullSizeType(CGF.CGM, type->getStructElementType(0), in requiresMemSetZero()
370 CGF.Builder.CreateMemSet( in emitMemSetZeroIfNecessary()
371 addr.emitRawPointer(CGF), llvm::ConstantInt::get(CGF.Int8Ty, 0), in emitMemSetZeroIfNecessary()
372 CGF.getContext().toCharUnitsFromBits(AtomicSizeInBits).getQuantity(), in emitMemSetZeroIfNecessary()
377 static void emitAtomicCmpXchg(CodeGenFunction &CGF, AtomicExpr *E, bool IsWeak, in emitAtomicCmpXchg() argument
385 llvm::Value *Expected = CGF.Builder.CreateLoad(Val1); in emitAtomicCmpXchg()
386 llvm::Value *Desired = CGF.Builder.CreateLoad(Val2); in emitAtomicCmpXchg()
388 llvm::AtomicCmpXchgInst *Pair = CGF.Builder.CreateAtomicCmpXchg( in emitAtomicCmpXchg()
395 llvm::Value *Old = CGF.Builder.CreateExtractValue(Pair, 0); in emitAtomicCmpXchg()
396 llvm::Value *Cmp = CGF.Builder.CreateExtractValue(Pair, 1); in emitAtomicCmpXchg()
401 CGF.createBasicBlock("cmpxchg.store_expected", CGF.CurFn); in emitAtomicCmpXchg()
406 CGF.createBasicBlock("cmpxchg.continue", CGF.CurFn); in emitAtomicCmpXchg()
410 CGF.Builder.CreateCondBr(Cmp, ContinueBB, StoreExpectedBB); in emitAtomicCmpXchg()
412 CGF.Builder.SetInsertPoint(StoreExpectedBB); in emitAtomicCmpXchg()
414 CGF.Builder.CreateStore(Old, Val1); in emitAtomicCmpXchg()
416 CGF.Builder.CreateBr(ContinueBB); in emitAtomicCmpXchg()
418 CGF.Builder.SetInsertPoint(ContinueBB); in emitAtomicCmpXchg()
420 CGF.EmitStoreOfScalar(Cmp, CGF.MakeAddrLValue(Dest, E->getType())); in emitAtomicCmpXchg()
426 static void emitAtomicCmpXchgFailureSet(CodeGenFunction &CGF, AtomicExpr *E, in emitAtomicCmpXchgFailureSet() argument
459 emitAtomicCmpXchg(CGF, E, IsWeak, Dest, Ptr, Val1, Val2, Size, SuccessOrder, in emitAtomicCmpXchgFailureSet()
465 auto *MonotonicBB = CGF.createBasicBlock("monotonic_fail", CGF.CurFn); in emitAtomicCmpXchgFailureSet()
466 auto *AcquireBB = CGF.createBasicBlock("acquire_fail", CGF.CurFn); in emitAtomicCmpXchgFailureSet()
467 auto *SeqCstBB = CGF.createBasicBlock("seqcst_fail", CGF.CurFn); in emitAtomicCmpXchgFailureSet()
468 auto *ContBB = CGF.createBasicBlock("atomic.continue", CGF.CurFn); in emitAtomicCmpXchgFailureSet()
473 llvm::SwitchInst *SI = CGF.Builder.CreateSwitch(FailureOrderVal, MonotonicBB); in emitAtomicCmpXchgFailureSet()
475 SI->addCase(CGF.Builder.getInt32((int)llvm::AtomicOrderingCABI::consume), in emitAtomicCmpXchgFailureSet()
477 SI->addCase(CGF.Builder.getInt32((int)llvm::AtomicOrderingCABI::acquire), in emitAtomicCmpXchgFailureSet()
479 SI->addCase(CGF.Builder.getInt32((int)llvm::AtomicOrderingCABI::seq_cst), in emitAtomicCmpXchgFailureSet()
483 CGF.Builder.SetInsertPoint(MonotonicBB); in emitAtomicCmpXchgFailureSet()
484 emitAtomicCmpXchg(CGF, E, IsWeak, Dest, Ptr, Val1, Val2, in emitAtomicCmpXchgFailureSet()
486 CGF.Builder.CreateBr(ContBB); in emitAtomicCmpXchgFailureSet()
488 CGF.Builder.SetInsertPoint(AcquireBB); in emitAtomicCmpXchgFailureSet()
489 emitAtomicCmpXchg(CGF, E, IsWeak, Dest, Ptr, Val1, Val2, Size, SuccessOrder, in emitAtomicCmpXchgFailureSet()
491 CGF.Builder.CreateBr(ContBB); in emitAtomicCmpXchgFailureSet()
493 CGF.Builder.SetInsertPoint(SeqCstBB); in emitAtomicCmpXchgFailureSet()
494 emitAtomicCmpXchg(CGF, E, IsWeak, Dest, Ptr, Val1, Val2, Size, SuccessOrder, in emitAtomicCmpXchgFailureSet()
496 CGF.Builder.CreateBr(ContBB); in emitAtomicCmpXchgFailureSet()
498 CGF.Builder.SetInsertPoint(ContBB); in emitAtomicCmpXchgFailureSet()
525 static void EmitAtomicOp(CodeGenFunction &CGF, AtomicExpr *E, Address Dest, in EmitAtomicOp() argument
542 emitAtomicCmpXchgFailureSet(CGF, E, false, Dest, Ptr, Val1, Val2, in EmitAtomicOp()
548 emitAtomicCmpXchgFailureSet(CGF, E, true, Dest, Ptr, Val1, Val2, in EmitAtomicOp()
556 emitAtomicCmpXchgFailureSet(CGF, E, IsWeakC->getZExtValue(), Dest, Ptr, in EmitAtomicOp()
561 CGF.createBasicBlock("cmpxchg.strong", CGF.CurFn); in EmitAtomicOp()
562 llvm::BasicBlock *WeakBB = CGF.createBasicBlock("cmxchg.weak", CGF.CurFn); in EmitAtomicOp()
564 CGF.createBasicBlock("cmpxchg.continue", CGF.CurFn); in EmitAtomicOp()
566 llvm::SwitchInst *SI = CGF.Builder.CreateSwitch(IsWeak, WeakBB); in EmitAtomicOp()
567 SI->addCase(CGF.Builder.getInt1(false), StrongBB); in EmitAtomicOp()
569 CGF.Builder.SetInsertPoint(StrongBB); in EmitAtomicOp()
570 emitAtomicCmpXchgFailureSet(CGF, E, false, Dest, Ptr, Val1, Val2, in EmitAtomicOp()
572 CGF.Builder.CreateBr(ContBB); in EmitAtomicOp()
574 CGF.Builder.SetInsertPoint(WeakBB); in EmitAtomicOp()
575 emitAtomicCmpXchgFailureSet(CGF, E, true, Dest, Ptr, Val1, Val2, in EmitAtomicOp()
577 CGF.Builder.CreateBr(ContBB); in EmitAtomicOp()
579 CGF.Builder.SetInsertPoint(ContBB); in EmitAtomicOp()
590 llvm::LoadInst *Load = CGF.Builder.CreateLoad(Ptr); in EmitAtomicOp()
593 CGF.Builder.CreateStore(Load, Dest); in EmitAtomicOp()
604 llvm::Value *LoadVal1 = CGF.Builder.CreateLoad(Val1); in EmitAtomicOp()
605 llvm::StoreInst *Store = CGF.Builder.CreateStore(LoadVal1, Ptr); in EmitAtomicOp()
728 llvm::Value *LoadVal1 = CGF.Builder.CreateLoad(Val1); in EmitAtomicOp()
730 CGF.Builder.CreateAtomicRMW(Op, Ptr, LoadVal1, Order, Scope); in EmitAtomicOp()
737 Result = EmitPostAtomicMinMax(CGF.Builder, E->getOp(), in EmitAtomicOp()
741 Result = CGF.Builder.CreateBinOp((llvm::Instruction::BinaryOps)PostOp, RMWI, in EmitAtomicOp()
745 Result = CGF.Builder.CreateNot(Result); in EmitAtomicOp()
746 CGF.Builder.CreateStore(Result, Dest); in EmitAtomicOp()
752 EmitValToTemp(CodeGenFunction &CGF, Expr *E) { in EmitValToTemp() argument
753 Address DeclPtr = CGF.CreateMemTemp(E->getType(), ".atomictmp"); in EmitValToTemp()
754 CGF.EmitAnyExprToMem(E, DeclPtr, E->getType().getQualifiers(), in EmitValToTemp()
759 static void EmitAtomicOp(CodeGenFunction &CGF, AtomicExpr *Expr, Address Dest, in EmitAtomicOp() argument
769 EmitAtomicOp(CGF, Expr, Dest, Ptr, Val1, Val2, IsWeak, FailureOrder, Size, in EmitAtomicOp()
770 Order, CGF.CGM.getLLVMContext().getOrInsertSyncScopeID("")); in EmitAtomicOp()
776 auto SCID = CGF.getTargetHooks().getLLVMSyncScopeID( in EmitAtomicOp()
777 CGF.CGM.getLangOpts(), ScopeModel->map(SC->getZExtValue()), in EmitAtomicOp()
778 Order, CGF.CGM.getLLVMContext()); in EmitAtomicOp()
779 EmitAtomicOp(CGF, Expr, Dest, Ptr, Val1, Val2, IsWeak, FailureOrder, Size, in EmitAtomicOp()
785 auto &Builder = CGF.Builder; in EmitAtomicOp()
789 BB[S] = CGF.createBasicBlock(getAsString(ScopeModel->map(S)), CGF.CurFn); in EmitAtomicOp()
792 CGF.createBasicBlock("atomic.scope.continue", CGF.CurFn); in EmitAtomicOp()
805 EmitAtomicOp(CGF, Expr, Dest, Ptr, Val1, Val2, IsWeak, FailureOrder, Size, in EmitAtomicOp()
807 CGF.getTargetHooks().getLLVMSyncScopeID(CGF.CGM.getLangOpts(), in EmitAtomicOp()
810 CGF.getLLVMContext())); in EmitAtomicOp()
1354 llvm::IntegerType::get(CGF.getLLVMContext(), AtomicSizeInBits); in castToAtomicIntPointer()
1360 uint64_t SourceSizeInBits = CGF.CGM.getDataLayout().getTypeSizeInBits(Ty); in convertToAtomicIntPointer()
1363 CGF.Builder.CreateMemCpy(Tmp, Addr, in convertToAtomicIntPointer()
1381 addr = CGF.Builder.CreateStructGEP(addr, 0); in convertAtomicTempToRValue()
1385 return CGF.convertTempToRValue(addr, getValueType(), loc); in convertAtomicTempToRValue()
1389 return RValue::get(CGF.Builder.CreateLoad(addr)); in convertAtomicTempToRValue()
1391 return CGF.EmitLoadOfBitfieldLValue( in convertAtomicTempToRValue()
1395 return CGF.EmitLoadOfLValue( in convertAtomicTempToRValue()
1399 return CGF.EmitLoadOfExtVectorElementLValue(LValue::MakeExtVectorElt( in convertAtomicTempToRValue()
1430 ? CGF.ConvertTypeForMem(ValueTy) in ConvertToValueOrAtomic()
1435 return RValue::get(CGF.EmitFromMemory(Val, ValueTy)); in ConvertToValueOrAtomic()
1438 return RValue::get(CGF.Builder.CreateBitCast(Val, ValTy)); in ConvertToValueOrAtomic()
1455 CGF.Builder.CreateStore(Val, CastTemp)->setVolatile(TempIsVolatile); in ConvertToValueOrAtomic()
1464 Args.add(RValue::get(getAtomicSizeValue()), CGF.getContext().getSizeType()); in EmitAtomicLoadLibcall()
1465 Args.add(RValue::get(getAtomicPointer()), CGF.getContext().VoidPtrTy); in EmitAtomicLoadLibcall()
1466 Args.add(RValue::get(AddForLoaded), CGF.getContext().VoidPtrTy); in EmitAtomicLoadLibcall()
1468 RValue::get(llvm::ConstantInt::get(CGF.IntTy, (int)llvm::toCABI(AO))), in EmitAtomicLoadLibcall()
1469 CGF.getContext().IntTy); in EmitAtomicLoadLibcall()
1470 emitAtomicLibcall(CGF, "__atomic_load", CGF.getContext().VoidTy, Args); in EmitAtomicLoadLibcall()
1479 llvm::LoadInst *Load = CGF.Builder.CreateLoad(Addr, "atomic-load"); in EmitAtomicLoadOp()
1485 CGF.CGM.DecorateInstructionWithTBAA(Load, LVal.getTBAAInfo()); in EmitAtomicLoadOp()
1530 EmitAtomicLoadLibcall(TempAddr.emitRawPointer(CGF), AO, IsVolatile); in EmitAtomicLoad()
1567 LValue Dest = CGF.MakeAddrLValue(getAtomicAddress(), getAtomicType()); in emitCopyIntoMemory()
1568 LValue Src = CGF.MakeAddrLValue(rvalue.getAggregateAddress(), in emitCopyIntoMemory()
1572 CGF.EmitAggregateCopy(Dest, Src, getAtomicType(), in emitCopyIntoMemory()
1587 CGF.EmitStoreOfScalar(rvalue.getScalarVal(), TempLVal, /*init*/ true); in emitCopyIntoMemory()
1589 CGF.EmitStoreOfComplex(rvalue.getComplexVal(), TempLVal, /*init*/ true); in emitCopyIntoMemory()
1603 LValue TempLV = CGF.MakeAddrLValue(CreateTempAlloca(), getAtomicType()); in materializeRValue()
1604 AtomicInfo Atomics(CGF, TempLV); in materializeRValue()
1620 return CGF.EmitToMemory(Value, ValueTy); in convertRValueToInt()
1623 CGF.getLLVMContext(), in convertRValueToInt()
1626 return CGF.Builder.CreateBitCast(Value, InputIntTy); in convertRValueToInt()
1635 return CGF.Builder.CreateLoad(Addr); in convertRValueToInt()
1643 auto *Inst = CGF.Builder.CreateAtomicCmpXchg(Addr, ExpectedVal, DesiredVal, in EmitAtomicCompareExchangeOp()
1650 auto *PreviousVal = CGF.Builder.CreateExtractValue(Inst, /*Idxs=*/0); in EmitAtomicCompareExchangeOp()
1651 auto *SuccessFailureVal = CGF.Builder.CreateExtractValue(Inst, /*Idxs=*/1); in EmitAtomicCompareExchangeOp()
1663 Args.add(RValue::get(getAtomicSizeValue()), CGF.getContext().getSizeType()); in EmitAtomicCompareExchangeLibcall()
1664 Args.add(RValue::get(getAtomicPointer()), CGF.getContext().VoidPtrTy); in EmitAtomicCompareExchangeLibcall()
1665 Args.add(RValue::get(ExpectedAddr), CGF.getContext().VoidPtrTy); in EmitAtomicCompareExchangeLibcall()
1666 Args.add(RValue::get(DesiredAddr), CGF.getContext().VoidPtrTy); in EmitAtomicCompareExchangeLibcall()
1668 llvm::ConstantInt::get(CGF.IntTy, (int)llvm::toCABI(Success))), in EmitAtomicCompareExchangeLibcall()
1669 CGF.getContext().IntTy); in EmitAtomicCompareExchangeLibcall()
1671 llvm::ConstantInt::get(CGF.IntTy, (int)llvm::toCABI(Failure))), in EmitAtomicCompareExchangeLibcall()
1672 CGF.getContext().IntTy); in EmitAtomicCompareExchangeLibcall()
1673 auto SuccessFailureRVal = emitAtomicLibcall(CGF, "__atomic_compare_exchange", in EmitAtomicCompareExchangeLibcall()
1674 CGF.getContext().BoolTy, Args); in EmitAtomicCompareExchangeLibcall()
1686 llvm::Value *ExpectedPtr = ExpectedAddr.emitRawPointer(CGF); in EmitAtomicCompareExchange()
1687 llvm::Value *DesiredPtr = materializeRValue(Desired).emitRawPointer(CGF); in EmitAtomicCompareExchange()
1710 EmitAtomicUpdateValue(CodeGenFunction &CGF, AtomicInfo &Atomics, RValue OldRVal, in EmitAtomicUpdateValue() argument
1718 DesiredLVal = CGF.MakeAddrLValue(DesiredAddr, AtomicLVal.getType()); in EmitAtomicUpdateValue()
1751 UpRVal = CGF.EmitLoadOfLValue(UpdateLVal, SourceLocation()); in EmitAtomicUpdateValue()
1756 CGF.EmitStoreThroughLValue(NewRVal, DesiredLVal); in EmitAtomicUpdateValue()
1759 CGF.EmitStoreOfComplex(NewRVal.getComplexVal(), DesiredLVal, in EmitAtomicUpdateValue()
1771 EmitAtomicLoadLibcall(ExpectedAddr.emitRawPointer(CGF), AO, IsVolatile); in EmitAtomicUpdateLibcall()
1772 auto *ContBB = CGF.createBasicBlock("atomic_cont"); in EmitAtomicUpdateLibcall()
1773 auto *ExitBB = CGF.createBasicBlock("atomic_exit"); in EmitAtomicUpdateLibcall()
1774 CGF.EmitBlock(ContBB); in EmitAtomicUpdateLibcall()
1778 auto *OldVal = CGF.Builder.CreateLoad(ExpectedAddr); in EmitAtomicUpdateLibcall()
1779 CGF.Builder.CreateStore(OldVal, DesiredAddr); in EmitAtomicUpdateLibcall()
1784 EmitAtomicUpdateValue(CGF, *this, OldRVal, UpdateOp, DesiredAddr); in EmitAtomicUpdateLibcall()
1785 llvm::Value *ExpectedPtr = ExpectedAddr.emitRawPointer(CGF); in EmitAtomicUpdateLibcall()
1786 llvm::Value *DesiredPtr = DesiredAddr.emitRawPointer(CGF); in EmitAtomicUpdateLibcall()
1789 CGF.Builder.CreateCondBr(Res, ExitBB, ContBB); in EmitAtomicUpdateLibcall()
1790 CGF.EmitBlock(ExitBB, /*IsFinished=*/true); in EmitAtomicUpdateLibcall()
1801 auto *ContBB = CGF.createBasicBlock("atomic_cont"); in EmitAtomicUpdateOp()
1802 auto *ExitBB = CGF.createBasicBlock("atomic_exit"); in EmitAtomicUpdateOp()
1803 auto *CurBB = CGF.Builder.GetInsertBlock(); in EmitAtomicUpdateOp()
1804 CGF.EmitBlock(ContBB); in EmitAtomicUpdateOp()
1805 llvm::PHINode *PHI = CGF.Builder.CreatePHI(OldVal->getType(), in EmitAtomicUpdateOp()
1816 CGF.Builder.CreateStore(PHI, NewAtomicIntAddr); in EmitAtomicUpdateOp()
1821 EmitAtomicUpdateValue(CGF, *this, OldRVal, UpdateOp, NewAtomicAddr); in EmitAtomicUpdateOp()
1822 auto *DesiredVal = CGF.Builder.CreateLoad(NewAtomicIntAddr); in EmitAtomicUpdateOp()
1825 PHI->addIncoming(Res.first, CGF.Builder.GetInsertBlock()); in EmitAtomicUpdateOp()
1826 CGF.Builder.CreateCondBr(Res.second, ExitBB, ContBB); in EmitAtomicUpdateOp()
1827 CGF.EmitBlock(ExitBB, /*IsFinished=*/true); in EmitAtomicUpdateOp()
1830 static void EmitAtomicUpdateValue(CodeGenFunction &CGF, AtomicInfo &Atomics, in EmitAtomicUpdateValue() argument
1853 CGF.EmitStoreThroughLValue(UpdateRVal, DesiredLVal); in EmitAtomicUpdateValue()
1862 EmitAtomicLoadLibcall(ExpectedAddr.emitRawPointer(CGF), AO, IsVolatile); in EmitAtomicUpdateLibcall()
1863 auto *ContBB = CGF.createBasicBlock("atomic_cont"); in EmitAtomicUpdateLibcall()
1864 auto *ExitBB = CGF.createBasicBlock("atomic_exit"); in EmitAtomicUpdateLibcall()
1865 CGF.EmitBlock(ContBB); in EmitAtomicUpdateLibcall()
1869 auto *OldVal = CGF.Builder.CreateLoad(ExpectedAddr); in EmitAtomicUpdateLibcall()
1870 CGF.Builder.CreateStore(OldVal, DesiredAddr); in EmitAtomicUpdateLibcall()
1872 EmitAtomicUpdateValue(CGF, *this, UpdateRVal, DesiredAddr); in EmitAtomicUpdateLibcall()
1873 llvm::Value *ExpectedPtr = ExpectedAddr.emitRawPointer(CGF); in EmitAtomicUpdateLibcall()
1874 llvm::Value *DesiredPtr = DesiredAddr.emitRawPointer(CGF); in EmitAtomicUpdateLibcall()
1877 CGF.Builder.CreateCondBr(Res, ExitBB, ContBB); in EmitAtomicUpdateLibcall()
1878 CGF.EmitBlock(ExitBB, /*IsFinished=*/true); in EmitAtomicUpdateLibcall()
1888 auto *ContBB = CGF.createBasicBlock("atomic_cont"); in EmitAtomicUpdateOp()
1889 auto *ExitBB = CGF.createBasicBlock("atomic_exit"); in EmitAtomicUpdateOp()
1890 auto *CurBB = CGF.Builder.GetInsertBlock(); in EmitAtomicUpdateOp()
1891 CGF.EmitBlock(ContBB); in EmitAtomicUpdateOp()
1892 llvm::PHINode *PHI = CGF.Builder.CreatePHI(OldVal->getType(), in EmitAtomicUpdateOp()
1899 CGF.Builder.CreateStore(PHI, NewAtomicIntAddr); in EmitAtomicUpdateOp()
1901 EmitAtomicUpdateValue(CGF, *this, UpdateRVal, NewAtomicAddr); in EmitAtomicUpdateOp()
1902 auto *DesiredVal = CGF.Builder.CreateLoad(NewAtomicIntAddr); in EmitAtomicUpdateOp()
1905 PHI->addIncoming(Res.first, CGF.Builder.GetInsertBlock()); in EmitAtomicUpdateOp()
1906 CGF.Builder.CreateCondBr(Res.second, ExitBB, ContBB); in EmitAtomicUpdateOp()
1907 CGF.EmitBlock(ExitBB, /*IsFinished=*/true); in EmitAtomicUpdateOp()