From 0b270d1d748ae6faeb9e410088b374847bafc7a8 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 18 Dec 2015 03:57:26 +0000 Subject: Add a test for LLVMGetBitcodeModule. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255985 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-c-test/llvm-c-test.h | 4 +++- tools/llvm-c-test/main.c | 9 +++++++-- tools/llvm-c-test/module.c | 22 +++++++++++++++------- 3 files changed, 25 insertions(+), 10 deletions(-) (limited to 'tools/llvm-c-test') diff --git a/tools/llvm-c-test/llvm-c-test.h b/tools/llvm-c-test/llvm-c-test.h index 1b4976ae142..5f49d702b21 100644 --- a/tools/llvm-c-test/llvm-c-test.h +++ b/tools/llvm-c-test/llvm-c-test.h @@ -13,11 +13,13 @@ #ifndef LLVM_C_TEST_H #define LLVM_C_TEST_H +#include + // helpers.c void tokenize_stdin(void (*cb)(char **tokens, int ntokens)); // module.c -int module_dump(void); +int module_dump(bool Lazy); int module_list_functions(void); int module_list_globals(void); diff --git a/tools/llvm-c-test/main.c b/tools/llvm-c-test/main.c index 59cc749fb15..185ed4c0e04 100644 --- a/tools/llvm-c-test/main.c +++ b/tools/llvm-c-test/main.c @@ -23,6 +23,9 @@ static void print_usage(void) { fprintf(stderr, " Commands:\n"); fprintf(stderr, " * --module-dump\n"); fprintf(stderr, " Read bytecode from stdin - print disassembly\n\n"); + fprintf(stderr, " * --lazy-module-dump\n"); + fprintf(stderr, + " Lazily read bytecode from stdin - print disassembly\n\n"); fprintf(stderr, " * --module-list-functions\n"); fprintf(stderr, " Read bytecode from stdin - list summary of functions\n\n"); @@ -49,8 +52,10 @@ int main(int argc, char **argv) { LLVMInitializeCore(pr); - if (argc == 2 && !strcmp(argv[1], "--module-dump")) { - return module_dump(); + if (argc == 2 && !strcmp(argv[1], "--lazy-module-dump")) { + return module_dump(true); + } else if (argc == 2 && !strcmp(argv[1], "--module-dump")) { + return module_dump(false); } else if (argc == 2 && !strcmp(argv[1], "--module-list-functions")) { return module_list_functions(); } else if (argc == 2 && !strcmp(argv[1], "--module-list-globals")) { diff --git a/tools/llvm-c-test/module.c b/tools/llvm-c-test/module.c index 2661fc81d88..0f27337eb7c 100644 --- a/tools/llvm-c-test/module.c +++ b/tools/llvm-c-test/module.c @@ -19,7 +19,7 @@ #include #include -static LLVMModuleRef load_module(void) { +static LLVMModuleRef load_module(bool Lazy) { LLVMMemoryBufferRef MB; LLVMModuleRef M; char *msg = NULL; @@ -29,18 +29,26 @@ static LLVMModuleRef load_module(void) { exit(1); } - if (LLVMParseBitcode(MB, &M, &msg)) { + LLVMBool Ret; + if (Lazy) + Ret = LLVMGetBitcodeModule(MB, &M, &msg); + else + Ret = LLVMParseBitcode(MB, &M, &msg); + + if (Ret) { fprintf(stderr, "Error parsing bitcode: %s\n", msg); LLVMDisposeMemoryBuffer(MB); exit(1); } - LLVMDisposeMemoryBuffer(MB); + if (!Lazy) + LLVMDisposeMemoryBuffer(MB); + return M; } -int module_dump(void) { - LLVMModuleRef M = load_module(); +int module_dump(bool Lazy) { + LLVMModuleRef M = load_module(Lazy); char *irstr = LLVMPrintModuleToString(M); puts(irstr); @@ -52,7 +60,7 @@ int module_dump(void) { } int module_list_functions(void) { - LLVMModuleRef M = load_module(); + LLVMModuleRef M = load_module(false); LLVMValueRef f; f = LLVMGetFirstFunction(M); @@ -93,7 +101,7 @@ int module_list_functions(void) { } int module_list_globals(void) { - LLVMModuleRef M = load_module(); + LLVMModuleRef M = load_module(false); LLVMValueRef g; g = LLVMGetFirstGlobal(M); -- cgit v1.2.3