aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGValue.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/CGValue.h')
-rw-r--r--lib/CodeGen/CGValue.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/CodeGen/CGValue.h b/lib/CodeGen/CGValue.h
index ba4ea0e6c8..bc9a15fe9f 100644
--- a/lib/CodeGen/CGValue.h
+++ b/lib/CodeGen/CGValue.h
@@ -18,6 +18,8 @@
#include "clang/AST/Type.h"
namespace clang {
+ class ObjCPropertyRefExpr;
+
namespace CodeGen {
/// RValue - This trivial value class is used to represent the result of an
@@ -95,7 +97,9 @@ class LValue {
Simple, // This is a normal l-value, use getAddress().
VectorElt, // This is a vector element l-value (V[i]), use getVector*
BitField, // This is a bitfield l-value, use getBitfield*.
- ExtVectorElt // This is an extended vector subset, use getExtVectorComp
+ ExtVectorElt, // This is an extended vector subset, use getExtVectorComp
+ PropertyRef // This is an Objective-C property reference, use
+ // getPropertyRefExpr
} LVType;
llvm::Value *V;
@@ -113,6 +117,9 @@ class LValue {
unsigned short Size;
bool IsSigned;
} BitfieldData;
+
+ // Obj-C property reference expression
+ const ObjCPropertyRefExpr *PropertyRefExpr;
};
bool Volatile:1;
@@ -130,7 +137,8 @@ public:
bool isVectorElt() const { return LVType == VectorElt; }
bool isBitfield() const { return LVType == BitField; }
bool isExtVectorElt() const { return LVType == ExtVectorElt; }
-
+ bool isPropertyRef() const { return LVType == PropertyRef; }
+
bool isVolatileQualified() const { return Volatile; }
bool isRestrictQualified() const { return Restrict; }
@@ -159,6 +167,11 @@ public:
assert(isBitfield());
return BitfieldData.IsSigned;
}
+ // property ref lvalue
+ const ObjCPropertyRefExpr *getPropertyRefExpr() const {
+ assert(isPropertyRef());
+ return PropertyRefExpr;
+ }
static LValue MakeAddr(llvm::Value *V, unsigned Qualifiers) {
LValue R;
@@ -200,6 +213,15 @@ public:
SetQualifiers(Qualifiers,R);
return R;
}
+
+ static LValue MakePropertyRef(const ObjCPropertyRefExpr *E,
+ unsigned Qualifiers) {
+ LValue R;
+ R.LVType = PropertyRef;
+ R.PropertyRefExpr = E;
+ SetQualifiers(Qualifiers,R);
+ return R;
+ }
};
} // end namespace CodeGen