[llvm-commits] [PATCH] llvm-c dump IL to file

Carlo Kok ck at remobjects.com
Fri May 4 11:55:02 PDT 2012


In this patch:

Newly introduced llvm-c function LLVMPrintModuleToFile lets you save the 
textual representation of the LLVM IR to a file.



Before this patch it could only be printed to STDERR from llvm-c.


Thanks,


Carlo Kok
-------------- next part --------------
Index: include/llvm-c/Core.h
===================================================================
--- include/llvm-c/Core.h	(revision 156171)
+++ include/llvm-c/Core.h	(working copy)
@@ -478,6 +478,13 @@
 void LLVMDumpModule(LLVMModuleRef M);
 
 /**
+ * Print a representation of a module to a file. The ErrorMessage needs to be disposed with LLVMDisposeMessage.
+ *
+ * @see Module::print()
+ */
+LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename, char** ErrorMessage);
+
+/**
  * Set inline assembly for a module.
  *
  * @see Module::setModuleInlineAsm()
Index: lib/VMCore/Core.cpp
===================================================================
--- lib/VMCore/Core.cpp	(revision 156171)
+++ lib/VMCore/Core.cpp	(working copy)
@@ -115,6 +115,19 @@
   unwrap(M)->dump();
 }
 
+LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename, char** ErrorMessage) {
+  std::string error;
+  raw_fd_ostream dest(Filename, error);
+  unwrap(M)->print(dest, NULL);
+
+  if (!error.empty()) {
+    *ErrorMessage = strdup(error.c_str());
+    return true;
+  }
+  dest.flush();
+  return false;
+}
+
 /*--.. Operations on inline assembler ......................................--*/
 void LLVMSetModuleInlineAsm(LLVMModuleRef M, const char *Asm) {
   unwrap(M)->setModuleInlineAsm(StringRef(Asm));


More information about the llvm-commits mailing list