return;
if (isa<ObjCIvarRefExpr>(E)) {
- LV.SetObjCIvar(LV, true);
+ LV.setObjCIvar(true);
ObjCIvarRefExpr *Exp = cast<ObjCIvarRefExpr>(const_cast<Expr*>(E));
LV.setBaseIvarExp(Exp->getBase());
- LV.SetObjCArray(LV, E->getType()->isArrayType());
+ LV.setObjCArray(E->getType()->isArrayType());
return;
}
if (const VarDecl *VD = dyn_cast<VarDecl>(Exp->getDecl())) {
if ((VD->isBlockVarDecl() && !VD->hasLocalStorage()) ||
VD->isFileVarDecl()) {
- LV.SetGlobalObjCRef(LV, true);
- LV.SetThreadLocalRef(LV, VD->isThreadSpecified());
+ LV.setGlobalObjCRef(true);
+ LV.setThreadLocalRef(VD->isThreadSpecified());
}
}
- LV.SetObjCArray(LV, E->getType()->isArrayType());
+ LV.setObjCArray(E->getType()->isArrayType());
return;
}
if (ExpTy->isPointerType())
ExpTy = ExpTy->getAs<PointerType>()->getPointeeType();
if (ExpTy->isRecordType())
- LV.SetObjCIvar(LV, false);
+ LV.setObjCIvar(false);
}
return;
}
if (LV.isObjCIvar() && !LV.isObjCArray())
// Using array syntax to assigning to what an ivar points to is not
// same as assigning to the ivar itself. {id *Names;} Names[i] = 0;
- LV.SetObjCIvar(LV, false);
+ LV.setObjCIvar(false);
else if (LV.isGlobalObjCRef() && !LV.isObjCArray())
// Using array syntax to assigning to what global points to is not
// same as assigning to the global itself. {id *G;} G[i] = 0;
- LV.SetGlobalObjCRef(LV, false);
+ LV.setGlobalObjCRef(false);
return;
}
setObjCGCLValueClass(Ctx, Exp->getBase(), LV);
// We don't know if member is an 'ivar', but this flag is looked at
// only in the context of LV.isObjCIvar().
- LV.SetObjCArray(LV, E->getType()->isArrayType());
+ LV.setObjCArray(E->getType()->isArrayType());
return;
}
}
}
bool isObjCIvar() const { return Ivar; }
+ void setObjCIvar(bool Value) { Ivar = Value; }
+
bool isObjCArray() const { return ObjIsArray; }
+ void setObjCArray(bool Value) { ObjIsArray = Value; }
bool isNonGC () const { return NonGC; }
void setNonGC(bool Value) { NonGC = Value; }
bool isGlobalObjCRef() const { return GlobalObjCRef; }
+ void setGlobalObjCRef(bool Value) { GlobalObjCRef = Value; }
+
bool isThreadLocalRef() const { return ThreadLocalRef; }
- bool isObjCWeak() const { return Quals.getObjCGCAttr() == Qualifiers::Weak; }
- bool isObjCStrong() const { return Quals.getObjCGCAttr() == Qualifiers::Strong; }
+ void setThreadLocalRef(bool Value) { ThreadLocalRef = Value;}
+
+ bool isObjCWeak() const {
+ return Quals.getObjCGCAttr() == Qualifiers::Weak;
+ }
+ bool isObjCStrong() const {
+ return Quals.getObjCGCAttr() == Qualifiers::Strong;
+ }
Expr *getBaseIvarExp() const { return BaseIvarExp; }
void setBaseIvarExp(Expr *V) { BaseIvarExp = V; }
unsigned getAlignment() const { return Alignment; }
- static void SetObjCIvar(LValue& R, bool iValue) {
- R.Ivar = iValue;
- }
- static void SetObjCArray(LValue& R, bool iValue) {
- R.ObjIsArray = iValue;
- }
- static void SetGlobalObjCRef(LValue& R, bool iValue) {
- R.GlobalObjCRef = iValue;
- }
- static void SetThreadLocalRef(LValue& R, bool iValue) {
- R.ThreadLocalRef = iValue;
- }
-
// simple lvalue
llvm::Value *getAddress() const { assert(isSimple()); return V; }