forked from OSchip/llvm-project
Introduce llvm-c function LLVMPrintModuleToFile.
This 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. Patch by Carlo Kok! llvm-svn: 156479
This commit is contained in:
parent
32df72db66
commit
b7ef2fe8ae
|
@ -477,6 +477,15 @@ void LLVMSetTarget(LLVMModuleRef M, const char *Triple);
|
|||
*/
|
||||
void LLVMDumpModule(LLVMModuleRef M);
|
||||
|
||||
/**
|
||||
* Print a representation of a module to a file. The ErrorMessage needs to be
|
||||
* disposed with LLVMDisposeMessage. Returns 0 on success, 1 otherwise.
|
||||
*
|
||||
* @see Module::print()
|
||||
*/
|
||||
LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename,
|
||||
char **ErrorMessage);
|
||||
|
||||
/**
|
||||
* Set inline assembly for a module.
|
||||
*
|
||||
|
|
|
@ -115,6 +115,25 @@ void LLVMDumpModule(LLVMModuleRef M) {
|
|||
unwrap(M)->dump();
|
||||
}
|
||||
|
||||
LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename,
|
||||
char **ErrorMessage) {
|
||||
std::string error;
|
||||
raw_fd_ostream dest(Filename, error);
|
||||
if (!error.empty()) {
|
||||
*ErrorMessage = strdup(error.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
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));
|
||||
|
|
Loading…
Reference in New Issue