From c8ac229cc8349685117f68bc6f1da04f98015cd6 Mon Sep 17 00:00:00 2001 From: Peter Zotov Date: Tue, 5 Nov 2013 11:56:20 +0000 Subject: [OCaml] (PR16318) Add missing argument to Llvm.const_intcast git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194065 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/ocaml/llvm/llvm.ml | 3 ++- bindings/ocaml/llvm/llvm.mli | 10 ++++++---- bindings/ocaml/llvm/llvm_ocaml.c | 6 ++++++ 3 files changed, 14 insertions(+), 5 deletions(-) (limited to 'bindings') diff --git a/bindings/ocaml/llvm/llvm.ml b/bindings/ocaml/llvm/llvm.ml index e5ffd59..1bf91f4 100644 --- a/bindings/ocaml/llvm/llvm.ml +++ b/bindings/ocaml/llvm/llvm.ml @@ -529,7 +529,8 @@ external const_trunc_or_bitcast : llvalue -> lltype -> llvalue = "LLVMConstTruncOrBitCast" external const_pointercast : llvalue -> lltype -> llvalue = "LLVMConstPointerCast" -external const_intcast : llvalue -> lltype -> llvalue = "LLVMConstIntCast" +external const_intcast : llvalue -> lltype -> is_signed:bool -> llvalue + = "llvm_const_intcast" external const_fpcast : llvalue -> lltype -> llvalue = "LLVMConstFPCast" external const_select : llvalue -> llvalue -> llvalue -> llvalue = "LLVMConstSelect" diff --git a/bindings/ocaml/llvm/llvm.mli b/bindings/ocaml/llvm/llvm.mli index 8d08c0a..f70fd60 100644 --- a/bindings/ocaml/llvm/llvm.mli +++ b/bindings/ocaml/llvm/llvm.mli @@ -1118,10 +1118,12 @@ val const_trunc_or_bitcast : llvalue -> lltype -> llvalue See the method [llvm::ConstantExpr::getPointerCast]. *) val const_pointercast : llvalue -> lltype -> llvalue -(** [const_intcast c ty] returns a constant zext, bitcast, or trunc for integer - -> integer casts of constant [c] to type [ty]. - See the method [llvm::ConstantExpr::getIntCast]. *) -val const_intcast : llvalue -> lltype -> llvalue +(** [const_intcast c ty ~is_signed] returns a constant sext/zext, bitcast, + or trunc for integer -> integer casts of constant [c] to type [ty]. + When converting a narrower value to a wider one, whether sext or zext + will be used is controlled by [is_signed]. + See the method [llvm::ConstantExpr::getIntegerCast]. *) +val const_intcast : llvalue -> lltype -> is_signed:bool -> llvalue (** [const_fpcast c ty] returns a constant fpext, bitcast, or fptrunc for fp -> fp casts of constant [c] to type [ty]. diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index 46c170b..e7ebde2 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -771,6 +771,12 @@ CAMLprim LLVMValueRef llvm_const_in_bounds_gep(LLVMValueRef ConstantVal, Wosize_val(Indices)); } +/* llvalue -> lltype -> is_signed:bool -> llvalue */ +CAMLprim LLVMValueRef llvm_const_intcast(LLVMValueRef CV, LLVMTypeRef T, + value IsSigned) { + return LLVMConstIntCast(CV, T, Bool_val(IsSigned)); +} + /* llvalue -> int array -> llvalue */ CAMLprim LLVMValueRef llvm_const_extractvalue(LLVMValueRef Aggregate, value Indices) { -- cgit v1.1