diff options
-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) {} |