Lines Matching defs:LValue
74 struct LValue;
85 /// Get an LValue path entry, which is known to not be an array index, as a
90 /// Get an LValue path entry, which is known to not be an array index, as a
95 /// Determine whether this LValue path entry for a base class names a virtual
185 /// Determines if an LValue with the given LValueBase will have an unsized
239 /// and we cannot perform lvalue-to-rvalue conversions on them.
284 assert(V.isLValue() && "Non-LValue used to make an LValue designator?");
531 const LValue *This;
585 const FunctionDecl *Callee, const LValue *This,
625 ScopeKind Scope, LValue &LV);
628 APValue &createParam(CallRef Args, const ParmVarDecl *PVD, LValue &LV);
651 ThisOverrideRAII(CallStackFrame &Frame, const LValue *NewThis, bool Enable)
661 const LValue *OldThis;
666 const LValue &This, QualType ThisType);
1035 APValue *createHeapAlloc(const Expr *E, QualType T, LValue &LV);
1438 const FunctionDecl *Callee, const LValue *This,
1549 struct LValue {
1570 assert(!InvalidBase && "APValues can't handle invalid LValue bases");
1576 assert(V.isLValue() && "Setting LValue from a non-LValue?");
1621 // Check that this LValue is not based on a null pointer. If it is, produce
1650 // Check this LValue refers to an object. If not, set the designator to be
1812 const LValue &This, const Expr *E,
1814 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
1816 static bool EvaluatePointer(const Expr *E, LValue &Result, EvalInfo &Info,
1820 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info);
1826 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
1854 ScopeKind Scope, LValue &LV) {
1863 LValue &LV) {
1875 assert(Base.getCallIndex() == Index && "lvalue for wrong frame");
1893 APValue *EvalInfo::createHeapAlloc(const Expr *E, QualType T, LValue &LV) {
2019 // We can never form an lvalue with an implicit value initialization as its
2023 // an expression might be a global lvalue.
2028 static const ValueDecl *GetLValueBaseDecl(const LValue &LVal) {
2032 static bool IsLiteralLValue(const LValue &Value) {
2039 static bool IsWeakLValue(const LValue &Value) {
2044 static bool isZeroSized(const LValue &Value) {
2055 static bool HasSameBase(const LValue &A, const LValue &B) {
2070 assert(Base && "no location for a null lvalue");
2122 QualType Type, const LValue &LVal,
2199 "have call index for global lvalue");
2302 const LValue *This = nullptr) {
2398 LValue LVal;
2429 /// an lvalue-to-rvalue conversion.
2489 case APValue::LValue:
2508 assert(E->isRValue() && "missing lvalue-to-rvalue conv in bool condition");
2644 assert(Value.isLValue() && "integral value neither int nor lvalue?");
2968 "A vector result that isn't a vector OR uncalculated LValue");
3021 /// Cast an lvalue referring to a base subobject to a derived class, by
3022 /// truncating the lvalue's path to the given length.
3023 static bool CastToDerivedClass(EvalInfo &Info, const Expr *E, LValue &Result,
3052 static bool HandleLValueDirectBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3066 static bool HandleLValueBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3092 QualType Type, LValue &Result) {
3104 /// Cast an lvalue referring to a derived class to a known base subobject.
3105 static bool CastToBaseClass(EvalInfo &Info, const Expr *E, LValue &Result,
3121 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal,
3137 LValue &LVal,
3178 LValue &LVal, QualType EltTy,
3189 LValue &LVal, QualType EltTy,
3195 /// Update an lvalue to refer to a component of a complex number.
3197 /// \param LVal - The lvalue to be updated.
3201 LValue &LVal, QualType EltTy,
3437 /// Determine whether a type would actually be read by an lvalue-to-rvalue
3942 /// Find the complete object to which an LValue refers.
3944 AccessKinds AK, const LValue &LVal,
3971 // C++11 DR1311: An lvalue-to-rvalue conversion on a volatile-qualified type
4128 // an lvalue-to-rvalue conversion [is not allowed unless it applies to]
4194 /// Perform an lvalue-to-rvalue conversion on the given glvalue. This
4195 /// can also be used for 'lvalue-to-lvalue' conversions for looking up the
4210 const LValue &LVal, APValue &RVal,
4223 // In C99, a CompoundLiteralExpr is an lvalue, and we defer evaluating the
4241 // Fail for now for LValue to RValue conversion of an array.
4265 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal,
4312 case APValue::LValue:
4391 LValue LVal;
4406 const LValue &LVal, QualType LValType,
4464 case APValue::LValue:
4540 LValue LVal;
4552 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal,
4568 /// Build an lvalue for the object argument of a member function call.
4570 LValue &This) {
4585 /// lvalue referring to the result.
4588 /// \param LV - An lvalue referring to the base of the member pointer.
4591 /// the resulting LValue subobject designator. This is not possible when
4597 LValue &LV,
4633 // Truncate the lvalue to the appropriate derived class.
4638 // Extend the LValue path with the member pointer's path.
4647 // The first class in the path is that of the lvalue.
4679 LValue &LV,
4696 /// the provided lvalue, which currently refers to the base object.
4698 LValue &Result) {
4729 // Truncate the lvalue to the appropriate derived class.
4800 LValue Result;
4866 const LValue *Slot;
5514 static bool checkDynamicType(EvalInfo &Info, const Expr *E, const LValue &This,
5527 // are. We can still check for a one-past-the-end lvalue.
5557 const LValue &This,
5567 /// The corresponding path length in the lvalue.
5582 LValue &This, AccessKinds AK) {
5583 // If we don't have an lvalue denoting an object of class type, there is no
5637 EvalInfo &Info, const Expr *E, LValue &This, const CXXMethodDecl *Found,
5709 LValue LVal;
5738 /// Apply the given dynamic cast operation on the provided lvalue.
5743 LValue &Ptr) {
5891 const LValue &LHS) {
5989 LValue LV;
6062 LValue RefLValue;
6071 const FunctionDecl *Callee, const LValue *This,
6074 APValue &Result, const LValue *ResultSlot) {
6128 static bool HandleConstructorCall(const Expr *E, const LValue &This,
6174 // lvalue-to-rvalue conversion on them because their copy constructor does not
6226 LValue Subobject = This;
6227 LValue SubobjectParent = This;
6341 static bool HandleConstructorCall(const Expr *E, const LValue &This,
6355 const LValue &This, APValue &Value,
6378 LValue ElemLV = This;
6485 LValue Subobject = This;
6503 LValue Subobject = This;
6524 const LValue &This;
6547 const LValue &This, QualType ThisType) {
6562 LValue LV;
6569 LValue &Result) {
6651 const LValue &Pointer,
6709 LValue Pointer;
6840 case APValue::LValue:
6841 llvm_unreachable("LValue subobject in bit_cast?");
7228 "LValueToRValueBitcast requires an lvalue operand!");
7233 LValue SourceLValue;
7417 LValue Obj;
7435 LValue CommonLV;
7501 LValue LV;
7526 const LValue *ResultSlot) {
7533 LValue *This = nullptr, ThisVal;
7570 LValue CalleeLV;
7648 LValue Ptr;
7747 // Note: there is no lvalue base here. But this case should only ever
7804 LValue LVal;
7844 LValue LVal;
7913 // Common base class for lvalue and temporary evaluation.
7920 LValue &Result;
7930 bool evaluatePointer(const Expr *E, LValue &Result) {
7935 LValueExprEvaluatorBase(EvalInfo &Info, LValue &Result, bool InvalidBaseOK)
8020 // LValue Evaluation
8026 // LValue evaluation produces values comprising a base expression of one of the
8056 LValueExprEvaluator(EvalInfo &Info, LValue &Result, bool InvalidBaseOK) :
8110 /// Evaluate an expression as an lvalue. This can be legitimately called on
8115 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
8264 // Adjust our lvalue to refer to the desired subobject.
8296 "lvalue compound literal in c++?");
8297 // Defer visiting the literal until the lvalue-to-rvalue conversion. We can
8393 "lvalue __imag__ on scalar?");
8427 // The overall lvalue result is the result of evaluating the LHS.
8520 const LValue &LVal,
8534 LValue &Result) {
8556 // Store E instead of E unwrapped so that the type of the LValue's base is
8568 LValue &Result;
8576 bool evaluateLValue(const Expr *E, LValue &Result) {
8580 bool evaluatePointer(const Expr *E, LValue &Result) {
8587 PointerExprEvaluator(EvalInfo &info, LValue &Result, bool InvalidBaseOK)
8676 static bool EvaluatePointer(const Expr* E, LValue& Result, EvalInfo &Info,
8796 // Cast is of an lvalue, no need to change value.
8825 LValue LVal;
8890 static CharUnits getBaseAlignment(EvalInfo &Info, const LValue &Value) {
8968 LValue OffsetResult(Result);
9191 LValue Dest = Result;
9193 LValue Src;
9316 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
9319 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
9364 LValue Nothrow;
9629 const LValue &This;
9633 RecordExprEvaluator(EvalInfo &info, const LValue &This, APValue &Result)
9670 const LValue &This, APValue &Result) {
9684 LValue Subobject = This;
9698 LValue Subobject = This;
9725 LValue Subobject = This;
9801 LValue Subobject = This;
9831 LValue Subobject = This;
9854 LValue Subobject = This;
9955 LValue Array;
10038 LValue Subobject = This;
10054 static bool EvaluateRecord(const Expr *E, const LValue &This,
10073 TemporaryExprEvaluator(EvalInfo &Info, LValue &Result) :
10111 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info) {
10340 const LValue &This;
10344 ArrayExprEvaluator(EvalInfo &Info, const LValue &This, APValue &Result)
10373 LValue Subobject = This;
10387 const LValue &Subobject,
10397 static bool EvaluateArray(const Expr *E, const LValue &This,
10404 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
10414 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
10490 LValue Subobject = This;
10516 LValue CommonLV;
10530 LValue Subobject = This;
10553 const LValue &Subobject,
10573 LValue ArrayElt = Subobject;
10597 // either as an integer-valued APValue, or as an lvalue-valued APValue.
10791 /// an integer rvalue to produce a pointer (represented as an lvalue) instead.
11130 if (V.getKind() == APValue::LValue)
11186 /// Checks to see if the given LValue's Designator is at the end of the LValue's
11201 static bool isDesignatorAtObjectEnd(const ASTContext &Ctx, const LValue &LVal) {
11271 /// Tests to see if the LValue has a user-specified designator (that isn't
11272 /// necessarily valid). Note that this always returns 'true' if the LValue has
11275 static bool refersToCompleteObject(const LValue &LVal) {
11293 static bool isUserWritingOffTheEnd(const ASTContext &Ctx, const LValue &LVal) {
11323 /// Helper for tryEvaluateBuiltinObjectSize -- Given an LValue, this will
11326 /// on what the LValue looks like + the value of Type.
11330 unsigned Type, const LValue &LVal,
11414 LValue LVal;
11469 LValue Ptr;
11537 LValue Ptr;
11816 LValue String;
11880 LValue String1, String2;
12037 LValue ResultLValue;
12137 /// object referred to by the lvalue.
12139 const LValue &LV) {
12326 assert(!LVal.hasLValuePath() && "have designator for integer lvalue");
12539 LValue LV;
12614 LValue LHSValue, RHSValue;
12829 LValue LV;
12843 // assignment is an lvalue in C++.
12893 LValue LHSValue, RHSValue;
13266 LValue LV;
13271 // Only allow based lvalue casts if they are lossless.
14321 const LValue *This;
14324 AtomicExprEvaluator(EvalInfo &Info, const LValue *This, APValue &Result)
14353 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
14420 LValue Pointer;
14495 LValue LV;
14506 LValue LV;
14529 LValue LV;
14536 LValue LV;
14551 LValue LV;
14574 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info, const LValue &This,
14601 /// lvalue-to-rvalue cast if it is an lvalue.
14618 LValue LV;
14713 /// in Result. If this expression is a glvalue, an lvalue-to-rvalue conversion
14779 LValue LV;
14803 LValue LVal;
14837 LValue LVal;
14897 LValue LVal;
15245 lvalue operand.
15292 // contain an lvalue operand.
15581 LValue ThisVal;
15582 const LValue *ThisPtr = nullptr;
15659 LValue This;