mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
[OCaml] Expose LLVM{Get,Set}DLLStorageClass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220902 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
39363abb5c
commit
41796b40a9
@ -66,6 +66,13 @@ module Visibility = struct
|
||||
| Protected
|
||||
end
|
||||
|
||||
module DLLStorageClass = struct
|
||||
type t =
|
||||
| Default
|
||||
| DLLImport
|
||||
| DLLExport
|
||||
end
|
||||
|
||||
module CallConv = struct
|
||||
let c = 0
|
||||
let fast = 8
|
||||
@ -575,6 +582,8 @@ external section : llvalue -> string = "llvm_section"
|
||||
external set_section : string -> llvalue -> unit = "llvm_set_section"
|
||||
external visibility : llvalue -> Visibility.t = "llvm_visibility"
|
||||
external set_visibility : Visibility.t -> llvalue -> unit = "llvm_set_visibility"
|
||||
external dll_storage_class : llvalue -> DLLStorageClass.t = "llvm_dll_storage_class"
|
||||
external set_dll_storage_class : DLLStorageClass.t -> llvalue -> unit = "llvm_set_dll_storage_class"
|
||||
external alignment : llvalue -> int = "llvm_alignment"
|
||||
external set_alignment : int -> llvalue -> unit = "llvm_set_alignment"
|
||||
external is_global_constant : llvalue -> bool = "llvm_is_global_constant"
|
||||
|
@ -105,6 +105,15 @@ module Visibility : sig
|
||||
| Protected
|
||||
end
|
||||
|
||||
(** The DLL storage class of a global value, accessed with {!dll_storage_class} and
|
||||
{!set_dll_storage_class}. See [llvm::GlobalValue::DLLStorageClassTypes]. *)
|
||||
module DLLStorageClass : sig
|
||||
type t =
|
||||
| Default
|
||||
| DLLImport
|
||||
| DLLExport
|
||||
end
|
||||
|
||||
(** The following calling convention values may be accessed with
|
||||
{!function_call_conv} and {!set_function_call_conv}. Calling
|
||||
conventions are open-ended. *)
|
||||
@ -1259,6 +1268,14 @@ val visibility : llvalue -> Visibility.t
|
||||
[v]. See the method [llvm::GlobalValue::setVisibility]. *)
|
||||
val set_visibility : Visibility.t -> llvalue -> unit
|
||||
|
||||
(** [dll_storage_class g] returns the DLL storage class of the global value [g].
|
||||
See the method [llvm::GlobalValue::getDLLStorageClass]. *)
|
||||
val dll_storage_class : llvalue -> DLLStorageClass.t
|
||||
|
||||
(** [set_dll_storage_class v g] sets the DLL storage class of the global value [g] to
|
||||
[v]. See the method [llvm::GlobalValue::setDLLStorageClass]. *)
|
||||
val set_dll_storage_class : DLLStorageClass.t -> llvalue -> unit
|
||||
|
||||
(** [alignment g] returns the required alignment of the global value [g].
|
||||
See the method [llvm::GlobalValue::getAlignment]. *)
|
||||
val alignment : llvalue -> int
|
||||
|
@ -957,6 +957,17 @@ CAMLprim value llvm_set_visibility(value Viz, LLVMValueRef Global) {
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* llvalue -> DLLStorageClass.t */
|
||||
CAMLprim value llvm_dll_storage_class(LLVMValueRef Global) {
|
||||
return Val_int(LLVMGetDLLStorageClass(Global));
|
||||
}
|
||||
|
||||
/* DLLStorageClass.t -> llvalue -> unit */
|
||||
CAMLprim value llvm_set_dll_storage_class(value Viz, LLVMValueRef Global) {
|
||||
LLVMSetDLLStorageClass(Global, Int_val(Viz));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* llvalue -> int */
|
||||
CAMLprim value llvm_alignment(LLVMValueRef Global) {
|
||||
return Val_int(LLVMGetAlignment(Global));
|
||||
|
@ -442,7 +442,14 @@ let test_global_values () =
|
||||
group "alignment";
|
||||
let g = define_global "GVal05" zero32 m ++
|
||||
set_alignment 128 in
|
||||
insist (128 = alignment g)
|
||||
insist (128 = alignment g);
|
||||
|
||||
(* CHECK: GVal06{{.*}}dllexport
|
||||
*)
|
||||
group "dll_storage_class";
|
||||
let g = define_global "GVal06" zero32 m ++
|
||||
set_dll_storage_class DLLStorageClass.DLLExport in
|
||||
insist (DLLStorageClass.DLLExport = dll_storage_class g)
|
||||
|
||||
|
||||
(*===-- Global Variables --------------------------------------------------===*)
|
||||
|
Loading…
x
Reference in New Issue
Block a user