mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-03 09:14:30 +00:00
[OCaml] Use LLVMCreateMessage with constant strings when calling llvm_raise
The llvm_string_of_message function, called by llvm_raise, calls LLVMDisposeMessage, which expects the message to be dynamically allocated; it fails freeing the message otherwise. So always dynamically allocate with LLVMCreateMessage. Differential Revision: http://reviews.llvm.org/D18675 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265116 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
145384cb84
commit
f4430ca01d
@ -15,8 +15,8 @@
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/Core.h"
|
||||
#include "llvm-c/Analysis.h"
|
||||
#include "llvm-c/Core.h"
|
||||
#include "caml/alloc.h"
|
||||
#include "caml/mlvalues.h"
|
||||
#include "caml/memory.h"
|
||||
|
@ -13,6 +13,7 @@
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/BitReader.h"
|
||||
#include "llvm-c/Core.h"
|
||||
#include "caml/alloc.h"
|
||||
#include "caml/fail.h"
|
||||
#include "caml/memory.h"
|
||||
@ -25,7 +26,7 @@ CAMLprim LLVMModuleRef llvm_get_module(LLVMContextRef C, LLVMMemoryBufferRef Mem
|
||||
LLVMModuleRef M;
|
||||
|
||||
if (LLVMGetBitcodeModuleInContext2(C, MemBuf, &M))
|
||||
llvm_raise(*caml_named_value("Llvm_bitreader.Error"), "");
|
||||
llvm_raise(*caml_named_value("Llvm_bitreader.Error"), LLVMCreateMessage(""));
|
||||
|
||||
return M;
|
||||
}
|
||||
@ -35,7 +36,7 @@ CAMLprim LLVMModuleRef llvm_parse_bitcode(LLVMContextRef C, LLVMMemoryBufferRef
|
||||
LLVMModuleRef M;
|
||||
|
||||
if (LLVMParseBitcodeInContext2(C, MemBuf, &M))
|
||||
llvm_raise(*caml_named_value("Llvm_bitreader.Error"), "");
|
||||
llvm_raise(*caml_named_value("Llvm_bitreader.Error"), LLVMCreateMessage(""));
|
||||
|
||||
return M;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#include "llvm-c/Core.h"
|
||||
#include "llvm-c/Linker.h"
|
||||
#include "caml/alloc.h"
|
||||
#include "caml/memory.h"
|
||||
@ -26,7 +27,7 @@ void llvm_raise(value Prototype, char *Message);
|
||||
/* llmodule -> llmodule -> unit */
|
||||
CAMLprim value llvm_link_modules(LLVMModuleRef Dst, LLVMModuleRef Src) {
|
||||
if (LLVMLinkModules2(Dst, Src))
|
||||
llvm_raise(*caml_named_value("Llvm_linker.Error"), "Linking failed");
|
||||
llvm_raise(*caml_named_value("Llvm_linker.Error"), LLVMCreateMessage("Linking failed"));
|
||||
|
||||
return Val_unit;
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "llvm-c/Core.h"
|
||||
#include "llvm-c/Support.h"
|
||||
#include "caml/alloc.h"
|
||||
#include "caml/custom.h"
|
||||
#include "caml/memory.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user