aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Analysis
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2012-03-29 08:42:56 +0000
committerEric Christopher <echristo@apple.com>2012-03-29 08:42:56 +0000
commitb8ca98874316bfe8e46b27e7a034a8a764c92e08 (patch)
treec3d8f435ad918dbc5520905a5bd66f2f85d4e297 /include/llvm/Analysis
parent24b878031d4f62baf0e9a0573aeebc9dfd54b546 (diff)
downloadexternal_llvm-b8ca98874316bfe8e46b27e7a034a8a764c92e08.tar.gz
external_llvm-b8ca98874316bfe8e46b27e7a034a8a764c92e08.tar.bz2
external_llvm-b8ca98874316bfe8e46b27e7a034a8a764c92e08.zip
Add support for objc property decls according to the page at:
http://llvm.org/docs/SourceLevelDebugging.html#objcproperty including type and DECL. Expand the metadata needed accordingly. rdar://11144023 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153639 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis')
-rw-r--r--include/llvm/Analysis/DIBuilder.h14
-rw-r--r--include/llvm/Analysis/DebugInfo.h21
2 files changed, 23 insertions, 12 deletions
diff --git a/include/llvm/Analysis/DIBuilder.h b/include/llvm/Analysis/DIBuilder.h
index 5190f0a831..9fbbe09cca 100644
--- a/include/llvm/Analysis/DIBuilder.h
+++ b/include/llvm/Analysis/DIBuilder.h
@@ -211,13 +211,19 @@ namespace llvm {
/// createObjCProperty - Create debugging information entry for Objective-C
/// property.
/// @param Name Property name.
+ /// @param File File where this property is defined.
+ /// @param LineNumber Line number.
/// @param GetterName Name of the Objective C property getter selector.
/// @param SetterName Name of the Objective C property setter selector.
/// @param PropertyAttributes Objective C property attributes.
- DIObjCProperty createObjCProperty(StringRef Name, StringRef GetterName,
- StringRef SetterName,
- unsigned PropertyAttributes);
-
+ /// @param Ty Type.
+ DIObjCProperty createObjCProperty(StringRef Name,
+ DIFile File, unsigned LineNumber,
+ StringRef GetterName,
+ StringRef SetterName,
+ unsigned PropertyAttributes,
+ DIType Ty);
+
/// createClassType - Create debugging information entry for a class.
/// @param Scope Scope in which this class is defined.
/// @param Name class name.
diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h
index 1bbe8dfa1d..8ed8f949e7 100644
--- a/include/llvm/Analysis/DebugInfo.h
+++ b/include/llvm/Analysis/DebugInfo.h
@@ -792,31 +792,36 @@ namespace llvm {
explicit DIObjCProperty(const MDNode *N) : DIDescriptor(N) { }
StringRef getObjCPropertyName() const { return getStringField(1); }
+ DIFile getFile() const { return getFieldAs<DIFile>(2); }
+ unsigned getLineNumber() const { return getUnsignedField(3); }
+
StringRef getObjCPropertyGetterName() const {
- return getStringField(2);
+ return getStringField(4);
}
StringRef getObjCPropertySetterName() const {
- return getStringField(3);
+ return getStringField(5);
}
bool isReadOnlyObjCProperty() {
- return (getUnsignedField(4) & dwarf::DW_APPLE_PROPERTY_readonly) != 0;
+ return (getUnsignedField(6) & dwarf::DW_APPLE_PROPERTY_readonly) != 0;
}
bool isReadWriteObjCProperty() {
- return (getUnsignedField(4) & dwarf::DW_APPLE_PROPERTY_readwrite) != 0;
+ return (getUnsignedField(6) & dwarf::DW_APPLE_PROPERTY_readwrite) != 0;
}
bool isAssignObjCProperty() {
- return (getUnsignedField(4) & dwarf::DW_APPLE_PROPERTY_assign) != 0;
+ return (getUnsignedField(6) & dwarf::DW_APPLE_PROPERTY_assign) != 0;
}
bool isRetainObjCProperty() {
- return (getUnsignedField(4) & dwarf::DW_APPLE_PROPERTY_retain) != 0;
+ return (getUnsignedField(6) & dwarf::DW_APPLE_PROPERTY_retain) != 0;
}
bool isCopyObjCProperty() {
- return (getUnsignedField(4) & dwarf::DW_APPLE_PROPERTY_copy) != 0;
+ return (getUnsignedField(6) & dwarf::DW_APPLE_PROPERTY_copy) != 0;
}
bool isNonAtomicObjCProperty() {
- return (getUnsignedField(4) & dwarf::DW_APPLE_PROPERTY_nonatomic) != 0;
+ return (getUnsignedField(6) & dwarf::DW_APPLE_PROPERTY_nonatomic) != 0;
}
+ DIType getType() const { return getFieldAs<DIType>(7); }
+
/// Verify - Verify that a derived type descriptor is well formed.
bool Verify() const;