Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:lvalue

40     LValue LVal;
43 AtomicInfo(CodeGenFunction &CGF, LValue &lvalue)
46 assert(!lvalue.isGlobalReg());
48 if (lvalue.isSimple()) {
49 AtomicTy = lvalue.getType();
71 if (lvalue.getAlignment().isZero())
72 lvalue.setAlignment(AtomicAlign);
74 LVal = lvalue;
75 } else if (lvalue.isBitField()) {
76 ValueTy = lvalue.getType();
78 auto &OrigBFI = lvalue.getBitFieldInfo();
79 auto Offset = OrigBFI.Offset % C.toBits(lvalue.getAlignment());
82 .alignTo(lvalue.getAlignment()));
83 auto VoidPtrAddr = CGF.EmitCastToVoidPtr(lvalue.getBitFieldPointer());
85 (C.toCharUnitsFromBits(OrigBFI.Offset) / lvalue.getAlignment()) *
86 lvalue.getAlignment();
97 LVal = LValue::MakeBitfield(Address(Addr, lvalue.getAlignment()),
98 BFI, lvalue.getType(), lvalue.getBaseInfo(),
99 lvalue.getTBAAInfo());
109 AtomicAlign = ValueAlign = lvalue.getAlignment();
110 } else if (lvalue.isVectorElt()) {
111 ValueTy = lvalue.getType()->castAs<VectorType>()->getElementType();
113 AtomicTy = lvalue.getType();
115 AtomicAlign = ValueAlign = lvalue.getAlignment();
116 LVal = lvalue;
118 assert(lvalue.isExtVectorElt());
119 ValueTy = lvalue.getType();
122 lvalue.getType(), cast<llvm::FixedVectorType>(
123 lvalue.getExtVectorAddress().getElementType())
126 AtomicAlign = ValueAlign = lvalue.getAlignment();
127 LVal = lvalue;
130 AtomicSizeInBits, C.toBits(lvalue.getAlignment()));
140 const LValue &getAtomicLValue() const { return LVal; }
200 LValue projectValue() const {
206 return LValue::MakeAddr(addr, getValueType(), CGF.getContext(),
234 /// \param UpdateOp Update operation for the current lvalue.
799 LValue lvalue = MakeAddrLValue(Ptr, AtomicTy);
800 EmitAtomicInit(E->getVal1(), lvalue);
937 LValue AtomicVal = MakeAddrLValue(Ptr, AtomicTy);
1455 LValue::MakeBitfield(addr, LVal.getBitFieldInfo(), LVal.getType(),
1459 LValue::MakeVectorElt(addr, LVal.getVectorIdx(), LVal.getType(),
1462 return CGF.EmitLoadOfExtVectorElementLValue(LValue::MakeExtVectorElt(
1539 /// An LValue is a candidate for having its loads and stores be made atomic if
1540 /// we are operating under /volatile:ms *and* the LValue itself is volatile and
1542 bool CodeGenFunction::LValueIsSuitableForInlineAtomic(LValue LV) {
1555 RValue CodeGenFunction::EmitAtomicLoad(LValue LV, SourceLocation SL,
1601 RValue CodeGenFunction::EmitAtomicLoad(LValue src, SourceLocation loc,
1617 LValue Dest = CGF.MakeAddrLValue(getAtomicAddress(), getAtomicType());
1618 LValue Src = CGF.MakeAddrLValue(rvalue.getAggregateAddress(),
1633 LValue TempLVal = projectValue();
1653 LValue TempLV = CGF.MakeAddrLValue(CreateTempAlloca(), getAtomicType());
1769 LValue AtomicLVal = Atomics.getAtomicLValue();
1770 LValue DesiredLVal;
1775 // Build new lvalue for temp address.
1777 LValue UpdateLVal;
1780 LValue::MakeBitfield(Ptr, AtomicLVal.getBitFieldInfo(),
1785 LValue::MakeBitfield(DesiredAddr, AtomicLVal.getBitFieldInfo(),
1789 UpdateLVal = LValue::MakeVectorElt(Ptr, AtomicLVal.getVectorIdx(),
1793 DesiredLVal = LValue::MakeVectorElt(
1798 UpdateLVal = LValue::MakeExtVectorElt(Ptr, AtomicLVal.getExtVectorElts(),
1802 DesiredLVal = LValue::MakeExtVectorElt(
1882 LValue AtomicLVal = Atomics.getAtomicLValue();
1883 LValue DesiredLVal;
1884 // Build new lvalue for temp address.
1887 LValue::MakeBitfield(DesiredAddr, AtomicLVal.getBitFieldInfo(),
1892 LValue::MakeVectorElt(DesiredAddr, AtomicLVal.getVectorIdx(),
1897 DesiredLVal = LValue::MakeExtVectorElt(
1979 void CodeGenFunction::EmitAtomicStore(RValue rvalue, LValue lvalue,
1981 bool IsVolatile = lvalue.isVolatileQualified();
1983 if (lvalue.getType()->isAtomicType()) {
1989 return EmitAtomicStore(rvalue, lvalue, AO, IsVolatile, isInit);
1997 void CodeGenFunction::EmitAtomicStore(RValue rvalue, LValue dest,
2007 LValue LVal = atomics.getAtomicLValue();
2068 LValue Obj, RValue Expected, RValue Desired, SourceLocation Loc,
2086 LValue LVal, llvm::AtomicOrdering AO,
2092 void CodeGenFunction::EmitAtomicInit(Expr *init, LValue dest) {