|
@@ -86,11 +86,15 @@ FunctionScopeInfo::WeakObjectProfileTy::getBaseInfo(const Expr *E) {
|
|
if (BaseProp) {
|
|
if (BaseProp) {
|
|
D = getBestPropertyDecl(BaseProp);
|
|
D = getBestPropertyDecl(BaseProp);
|
|
|
|
|
|
- const Expr *DoubleBase = BaseProp->getBase();
|
|
|
|
- if (const OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(DoubleBase))
|
|
|
|
- DoubleBase = OVE->getSourceExpr();
|
|
|
|
-
|
|
|
|
- IsExact = DoubleBase->isObjCSelfExpr();
|
|
|
|
|
|
+ if (BaseProp->isClassReceiver())
|
|
|
|
+ IsExact = true;
|
|
|
|
+ else {
|
|
|
|
+ const Expr *DoubleBase = BaseProp->getBase();
|
|
|
|
+ if (const OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(DoubleBase))
|
|
|
|
+ DoubleBase = OVE->getSourceExpr();
|
|
|
|
+
|
|
|
|
+ IsExact = DoubleBase->isObjCSelfExpr();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
}
|
|
}
|