mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
Add support for global aliases to ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97413 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ce89b4e66f
commit
6ba5c56cf5
@ -444,6 +444,10 @@ let rec fold_right_global_range f i e init =
|
|||||||
let fold_right_globals f m init =
|
let fold_right_globals f m init =
|
||||||
fold_right_global_range f (global_end m) (At_start m) init
|
fold_right_global_range f (global_end m) (At_start m) init
|
||||||
|
|
||||||
|
(*--... Operations on aliases ..............................................--*)
|
||||||
|
external add_alias : llmodule -> lltype -> llvalue -> string -> llvalue
|
||||||
|
= "llvm_add_alias"
|
||||||
|
|
||||||
(*--... Operations on functions ............................................--*)
|
(*--... Operations on functions ............................................--*)
|
||||||
external declare_function : string -> lltype -> llmodule -> llvalue
|
external declare_function : string -> lltype -> llmodule -> llvalue
|
||||||
= "llvm_declare_function"
|
= "llvm_declare_function"
|
||||||
|
@ -1140,6 +1140,15 @@ external is_thread_local : llvalue -> bool = "llvm_is_thread_local"
|
|||||||
external set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local"
|
external set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local"
|
||||||
|
|
||||||
|
|
||||||
|
(** {7 Operations on aliases} *)
|
||||||
|
|
||||||
|
(** [add_alias m t a n] inserts an alias in the module [m] with the type [t] and
|
||||||
|
the aliasee [a] with the name [n].
|
||||||
|
See the constructor for [llvm::GlobalAlias]. *)
|
||||||
|
external add_alias : llmodule -> lltype -> llvalue -> string -> llvalue
|
||||||
|
= "llvm_add_alias"
|
||||||
|
|
||||||
|
|
||||||
(** {7 Operations on functions} *)
|
(** {7 Operations on functions} *)
|
||||||
|
|
||||||
(** [declare_function name ty m] returns a new function of type [ty] and
|
(** [declare_function name ty m] returns a new function of type [ty] and
|
||||||
|
@ -807,6 +807,13 @@ CAMLprim value llvm_set_global_constant(value Flag, LLVMValueRef GlobalVar) {
|
|||||||
return Val_unit;
|
return Val_unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*--... Operations on aliases ..............................................--*/
|
||||||
|
|
||||||
|
CAMLprim LLVMValueRef llvm_add_alias(LLVMModuleRef M, LLVMTypeRef Ty,
|
||||||
|
LLVMValueRef Aliasee, value Name) {
|
||||||
|
return LLVMAddAlias(M, Ty, Aliasee, String_val(Name));
|
||||||
|
}
|
||||||
|
|
||||||
/*--... Operations on functions ............................................--*/
|
/*--... Operations on functions ............................................--*/
|
||||||
|
|
||||||
DEFINE_ITERATORS(function, Function, LLVMModuleRef, LLVMValueRef,
|
DEFINE_ITERATORS(function, Function, LLVMModuleRef, LLVMValueRef,
|
||||||
|
@ -606,6 +606,14 @@ let test_global_variables () =
|
|||||||
dispose_module m
|
dispose_module m
|
||||||
end
|
end
|
||||||
|
|
||||||
|
(*===-- Aliases -----------------------------------------------------------===*)
|
||||||
|
|
||||||
|
let test_aliases () =
|
||||||
|
(* RUN: grep {@alias = alias i32\\* @aliasee} < %t.ll
|
||||||
|
*)
|
||||||
|
let v = declare_global i32_type "aliasee" m in
|
||||||
|
ignore (add_alias m (pointer_type i32_type) v "alias")
|
||||||
|
|
||||||
|
|
||||||
(*===-- Functions ---------------------------------------------------------===*)
|
(*===-- Functions ---------------------------------------------------------===*)
|
||||||
|
|
||||||
@ -1265,6 +1273,7 @@ let _ =
|
|||||||
suite "constants" test_constants;
|
suite "constants" test_constants;
|
||||||
suite "global values" test_global_values;
|
suite "global values" test_global_values;
|
||||||
suite "global variables" test_global_variables;
|
suite "global variables" test_global_variables;
|
||||||
|
suite "aliases" test_aliases;
|
||||||
suite "functions" test_functions;
|
suite "functions" test_functions;
|
||||||
suite "params" test_params;
|
suite "params" test_params;
|
||||||
suite "basic blocks" test_basic_blocks;
|
suite "basic blocks" test_basic_blocks;
|
||||||
|
Loading…
Reference in New Issue
Block a user