[OCaml] Initialize local roots prior to raising.
authorPeter Zotov <whitequark@whitequark.org>
Mon, 3 Nov 2014 09:51:44 +0000 (09:51 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Mon, 3 Nov 2014 09:51:44 +0000 (09:51 +0000)
On 4.02, the OCaml unwinder otherwise gets confused and segfaults.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221142 91177308-0d34-0410-b5e6-96231b3b80d8

bindings/ocaml/llvm/llvm_ocaml.c

index b43b375..d868288 100644 (file)
@@ -1590,11 +1590,12 @@ CAMLprim value llvm_position_builder(value Pos, value B) {
 }
 
 /* llbuilder -> llbasicblock */
 }
 
 /* llbuilder -> llbasicblock */
-CAMLprim LLVMBasicBlockRef llvm_insertion_block(value B) {
+CAMLprim value llvm_insertion_block(value B) {
+  CAMLparam0();
   LLVMBasicBlockRef InsertBlock = LLVMGetInsertBlock(Builder_val(B));
   if (!InsertBlock)
   LLVMBasicBlockRef InsertBlock = LLVMGetInsertBlock(Builder_val(B));
   if (!InsertBlock)
-    raise_not_found();
-  return InsertBlock;
+    caml_raise_not_found();
+  CAMLreturn((value) InsertBlock);
 }
 
 /* llvalue -> string -> llbuilder -> unit */
 }
 
 /* llvalue -> string -> llbuilder -> unit */