Lines Matching defs:LValue
80 struct LValue;
91 /// Get an LValue path entry, which is known to not be an array index, as a
96 /// Get an LValue path entry, which is known to not be an array index, as a
101 /// Determine whether this LValue path entry for a base class names a virtual
191 /// Determines if an LValue with the given LValueBase will have an unsized
298 assert(V.isLValue() && "Non-LValue used to make an LValue designator?");
555 const LValue *This;
613 const FunctionDecl *Callee, const LValue *This,
648 ScopeKind Scope, LValue &LV);
654 APValue &createParam(CallRef Args, const ParmVarDecl *PVD, LValue &LV);
681 ThisOverrideRAII(CallStackFrame &Frame, const LValue *NewThis, bool Enable)
691 const LValue *OldThis;
722 const LValue &This, QualType ThisType);
1118 APValue *createHeapAlloc(const Expr *E, QualType T, LValue &LV);
1516 const FunctionDecl *Callee, const LValue *This,
1632 struct LValue {
1656 assert(!InvalidBase && "APValues can't handle invalid LValue bases");
1664 assert(V.isLValue() && "Setting LValue from a non-LValue?");
1712 // Check that this LValue is not based on a null pointer. If it is, produce
1741 // Check this LValue refers to an object. If not, set the designator to be
1908 const LValue &This, const Expr *E,
1910 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
1912 static bool EvaluatePointer(const Expr *E, LValue &Result, EvalInfo &Info,
1916 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info);
1922 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
1953 ScopeKind Scope, LValue &LV) {
1971 LValue &LV) {
2001 APValue *EvalInfo::createHeapAlloc(const Expr *E, QualType T, LValue &LV) {
2097 static bool IsOpaqueConstantCall(const LValue &LVal) {
2171 static const ValueDecl *GetLValueBaseDecl(const LValue &LVal) {
2183 static bool GetLValueBaseAsString(const EvalInfo &Info, const LValue &LVal,
2226 const LValue &LHS,
2227 const LValue &RHS) {
2262 static bool IsWeakLValue(const LValue &Value) {
2267 static bool isZeroSized(const LValue &Value) {
2278 static bool HasSameBase(const LValue &A, const LValue &B) {
2346 QualType Type, const LValue &LVal,
2536 const LValue *This = nullptr) {
2647 LValue LVal;
2740 case APValue::LValue:
3193 "A vector result that isn't a vector OR uncalculated LValue");
3248 static bool CastToDerivedClass(EvalInfo &Info, const Expr *E, LValue &Result,
3277 static bool HandleLValueDirectBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3291 static bool HandleLValueBase(EvalInfo &Info, const Expr *E, LValue &Obj,
3317 QualType Type, LValue &Result) {
3330 static bool CastToBaseClass(EvalInfo &Info, const Expr *E, LValue &Result,
3346 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal,
3362 LValue &LVal,
3411 LValue &LVal, QualType EltTy,
3422 LValue &LVal, QualType EltTy,
3434 LValue &LVal, QualType EltTy,
3447 LValue &LVal, QualType EltTy,
4281 /// Find the complete object to which an LValue refers.
4283 AccessKinds AK, const LValue &LVal,
4566 const LValue &LVal, APValue &RVal,
4621 // Fail for now for LValue to RValue conversion of an array.
4645 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal,
4692 case APValue::LValue:
4776 LValue LVal;
4791 const LValue &LVal, QualType LValType,
4849 case APValue::LValue:
4927 LValue LVal;
4939 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal,
4957 LValue &This) {
4981 /// the resulting LValue subobject designator. This is not possible when
4987 LValue &LV,
5028 // Extend the LValue path with the member pointer's path.
5069 LValue &LV,
5088 LValue &Result) {
5198 LValue Result;
5264 const LValue *Slot;
5980 static bool checkDynamicType(EvalInfo &Info, const Expr *E, const LValue &This,
6032 const LValue &This,
6058 LValue &This,
6120 EvalInfo &Info, const Expr *E, LValue &This, const CXXMethodDecl *Found,
6192 LValue LVal;
6226 LValue &Ptr) {
6375 const LValue &LHS) {
6479 LValue LV;
6552 LValue RefLValue;
6561 const FunctionDecl *Callee, const LValue *This,
6564 APValue &Result, const LValue *ResultSlot) {
6615 static bool HandleConstructorCall(const Expr *E, const LValue &This,
6713 LValue Subobject = This;
6714 LValue SubobjectParent = This;
6829 static bool HandleConstructorCall(const Expr *E, const LValue &This,
6843 const LValue &This, APValue &Value,
6870 LValue ElemLV = This;
6982 LValue Subobject = This;
7000 LValue Subobject = This;
7021 const LValue &This;
7044 const LValue &This, QualType ThisType) {
7059 LValue LV;
7066 LValue &Result) {
7147 const LValue &Pointer,
7205 LValue Pointer;
7337 case APValue::LValue:
7338 llvm_unreachable("LValue subobject in bit_cast?");
7907 LValue SourceLValue;
8092 LValue Obj;
8110 LValue CommonLV;
8177 LValue LV;
8202 const LValue *ResultSlot) {
8209 LValue *This = nullptr, ThisVal;
8246 LValue CalleeLV;
8347 LValue Ptr;
8503 LValue LVal;
8543 LValue LVal;
8623 LValue &Result;
8633 bool evaluatePointer(const Expr *E, LValue &Result) {
8638 LValueExprEvaluatorBase(EvalInfo &Info, LValue &Result, bool InvalidBaseOK)
8723 // LValue Evaluation
8729 // LValue evaluation produces values comprising a base expression of one of the
8759 LValueExprEvaluator(EvalInfo &Info, LValue &Result, bool InvalidBaseOK) :
8820 static bool HandleLambdaCapture(EvalInfo &Info, const Expr *E, LValue &Result,
8872 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
9353 const LValue &LVal,
9367 LValue &Result) {
9389 // Store E instead of E unwrapped so that the type of the LValue's base is
9401 LValue &Result;
9409 bool evaluateLValue(const Expr *E, LValue &Result) {
9413 bool evaluatePointer(const Expr *E, LValue &Result) {
9420 PointerExprEvaluator(EvalInfo &info, LValue &Result, bool InvalidBaseOK)
9536 static bool EvaluatePointer(const Expr* E, LValue& Result, EvalInfo &Info,
9730 LValue LVal;
9793 static CharUnits getBaseAlignment(EvalInfo &Info, const LValue &Value) {
9872 LValue OffsetResult(Result);
10091 LValue Dest = Result;
10093 LValue Src;
10216 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
10219 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
10251 LValue Nothrow;
10544 const LValue &This;
10548 RecordExprEvaluator(EvalInfo &info, const LValue &This, APValue &Result)
10588 const LValue &This, APValue &Result) {
10602 LValue Subobject = This;
10616 LValue Subobject = This;
10643 LValue Subobject = This;
10733 LValue Subobject = This;
10763 LValue Subobject = This;
10786 LValue Subobject = This;
10907 LValue Array;
10980 LValue Subobject = This;
10995 static bool EvaluateRecord(const Expr *E, const LValue &This,
11014 TemporaryExprEvaluator(EvalInfo &Info, LValue &Result) :
11052 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info) {
11333 // FIXME: This vector evaluator someday needs to be changed to be LValue
11334 // aware/keep LValue information around, rather than dealing with just vector
11336 // these unary operators is an LValue. The only case I've been able to see
11549 const LValue &This;
11553 ArrayExprEvaluator(EvalInfo &Info, const LValue &This, APValue &Result)
11582 LValue Subobject = This;
11596 const LValue &Subobject,
11611 static bool EvaluateArray(const Expr *E, const LValue &This,
11619 static bool EvaluateArrayNewInitList(EvalInfo &Info, LValue &This,
11629 static bool EvaluateArrayNewConstructExpr(EvalInfo &Info, LValue &This,
11732 LValue Subobject = This;
11794 LValue CommonLV;
11808 LValue Subobject = This;
11844 const LValue &Subobject,
11864 LValue ArrayElt = Subobject;
12465 if (V.getKind() == APValue::LValue)
12521 /// Checks to see if the given LValue's Designator is at the end of the LValue's
12536 static bool isDesignatorAtObjectEnd(const ASTContext &Ctx, const LValue &LVal) {
12606 /// Tests to see if the LValue has a user-specified designator (that isn't
12607 /// necessarily valid). Note that this always returns 'true' if the LValue has
12610 static bool refersToCompleteObject(const LValue &LVal) {
12628 static bool isUserWritingOffTheEnd(const ASTContext &Ctx, const LValue &LVal) {
12683 const LValue &LV, CharUnits &Size) {
12692 /// Helper for tryEvaluateBuiltinObjectSize -- Given an LValue, this will
12695 /// on what the LValue looks like + the value of Type.
12699 unsigned Type, const LValue &LVal,
12789 LValue LVal;
12843 LValue Ptr;
12911 LValue Ptr;
13389 LValue String1, String2;
13551 LValue CarryOutLValue;
13615 LValue ResultLValue;
13773 LValue ResultLValue;
13891 const LValue &LV) {
14295 LValue LV;
14370 LValue LHSValue, RHSValue;
14583 LValue Res;
14621 LValue LV;
14690 LValue LHSValue, RHSValue;
15161 LValue LV;
16336 const LValue *This;
16339 AtomicExprEvaluator(EvalInfo &Info, const LValue *This, APValue &Result)
16371 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
16439 LValue Pointer;
16514 LValue LV;
16525 LValue LV;
16548 LValue LV;
16555 LValue LV;
16570 LValue LV;
16594 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info, const LValue &This,
16643 LValue LV;
16833 LValue LV;
16857 LValue LVal;
16906 LValue LVal;
16977 LValue LVal;
17697 LValue ThisVal;
17698 const LValue *ThisPtr = nullptr;
17785 LValue This;
17847 LValue String;
17909 LValue String;
17975 LValue Val;