mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +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 =
|
||||
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 ............................................--*)
|
||||
external declare_function : string -> lltype -> llmodule -> llvalue
|
||||
= "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"
|
||||
|
||||
|
||||
(** {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} *)
|
||||
|
||||
(** [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;
|
||||
}
|
||||
|
||||
/*--... 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 ............................................--*/
|
||||
|
||||
DEFINE_ITERATORS(function, Function, LLVMModuleRef, LLVMValueRef,
|
||||
|
@ -606,6 +606,14 @@ let test_global_variables () =
|
||||
dispose_module m
|
||||
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 ---------------------------------------------------------===*)
|
||||
|
||||
@ -1265,6 +1273,7 @@ let _ =
|
||||
suite "constants" test_constants;
|
||||
suite "global values" test_global_values;
|
||||
suite "global variables" test_global_variables;
|
||||
suite "aliases" test_aliases;
|
||||
suite "functions" test_functions;
|
||||
suite "params" test_params;
|
||||
suite "basic blocks" test_basic_blocks;
|
||||
|
Loading…
Reference in New Issue
Block a user