[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