Home | History | Annotate | Download | only in AST

Lines Matching defs:LValue

58   struct LValue;
87 /// 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 /// Get an LValue path entry, which is known to not be an array index, as a
106 /// Determine whether this LValue path entry for a base class names a virtual
154 /// and we cannot perform lvalue-to-rvalue conversions on them.
303 const LValue *This;
317 const FunctionDecl *Callee, const LValue *This,
331 ThisOverrideRAII(CallStackFrame &Frame, const LValue *NewThis, bool Enable)
341 const LValue *OldThis;
692 const FunctionDecl *Callee, const LValue *This,
787 struct LValue {
822 // Check that this LValue is not based on a null pointer. If it is, produce
837 // Check this LValue refers to an object. If not, set the designator to be
968 const LValue &This, const Expr *E,
970 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info);
971 static bool EvaluatePointer(const Expr *E, LValue &Result, EvalInfo &Info);
974 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info);
1095 // We can never form an lvalue with an implicit value initialization as its
1099 // an expression might be a global lvalue.
1105 assert(Base && "no location for a null lvalue");
1118 QualType Type, const LValue &LVal) {
1142 "have call index for global lvalue");
1178 const LValue *This = 0) {
1249 LValue LVal;
1258 const ValueDecl *GetLValueBaseDecl(const LValue &LVal) {
1262 static bool IsLiteralLValue(const LValue &Value) {
1269 static bool IsWeakLValue(const LValue &Value) {
1307 case APValue::LValue:
1325 assert(E->isRValue() && "missing lvalue-to-rvalue conv in bool condition");
1397 assert(Value.isLValue() && "integral value neither int nor lvalue?");
1606 /// Cast an lvalue referring to a base subobject to a derived class, by
1607 /// truncating the lvalue's path to the given length.
1608 static bool CastToDerivedClass(EvalInfo &Info, const Expr *E, LValue &Result,
1637 static bool HandleLValueDirectBase(EvalInfo &Info, const Expr *E, LValue &Obj,
1651 static bool HandleLValueBase(EvalInfo &Info, const Expr *E, LValue &Obj,
1677 QualType Type, LValue &Result) {
1691 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal,
1707 LValue &LVal,
1744 LValue &LVal, QualType EltTy,
1756 /// Update an lvalue to refer to a component of a complex number.
1758 /// \param LVal - The lvalue to be updated.
1762 LValue &LVal, QualType EltTy,
2020 // LValue which refers to a string literal.
2275 /// Find the complete object to which an LValue refers.
2277 const LValue &LVal, QualType LValType) {
2294 // C++11 DR1311: An lvalue-to-rvalue conversion on a volatile-qualified type
2399 // an lvalue-to-rvalue conversion [is not allowed unless it applies to]
2464 /// \brief Perform an lvalue-to-rvalue conversion on the given glvalue. This
2465 /// can also be used for 'lvalue-to-lvalue' conversions for looking up the
2477 const LValue &LVal, APValue &RVal) {
2486 // In C99, a CompoundLiteralExpr is an lvalue, and we defer evaluating the
2489 assert(!Info.getLangOpts().CPlusPlus && "lvalue compound literal in c++?");
2500 // We represent a string literal array as an lvalue pointing at the
2514 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal,
2566 case APValue::LValue:
2617 LValue LVal;
2635 const LValue &LVal, QualType LValType, QualType PromotedLValType,
2691 case APValue::LValue:
2769 LValue LVal;
2784 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal,
2800 /// Build an lvalue for the object argument of a member function call.
2802 LValue &This) {
2816 /// lvalue referring to the result.
2819 /// \param LV - An lvalue referring to the base of the member pointer.
2822 /// the resulting LValue subobject designator. This is not possible when
2828 LValue &LV,
2864 // Truncate the lvalue to the appropriate derived class.
2869 // Extend the LValue path with the member pointer's path.
2878 // The first class in the path is that of the lvalue.
2910 LValue &LV,
2927 /// the provided lvalue, which currently refers to the base object.
2929 LValue &Result) {
2960 // Truncate the lvalue to the appropriate derived class.
2987 LValue Result;
3458 const FunctionDecl *Callee, const LValue *This,
3477 LValue RHS;
3500 static bool HandleConstructorCall(SourceLocation CallLoc, const LValue &This,
3533 LValue RHS;
3557 LValue Subobject = This;
3763 LValue Obj;
3830 LValue *This = 0, ThisVal;
3856 LValue Call;
3972 LValue LVal;
3997 LValue LVal;
4051 // Common base class for lvalue and temporary evaluation.
4058 LValue &Result;
4068 LValueExprEvaluatorBase(EvalInfo &Info, LValue &Result) :
4148 // LValue Evaluation
4154 // LValue evaluation produces values comprising a base expression of one of the
4182 LValueExprEvaluator(EvalInfo &Info, LValue &Result) :
4231 /// Evaluate an expression as an lvalue. This can be legitimately called on
4235 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info) {
4310 // Adjust our lvalue to refer to the desired subobject.
4341 assert(!Info.getLangOpts().CPlusPlus && "lvalue compound literal in c++?");
4342 // Defer visiting the literal until the lvalue-to-rvalue conversion. We can
4411 "lvalue __imag__ on scalar?");
4437 // The overall lvalue result is the result of evaluating the LHS.
4479 LValue &Result;
4487 PointerExprEvaluator(EvalInfo &info, LValue &Result)
4527 static bool EvaluatePointer(const Expr* E, LValue& Result, EvalInfo &Info) {
4629 // Cast is of an lvalue, no need to change value.
4767 const LValue &This;
4771 RecordExprEvaluator(EvalInfo &info, const LValue &This, APValue &Result)
4796 const LValue &This, APValue &Result) {
4810 LValue Subobject = This;
4825 LValue Subobject = This;
4850 LValue Subobject = This;
4917 LValue Subobject = This;
4941 LValue Subobject = This;
5021 LValue Array;
5068 static bool EvaluateRecord(const Expr *E, const LValue &This,
5086 TemporaryExprEvaluator(EvalInfo &Info, LValue &Result) :
5118 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info) {
5311 const LValue &This;
5315 ArrayExprEvaluator(EvalInfo &Info, const LValue &This, APValue &Result)
5336 LValue Subobject = This;
5345 const LValue &Subobject,
5350 static bool EvaluateArray(const Expr *E, const LValue &This,
5364 LValue LV;
5400 LValue Subobject = This;
5430 const LValue &Subobject,
5450 LValue ArrayElt = Subobject;
5510 // either as an integer-valued APValue, or as an lvalue-valued APValue.
5661 /// an integer rvalue to produce a pointer (represented as an lvalue) instead.
5715 // FIXME: Does GCC differ between lvalue and rvalue references here?
5767 /// __builtin_constant_p when applied to the given lvalue.
5769 /// An lvalue is only "constant" if it is a pointer or reference to the first
5771 template<typename LValue>
5772 static bool EvaluateBuiltinConstantPForLValue(const LValue &LV) {
5808 LValue LV;
5836 LValue Base;
6067 static bool HasSameBase(const LValue &A, const LValue &B) {
6482 LValue LHSValue, RHSValue;
7006 LValue LV;
7011 // Only allow based lvalue casts if they are lossless.
7763 LValue LV;
7774 LValue LV;
7795 LValue LV;
7802 LValue LV;
7831 static bool EvaluateInPlace(APValue &Result, EvalInfo &Info, const LValue &This,
7850 /// lvalue-to-rvalue cast if it is an lvalue.
7859 LValue LV;
7895 /// in Result. If this expression is a glvalue, an lvalue-to-rvalue conversion
7930 LValue LV;
7955 LValue LVal;
8217 // because an ICE cannot contain an lvalue operand.
8265 // contain an lvalue operand.
8518 LValue This;