diff options
author | Duncan Sands <baldrick@free.fr> | 2009-05-06 12:21:17 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2009-05-06 12:21:17 +0000 |
commit | e149e9960ba0726f4b084763f7ef95afa12d9a88 (patch) | |
tree | c144c4b0a0cf3bb4b3e7d55726690106df2adcf8 /bindings/ocaml/llvm/llvm_ocaml.c | |
parent | a9cad0e7e09e6d34de2fccb4f1294b7f0b8f3b68 (diff) | |
download | external_llvm-e149e9960ba0726f4b084763f7ef95afa12d9a88.zip external_llvm-e149e9960ba0726f4b084763f7ef95afa12d9a88.tar.gz external_llvm-e149e9960ba0726f4b084763f7ef95afa12d9a88.tar.bz2 |
OCaml parameter attribute bindings from PR2752.
Incomplete, but better than nothing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71081 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/llvm/llvm_ocaml.c')
-rw-r--r-- | bindings/ocaml/llvm/llvm_ocaml.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index 35cd7d2..c4eba13 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -665,6 +665,17 @@ CAMLprim value llvm_set_gc(value GC, LLVMValueRef Fn) { return Val_unit; } +/* llvalue -> Attribute.t -> unit */ +CAMLprim value llvm_add_function_attr(LLVMValueRef Arg, value PA) { + LLVMAddFunctionAttr(Arg, 1<<Int_val(PA)); + return Val_unit; +} + +/* llvalue -> Attribute.t -> unit */ +CAMLprim value llvm_remove_function_attr(LLVMValueRef Arg, value PA) { + LLVMRemoveFunctionAttr(Arg, 1<<Int_val(PA)); + return Val_unit; +} /*--... Operations on parameters ...........................................--*/ DEFINE_ITERATORS(param, Param, LLVMValueRef, LLVMValueRef, LLVMGetParamParent) @@ -681,6 +692,24 @@ CAMLprim value llvm_params(LLVMValueRef Fn, value Index) { return Params; } +/* llvalue -> Attribute.t -> unit */ +CAMLprim value llvm_add_param_attr(LLVMValueRef Arg, value PA) { + LLVMAddAttribute(Arg, 1<<Int_val(PA)); + return Val_unit; +} + +/* llvalue -> Attribute.t -> unit */ +CAMLprim value llvm_remove_param_attr(LLVMValueRef Arg, value PA) { + LLVMRemoveAttribute(Arg, 1<<Int_val(PA)); + return Val_unit; +} + +/* llvalue -> int -> unit */ +CAMLprim value llvm_set_param_alignment(LLVMValueRef Arg, value align) { + LLVMSetParamAlignment(Arg, Int_val(align)); + return Val_unit; +} + /*--... Operations on basic blocks .........................................--*/ DEFINE_ITERATORS( @@ -733,6 +762,22 @@ CAMLprim value llvm_set_instruction_call_conv(value CC, LLVMValueRef Inst) { return Val_unit; } +/* llvalue -> int -> Attribute.t -> unit */ +CAMLprim value llvm_add_instruction_param_attr(LLVMValueRef Instr, + value index, + value PA) { + LLVMAddInstrAttribute(Instr, Int_val(index), 1<<Int_val(PA)); + return Val_unit; +} + +/* llvalue -> int -> Attribute.t -> unit */ +CAMLprim value llvm_remove_instruction_param_attr(LLVMValueRef Instr, + value index, + value PA) { + LLVMRemoveInstrAttribute(Instr, Int_val(index), 1<<Int_val(PA)); + return Val_unit; +} + /*--... Operations on call instructions (only) .............................--*/ /* llvalue -> bool */ |