diff options
author | Davide Bertola <bertola.davide@gmail.com> | 2023-02-08 16:28:34 -0800 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2023-02-08 16:29:29 -0800 |
commit | e87cc8a979a88a770c89d426107b1fa5c3b6e2d3 (patch) | |
tree | 499b039254ff0291e80f19801c955c58b1c500db /llvm/tools/llvm-c-test | |
parent | 91a6df3068fc45872e4db43141b0a439b2cf122d (diff) | |
download | llvm-e87cc8a979a88a770c89d426107b1fa5c3b6e2d3.zip llvm-e87cc8a979a88a770c89d426107b1fa5c3b6e2d3.tar.gz llvm-e87cc8a979a88a770c89d426107b1fa5c3b6e2d3.tar.bz2 |
add LLVMGetDINodeTag to C bindings
Differential Revision: https://reviews.llvm.org/D138415
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r-- | llvm/tools/llvm-c-test/debuginfo.c | 28 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/llvm-c-test.h | 1 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/main.c | 4 |
3 files changed, 32 insertions, 1 deletions
diff --git a/llvm/tools/llvm-c-test/debuginfo.c b/llvm/tools/llvm-c-test/debuginfo.c index d33e40f..26a063f 100644 --- a/llvm/tools/llvm-c-test/debuginfo.c +++ b/llvm/tools/llvm-c-test/debuginfo.c @@ -12,10 +12,10 @@ \*===----------------------------------------------------------------------===*/ #include "llvm-c-test.h" -#include "llvm-c/Core.h" #include "llvm-c/DebugInfo.h" #include <stdio.h> #include <string.h> +#include <assert.h> static LLVMMetadataRef declare_objc_class(LLVMDIBuilderRef DIB, LLVMMetadataRef File) { @@ -201,3 +201,29 @@ int llvm_test_dibuilder(void) { return 0; } + +int llvm_get_di_tag(void) { + LLVMModuleRef m = LLVMModuleCreateWithName("Mod"); + LLVMContextRef context = LLVMGetModuleContext(m); + + LLVMMetadataRef metas[] = {LLVMMDStringInContext2(context, "foo", 3)}; + LLVMMetadataRef md = LLVMMDNodeInContext2(context, metas, 1); + uint16_t tag0 = LLVMGetDINodeTag(md); + + assert(tag0 == 0); + + const char *filename = "metadata.c"; + LLVMDIBuilderRef builder = LLVMCreateDIBuilder(m); + LLVMMetadataRef file = + LLVMDIBuilderCreateFile(builder, filename, strlen(filename), ".", 1); + LLVMMetadataRef decl = LLVMDIBuilderCreateStructType( + builder, file, "TestClass", 9, file, 42, 64, 0, + LLVMDIFlagObjcClassComplete, NULL, NULL, 0, 0, NULL, NULL, 0); + uint16_t tag1 = LLVMGetDINodeTag(decl); + + assert(tag1 == 0x13); + + LLVMDisposeModule(m); + + return 0; +} diff --git a/llvm/tools/llvm-c-test/llvm-c-test.h b/llvm/tools/llvm-c-test/llvm-c-test.h index 5e5b355..15b8573 100644 --- a/llvm/tools/llvm-c-test/llvm-c-test.h +++ b/llvm/tools/llvm-c-test/llvm-c-test.h @@ -37,6 +37,7 @@ int llvm_disassemble(void); // debuginfo.c int llvm_test_dibuilder(void); +int llvm_get_di_tag(void); // metadata.c int llvm_add_named_metadata_operand(void); diff --git a/llvm/tools/llvm-c-test/main.c b/llvm/tools/llvm-c-test/main.c index 79a56f7..78eb346 100644 --- a/llvm/tools/llvm-c-test/main.c +++ b/llvm/tools/llvm-c-test/main.c @@ -44,6 +44,8 @@ static void print_usage(void) { fprintf(stderr, " Read lines of triple, hex ascii machine code from stdin " "- print disassembly\n\n"); fprintf(stderr, " * --calc\n"); + fprintf(stderr, " * --get-di-tag\n"); + fprintf(stderr, " Run test for getting MDNode dwarf tag\n"); fprintf(stderr, " * --replace-md-operand\n"); fprintf(stderr, " Run test for replacing MDNode operands\n"); fprintf(stderr, " * --is-a-value-as-metadata\n"); @@ -96,6 +98,8 @@ int main(int argc, char **argv) { return llvm_add_named_metadata_operand(); } else if (argc == 2 && !strcmp(argv[1], "--set-metadata")) { return llvm_set_metadata(); + } else if (argc == 2 && !strcmp(argv[1], "--get-di-tag")) { + return llvm_get_di_tag(); } else if (argc == 2 && !strcmp(argv[1], "--replace-md-operand")) { return llvm_replace_md_operand(); } else if (argc == 2 && !strcmp(argv[1], "--is-a-value-as-metadata")) { |