diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-29 16:53:53 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-29 16:53:53 +0000 |
commit | b1d58e3a625d027165ff1c084d367ee4281cae7a (patch) | |
tree | e3d2be14958f09dbe1590915614e30c487404084 | |
parent | 5492b02e263b8801f3987dee280646e274de0417 (diff) |
Tigthen the condition for issung ivar shadowing
variables to those in file scope (nonfragile-abi2).
Fixes radar 8248681.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109758 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 3 | ||||
-rw-r--r-- | test/SemaObjC/conflict-nonfragile-abi2.m | 21 |
2 files changed, 23 insertions, 1 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 6f971b116d..a934adfb0c 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1170,7 +1170,8 @@ Sema::OwningExprResult Sema::ActOnIdExpression(Scope *S, if (VarDecl *Var = R.getAsSingle<VarDecl>()) { if (getLangOptions().ObjCNonFragileABI && IvarLookupFollowUp && - !getLangOptions().ObjCNonFragileABI2) { + !getLangOptions().ObjCNonFragileABI2 && + Var->isFileVarDecl()) { ObjCPropertyDecl *Property = OkToSynthesizeProvisionalIvar(*this, II, NameLoc); if (Property) { diff --git a/test/SemaObjC/conflict-nonfragile-abi2.m b/test/SemaObjC/conflict-nonfragile-abi2.m index 49cff97ccb..14e666000c 100644 --- a/test/SemaObjC/conflict-nonfragile-abi2.m +++ b/test/SemaObjC/conflict-nonfragile-abi2.m @@ -5,9 +5,30 @@ int glob; @interface I @property int glob; // expected-note {{property declared here}} +@property int p; +@property int le; +@property int l; +@property int ls; +@property int r; @end @implementation I - (int) Meth { return glob; } // expected-warning {{'glob' lookup will access the property ivar in nonfragile-abi2 mode}} @synthesize glob; +// rdar: // 8248681 +- (int) Meth1: (int) p { + extern int le; + int l = 1; + static int ls; + register int r; + p = le + ls + r; + return l; +} +@dynamic p; +@dynamic le; +@dynamic l; +@dynamic ls; +@dynamic r; @end + + |