summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-c-test
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2017-11-01 22:18:52 +0000
committerwhitequark <whitequark@whitequark.org>2017-11-01 22:18:52 +0000
commit789164d4262b4132e074fadd6e1df8328618e30e (patch)
tree264e0442948ef2c759aeef7d9d864e757fdbbab1 /llvm/tools/llvm-c-test
parent3837322a6b757230368cec94cf2766734983df72 (diff)
downloadbcm5719-llvm-789164d4262b4132e074fadd6e1df8328618e30e.tar.gz
bcm5719-llvm-789164d4262b4132e074fadd6e1df8328618e30e.zip
[LLVM-C] Expose functions to create debug locations via DIBuilder.
These include: * Several functions for creating an LLVMDIBuilder, * LLVMDIBuilderCreateCompileUnit, * LLVMDIBuilderCreateFile, * LLVMDIBuilderCreateDebugLocation. Patch by Harlan Haskins. Differential Revision: https://reviews.llvm.org/D32368 llvm-svn: 317135
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r--llvm/tools/llvm-c-test/CMakeLists.txt1
-rw-r--r--llvm/tools/llvm-c-test/debuginfo.c38
-rw-r--r--llvm/tools/llvm-c-test/llvm-c-test.h3
-rw-r--r--llvm/tools/llvm-c-test/main.c5
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();
}
OpenPOWER on IntegriCloud