diff options
author | Robert Widmann <devteam.codafi@gmail.com> | 2018-05-21 16:27:35 +0000 |
---|---|---|
committer | Robert Widmann <devteam.codafi@gmail.com> | 2018-05-21 16:27:35 +0000 |
commit | 38fa750b7a7e854f95eae9b22f9996b20d53540a (patch) | |
tree | 83207646ced650b7b984f04211e97b224d9cabe1 /llvm/tools/llvm-c-test | |
parent | 9417f7ff2e3093aa85d5e89dca3dd1dfdc50abb3 (diff) | |
download | bcm5719-llvm-38fa750b7a7e854f95eae9b22f9996b20d53540a.tar.gz bcm5719-llvm-38fa750b7a7e854f95eae9b22f9996b20d53540a.zip |
[LLVM-C] Add DIBuilder Bindings For ObjC Classes
Summary: Add LLVMDIBuilderCreateObjCIVar, LLVMDIBuilderCreateObjCProperty, and LLVMDIBuilderCreateInheritance to allow declaring metadata for Objective-C class hierarchies and their associated properties and instance variables.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: harlanhaskins, llvm-commits
Differential Revision: https://reviews.llvm.org/D47123
llvm-svn: 332850
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r-- | llvm/tools/llvm-c-test/debuginfo.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/tools/llvm-c-test/debuginfo.c b/llvm/tools/llvm-c-test/debuginfo.c index 26a477e432f..74d215ea818 100644 --- a/llvm/tools/llvm-c-test/debuginfo.c +++ b/llvm/tools/llvm-c-test/debuginfo.c @@ -17,6 +17,17 @@ #include <stdio.h> #include <string.h> +static LLVMMetadataRef +declare_objc_class(LLVMDIBuilderRef DIB, LLVMMetadataRef File) { + LLVMMetadataRef Decl = LLVMDIBuilderCreateStructType(DIB, File, "TestClass", 9, File, 42, 64, 0, LLVMDIFlagObjcClassComplete, NULL, NULL, 0, 0, NULL, NULL, 0); + LLVMMetadataRef SuperDecl = LLVMDIBuilderCreateStructType(DIB, File, "TestSuperClass", 14, File, 42, 64, 0, LLVMDIFlagObjcClassComplete, NULL, NULL, 0, 0, NULL, NULL, 0); + LLVMDIBuilderCreateInheritance(DIB, Decl, SuperDecl, 0, 0, 0); + LLVMMetadataRef TestProperty = + LLVMDIBuilderCreateObjCProperty(DIB, "test", 4, File, 42, "getTest", 7, "setTest", 7, 0x20 /*copy*/ | 0x40 /*nonatomic*/, SuperDecl); + LLVMDIBuilderCreateObjCIVar(DIB, "_test", 5, File, 42, 64, 0, 64, LLVMDIFlagPublic, SuperDecl, TestProperty); + return Decl; +} + int llvm_test_dibuilder(void) { const char *Filename = "debuginfo.c"; LLVMModuleRef M = LLVMModuleCreateWithName(Filename); @@ -48,6 +59,14 @@ int llvm_test_dibuilder(void) { LLVMDIBuilderCreateImportedModuleFromAlias(DIB, Module, ImportedModule, File, 42); + LLVMMetadataRef ClassTy = declare_objc_class(DIB, File); + LLVMMetadataRef GlobalClassValueExpr = + LLVMDIBuilderCreateConstantValueExpression(DIB, 0); + LLVMDIBuilderCreateGlobalVariableExpression(DIB, Module, "globalClass", 11, + "", 0, File, 1, ClassTy, + true, GlobalClassValueExpr, + NULL, 0); + LLVMMetadataRef Int64Ty = LLVMDIBuilderCreateBasicType(DIB, "Int64", 5, 64, 0); LLVMMetadataRef Int64TypeDef = |