Add a test for LLVMGetBitcodeModule.
[oota-llvm.git] / tools / llvm-c-test / module.c
index 50e6e9c6de109e2f9c1b825908e36654bf9d6177..0f27337eb7c710057c78cba01131bdedbd001b2f 100644 (file)
@@ -19,7 +19,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-static LLVMModuleRef load_module(void) {
+static LLVMModuleRef load_module(bool Lazy) {
   LLVMMemoryBufferRef MB;
   LLVMModuleRef M;
   char *msg = NULL;
@@ -29,16 +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);
   }
 
+  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);
@@ -50,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);
@@ -58,16 +68,18 @@ int module_list_functions(void) {
     if (LLVMIsDeclaration(f)) {
       printf("FunctionDeclaration: %s\n", LLVMGetValueName(f));
     } else {
+      LLVMBasicBlockRef bb;
+      LLVMValueRef isn;
       unsigned nisn = 0;
       unsigned nbb = 0;
 
       printf("FunctionDefinition: %s [#bb=%u]\n", LLVMGetValueName(f),
              LLVMCountBasicBlocks(f));
 
-      for (LLVMBasicBlockRef bb = LLVMGetFirstBasicBlock(f); bb;
+      for (bb = LLVMGetFirstBasicBlock(f); bb;
            bb = LLVMGetNextBasicBlock(bb)) {
         nbb++;
-        for (LLVMValueRef isn = LLVMGetFirstInstruction(bb); isn;
+        for (isn = LLVMGetFirstInstruction(bb); isn;
              isn = LLVMGetNextInstruction(isn)) {
           nisn++;
           if (LLVMIsACallInst(isn)) {
@@ -89,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);