diff options
Diffstat (limited to 'llvm/tools/llvm-c-test/debuginfo.c')
-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 = |