diff options
author | Devang Patel <dpatel@apple.com> | 2011-09-19 18:54:16 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2011-09-19 18:54:16 +0000 |
commit | 8c6f9c49e6b1af5917f5879aed5496d0886b4e90 (patch) | |
tree | d7d38ea2d442b3f19831e7e532c284e978d702ed | |
parent | 6e5218367c513fe02d1c7210023d40739ecb1572 (diff) |
Tighten check to match an ivar with corresponding property by using ObjCImplementationDecl.
Radar 10139522 - Part 1.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140038 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGDebugInfo.cpp | 12 | ||||
-rw-r--r-- | test/CodeGenObjC/debug-info-property2.m | 14 |
2 files changed, 22 insertions, 4 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 919c5f9940..89e14bafd0 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -1194,7 +1194,7 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty, } const ASTRecordLayout &RL = CGM.getContext().getASTObjCInterfaceLayout(ID); - + ObjCImplementationDecl *ImpD = ID->getImplementation(); unsigned FieldNo = 0; for (ObjCIvarDecl *Field = ID->all_declared_ivar_begin(); Field; Field = Field->getNextIvar(), ++FieldNo) { @@ -1238,13 +1238,17 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty, StringRef PropertyGetter; StringRef PropertySetter; unsigned PropertyAttributes = 0; - if (ObjCPropertyDecl *PD = - ID->FindPropertyVisibleInPrimaryClass(Field->getIdentifier())) { + ObjCPropertyDecl *PD = NULL; + if (ImpD) + if (ObjCPropertyImplDecl *PImpD = + ImpD->FindPropertyImplIvarDecl(Field->getIdentifier())) + PD = PImpD->getPropertyDecl(); + if (PD) { PropertyName = PD->getName(); PropertyGetter = getSelectorName(PD->getGetterName()); PropertySetter = getSelectorName(PD->getSetterName()); PropertyAttributes = PD->getPropertyAttributes(); - } + } FieldTy = DBuilder.createObjCIVar(FieldName, FieldDefUnit, FieldLine, FieldSize, FieldAlign, FieldOffset, Flags, FieldTy, diff --git a/test/CodeGenObjC/debug-info-property2.m b/test/CodeGenObjC/debug-info-property2.m new file mode 100644 index 0000000000..4cd76c1ca6 --- /dev/null +++ b/test/CodeGenObjC/debug-info-property2.m @@ -0,0 +1,14 @@ +// RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s + +// CHECK: AT_APPLE_property_name +@interface C { + int _base; +} +@property int base; +@end + +@implementation C +@synthesize base = _base; +@end + +void foo(C *cptr) {} |