diff options
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r-- | llvm/tools/llvm-c-test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/debuginfo.c | 38 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/llvm-c-test.h | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/main.c | 5 |
4 files changed, 47 insertions, 0 deletions
diff --git a/llvm/tools/llvm-c-test/CMakeLists.txt b/llvm/tools/llvm-c-test/CMakeLists.txt index a2bde0d9714..bce0f4a5a42 100644 --- a/llvm/tools/llvm-c-test/CMakeLists.txt +++ b/llvm/tools/llvm-c-test/CMakeLists.txt @@ -38,6 +38,7 @@ endif () add_llvm_tool(llvm-c-test attributes.c calc.c + debuginfo.c diagnostic.c disassemble.c echo.cpp diff --git a/llvm/tools/llvm-c-test/debuginfo.c b/llvm/tools/llvm-c-test/debuginfo.c new file mode 100644 index 00000000000..2da3887a172 --- /dev/null +++ b/llvm/tools/llvm-c-test/debuginfo.c @@ -0,0 +1,38 @@ +/*===-- debuginfo.c - tool for testing libLLVM and llvm-c API -------------===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* Tests for the LLVM C DebugInfo API *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#include "llvm-c-test.h" +#include "llvm-c/DebugInfo.h" +#include <string.h> +#include <stdio.h> + +int llvm_test_dibuilder() { + LLVMModuleRef M = LLVMModuleCreateWithName("debuginfo.c"); + LLVMDIBuilderRef DIB = LLVMCreateDIBuilder(M); + + LLVMMetadataRef File = LLVMDIBuilderCreateFile(DIB, "debuginfo.c", 12, + ".", 1); + + LLVMDIBuilderCreateCompileUnit(DIB, + LLVMDWARFSourceLanguageC, File,"llvm-c-test", 11, 0, NULL, 0, 0, + NULL, 0, LLVMDWARFEmissionFull, 0, 0, 0); + + char *MStr = LLVMPrintModuleToString(M); + puts(MStr); + LLVMDisposeMessage(MStr); + + LLVMDisposeDIBuilder(DIB); + 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 2a7090484b0..cf9a0f99de6 100644 --- a/llvm/tools/llvm-c-test/llvm-c-test.h +++ b/llvm/tools/llvm-c-test/llvm-c-test.h @@ -35,6 +35,9 @@ int llvm_calc(void); // disassemble.c int llvm_disassemble(void); +// debuginfo.c +int llvm_test_dibuilder(void); + // metadata.c int llvm_add_named_metadata_operand(void); int llvm_set_metadata(void); diff --git a/llvm/tools/llvm-c-test/main.c b/llvm/tools/llvm-c-test/main.c index 9bc0c96c3d6..5130783d6a6 100644 --- a/llvm/tools/llvm-c-test/main.c +++ b/llvm/tools/llvm-c-test/main.c @@ -55,6 +55,9 @@ static void print_usage(void) { fprintf(stderr, " * --test-diagnostic-handler\n"); fprintf(stderr, " Read bitcode file form stdin with a diagnostic handler set\n\n"); + fprintf(stderr, " * --test-dibuilder\n"); + fprintf(stderr, + " Run tests for the DIBuilder C API - print generated module\n\n"); } int main(int argc, char **argv) { @@ -96,6 +99,8 @@ int main(int argc, char **argv) { return llvm_echo(); } else if (argc == 2 && !strcmp(argv[1], "--test-diagnostic-handler")) { return llvm_test_diagnostic_handler(); + } else if (argc == 2 && !strcmp(argv[1], "--test-dibuilder")) { + return llvm_test_dibuilder(); } else { print_usage(); } |