Lines Matching refs:LVal
1749 static const ValueDecl *GetLValueBaseDecl(const LValue &LVal) { in GetLValueBaseDecl() argument
1750 return LVal.Base.dyn_cast<const ValueDecl*>(); in GetLValueBaseDecl()
1811 QualType Type, const LValue &LVal, in CheckLValueConstantExpression() argument
1815 APValue::LValueBase Base = LVal.getLValueBase(); in CheckLValueConstantExpression()
1816 const SubobjectDesignator &Designator = LVal.getLValueDesignator(); in CheckLValueConstantExpression()
1835 LVal.getLValueCallIndex() == 0) && in CheckLValueConstantExpression()
1996 LValue LVal; in CheckConstantExpression() local
1997 LVal.setFrom(Info.Ctx, Value); in CheckConstantExpression()
1998 return CheckLValueConstantExpression(Info, DiagLoc, Type, LVal, Usage); in CheckConstantExpression()
2433 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal, in HandleLValueMember() argument
2442 LVal.adjustOffset(Info.Ctx.toCharUnitsFromBits(RL->getFieldOffset(I))); in HandleLValueMember()
2443 LVal.addDecl(Info, E, FD); in HandleLValueMember()
2449 LValue &LVal, in HandleLValueIndirectMember() argument
2452 if (!HandleLValueMember(Info, E, LVal, cast<FieldDecl>(C))) in HandleLValueIndirectMember()
2490 LValue &LVal, QualType EltTy, in HandleLValueArrayAdjustment() argument
2496 LVal.adjustOffsetAndIndex(Info, E, Adjustment, SizeOfPointee); in HandleLValueArrayAdjustment()
2501 LValue &LVal, QualType EltTy, in HandleLValueArrayAdjustment() argument
2503 return HandleLValueArrayAdjustment(Info, E, LVal, EltTy, in HandleLValueArrayAdjustment()
2513 LValue &LVal, QualType EltTy, in HandleLValueComplexElement() argument
2519 LVal.Offset += SizeOfComponent; in HandleLValueComplexElement()
2521 LVal.addComplex(Info, E, EltTy, Imag); in HandleLValueComplexElement()
2526 QualType Type, const LValue &LVal,
2539 APValue *&Result, const LValue *LVal) { in evaluateVarDeclInit() argument
2558 Result = LVal ? Frame->getTemporary(VD, LVal->getLValueVersion()) in evaluateVarDeclInit()
3129 AccessKinds AK, const LValue &LVal, in findCompleteObject() argument
3131 if (!LVal.Base) { in findCompleteObject()
3137 if (LVal.getLValueCallIndex()) { in findCompleteObject()
3138 Frame = Info.getCallFrame(LVal.getLValueCallIndex()); in findCompleteObject()
3141 << AK << LVal.Base.is<const ValueDecl*>(); in findCompleteObject()
3142 NoteLValueLocation(Info, LVal.Base); in findCompleteObject()
3162 QualType BaseType = getType(LVal.Base); in findCompleteObject()
3165 if (const ValueDecl *D = LVal.Base.dyn_cast<const ValueDecl*>()) { in findCompleteObject()
3251 if (!evaluateVarDeclInit(Info, E, VD, Frame, BaseVal, &LVal)) in findCompleteObject()
3254 const Expr *Base = LVal.Base.dyn_cast<const Expr*>(); in findCompleteObject()
3294 BaseVal = Frame->getTemporary(Base, LVal.Base.getVersion()); in findCompleteObject()
3314 if (Info.isEvaluatingConstructor(LVal.getLValueBase(), in findCompleteObject()
3315 LVal.getLValueCallIndex(), in findCompleteObject()
3316 LVal.getLValueVersion())) { in findCompleteObject()
3348 const LValue &LVal, APValue &RVal) { in handleLValueToRValueConversion() argument
3349 if (LVal.Designator.Invalid) in handleLValueToRValueConversion()
3353 const Expr *Base = LVal.Base.dyn_cast<const Expr*>(); in handleLValueToRValueConversion()
3354 if (Base && !LVal.getLValueCallIndex() && !Type.isVolatileQualified()) { in handleLValueToRValueConversion()
3367 return extractSubobject(Info, Conv, LitObj, LVal.Designator, RVal); in handleLValueToRValueConversion()
3374 return extractSubobject(Info, Conv, StrObj, LVal.Designator, RVal); in handleLValueToRValueConversion()
3378 CompleteObject Obj = findCompleteObject(Info, Conv, AK_Read, LVal, Type); in handleLValueToRValueConversion()
3379 return Obj && extractSubobject(Info, Conv, Obj, LVal.Designator, RVal); in handleLValueToRValueConversion()
3383 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal, in handleAssignment() argument
3385 if (LVal.Designator.Invalid) in handleAssignment()
3393 CompleteObject Obj = findCompleteObject(Info, E, AK_Assign, LVal, LValType); in handleAssignment()
3394 return Obj && modifySubobject(Info, E, Obj, LVal.Designator, Val); in handleAssignment()
3493 LValue LVal; in foundPointer() local
3494 LVal.setFrom(Info.Ctx, Subobj); in foundPointer()
3495 if (!HandleLValueArrayAdjustment(Info, E, LVal, PointeeType, Offset)) in foundPointer()
3497 LVal.moveInto(Subobj); in foundPointer()
3511 const LValue &LVal, QualType LValType, QualType PromotedLValType, in handleCompoundAssignment() argument
3513 if (LVal.Designator.Invalid) in handleCompoundAssignment()
3521 CompleteObject Obj = findCompleteObject(Info, E, AK_Assign, LVal, LValType); in handleCompoundAssignment()
3524 return Obj && findSubobject(Info, E, Obj, LVal.Designator, Handler); in handleCompoundAssignment()
3643 LValue LVal; in foundPointer() local
3644 LVal.setFrom(Info.Ctx, Subobj); in foundPointer()
3645 if (!HandleLValueArrayAdjustment(Info, E, LVal, PointeeType, in foundPointer()
3648 LVal.moveInto(Subobj); in foundPointer()
3658 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal, in handleIncDec() argument
3660 if (LVal.Designator.Invalid) in handleIncDec()
3669 CompleteObject Obj = findCompleteObject(Info, E, AK, LVal, LValType); in handleIncDec()
3671 return Obj && findSubobject(Info, E, Obj, LVal.Designator, Handler); in handleIncDec()
5062 LValue LVal; in VisitCastExpr() local
5063 if (!EvaluateLValue(E->getSubExpr(), LVal, Info)) in VisitCastExpr()
5068 LVal, RVal)) in VisitCastExpr()
5087 LValue LVal; in VisitUnaryPostIncDec() local
5088 if (!EvaluateLValue(UO->getSubExpr(), LVal, Info)) in VisitUnaryPostIncDec()
5091 if (!handleIncDec(this->Info, UO, LVal, UO->getSubExpr()->getType(), in VisitUnaryPostIncDec()
5699 const LValue &LVal, in getBytesReturnedByAllocSizeCall() argument
5701 assert(isBaseAnAllocSizeCall(LVal.getLValueBase()) && in getBytesReturnedByAllocSizeCall()
5703 const auto *Base = LVal.getLValueBase().get<const Expr *>(); in getBytesReturnedByAllocSizeCall()
5973 LValue LVal; in VisitCastExpr() local
5974 if (!evaluateLValue(E->getSubExpr(), LVal)) in VisitCastExpr()
5980 LVal, RVal)) in VisitCastExpr()
5982 evaluateLValueAsAllocSize(Info, LVal.Base, Result); in VisitCastExpr()
7896 static bool isDesignatorAtObjectEnd(const ASTContext &Ctx, const LValue &LVal) { in isDesignatorAtObjectEnd() argument
7897 assert(!LVal.Designator.Invalid); in isDesignatorAtObjectEnd()
7908 auto &Base = LVal.getLValueBase(); in isDesignatorAtObjectEnd()
7925 if (LVal.Designator.FirstEntryIsAnUnsizedArray) { in isDesignatorAtObjectEnd()
7935 for (unsigned E = LVal.Designator.Entries.size(); I != E; ++I) { in isDesignatorAtObjectEnd()
7936 const auto &Entry = LVal.Designator.Entries[I]; in isDesignatorAtObjectEnd()
7970 static bool refersToCompleteObject(const LValue &LVal) { in refersToCompleteObject() argument
7971 if (LVal.Designator.Invalid) in refersToCompleteObject()
7974 if (!LVal.Designator.Entries.empty()) in refersToCompleteObject()
7975 return LVal.Designator.isMostDerivedAnUnsizedArray(); in refersToCompleteObject()
7977 if (!LVal.InvalidBase) in refersToCompleteObject()
7982 const auto *E = LVal.Base.dyn_cast<const Expr *>(); in refersToCompleteObject()
7988 static bool isUserWritingOffTheEnd(const ASTContext &Ctx, const LValue &LVal) { in isUserWritingOffTheEnd() argument
7989 const SubobjectDesignator &Designator = LVal.Designator; in isUserWritingOffTheEnd()
8001 return LVal.InvalidBase && in isUserWritingOffTheEnd()
8004 isDesignatorAtObjectEnd(Ctx, LVal); in isUserWritingOffTheEnd()
8025 unsigned Type, const LValue &LVal, in determineEndOffset() argument
8027 bool DetermineForCompleteObject = refersToCompleteObject(LVal); in determineEndOffset()
8038 if (!(Type & 1) || LVal.Designator.Invalid || DetermineForCompleteObject) { in determineEndOffset()
8044 if (isBaseAnAllocSizeCall(LVal.getLValueBase()) && in determineEndOffset()
8045 getBytesReturnedByAllocSizeCall(Info.Ctx, LVal, APEndOffset)) in determineEndOffset()
8048 if (LVal.InvalidBase) in determineEndOffset()
8051 QualType BaseTy = getObjectType(LVal.getLValueBase()); in determineEndOffset()
8056 const SubobjectDesignator &Designator = LVal.Designator; in determineEndOffset()
8065 if (isUserWritingOffTheEnd(Info.Ctx, LVal)) { in determineEndOffset()
8069 if (isBaseAnAllocSizeCall(LVal.getLValueBase()) && in determineEndOffset()
8070 getBytesReturnedByAllocSizeCall(Info.Ctx, LVal, APEndOffset)) in determineEndOffset()
8097 EndOffset = LVal.getLValueOffset() + BytesPerElem * ElemsRemaining; in determineEndOffset()
8109 LValue LVal; in tryEvaluateBuiltinObjectSize() local
8123 LVal.setFrom(Info.Ctx, RVal); in tryEvaluateBuiltinObjectSize()
8124 } else if (!EvaluatePointer(ignorePointerCastsAndParens(E), LVal, Info, in tryEvaluateBuiltinObjectSize()
8131 if (LVal.getLValueOffset().isNegative()) { in tryEvaluateBuiltinObjectSize()
8137 if (!determineEndOffset(Info, E->getExprLoc(), Type, LVal, EndOffset)) in tryEvaluateBuiltinObjectSize()
8142 if (EndOffset <= LVal.getLValueOffset()) in tryEvaluateBuiltinObjectSize()
8145 Size = (EndOffset - LVal.getLValueOffset()).getQuantity(); in tryEvaluateBuiltinObjectSize()
8911 static void addOrSubLValueAsInteger(APValue &LVal, const APSInt &Index, in addOrSubLValueAsInteger() argument
8916 assert(!LVal.hasLValuePath() && "have designator for integer lvalue"); in addOrSubLValueAsInteger()
8917 CharUnits &Offset = LVal.getLValueOffset(); in addOrSubLValueAsInteger()
11014 LValue LVal; in EvaluateAsInitializer() local
11015 LVal.set(VD); in EvaluateAsInitializer()
11024 if (!EvaluateInPlace(Value, InitInfo, LVal, &VIE, in EvaluateAsInitializer()
11029 if (!EvaluateInPlace(Value, InitInfo, LVal, this, in EvaluateAsInitializer()