mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
C and Objective Caml bindings for GlobalVariable::isConstant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42736 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f16c595252
commit
c84c16be9b
@ -142,6 +142,9 @@
|
||||
9F7C240C0CB81ECD00498408 /* analysis_ocaml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = analysis_ocaml.c; sourceTree = "<group>"; };
|
||||
9F7C240D0CB81ECD00498408 /* llvm_analysis.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = llvm_analysis.ml; sourceTree = "<group>"; };
|
||||
9F7C240E0CB81ECD00498408 /* llvm_analysis.mli */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = llvm_analysis.mli; sourceTree = "<group>"; };
|
||||
9F7C2C4F0CB9496C00498408 /* analysis.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = analysis.ml; sourceTree = "<group>"; };
|
||||
9F7C2C520CB9496C00498408 /* bitwriter.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitwriter.ml; sourceTree = "<group>"; };
|
||||
9F7C2C5D0CB9496C00498408 /* vmcore.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vmcore.ml; sourceTree = "<group>"; };
|
||||
9FA638D90C77B184007F12AE /* AutoUpgrade.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AutoUpgrade.h; sourceTree = "<group>"; };
|
||||
9FA638DA0C77B184007F12AE /* GlobalAlias.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GlobalAlias.h; sourceTree = "<group>"; };
|
||||
9FA638DB0C77B1AB007F12AE /* APInt.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = APInt.h; sourceTree = "<group>"; };
|
||||
@ -1071,6 +1074,7 @@
|
||||
DE816FAC08CFB44C0093BDEF /* utils */,
|
||||
DE66F38D08ABF35C00323D32 /* docs */,
|
||||
9FD3E56D0CA0116100E54D15 /* bindings */,
|
||||
9F7C2B690CB9496B00498408 /* test */,
|
||||
DE66F3FD08ABF37000323D32 /* examples */,
|
||||
DE66F38C08ABF35300323D32 /* CREDITS.TXT */,
|
||||
CFD99AA80AFE827B0068D19C /* LICENSE.TXT */,
|
||||
@ -1170,6 +1174,33 @@
|
||||
path = analysis;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9F7C2B690CB9496B00498408 /* test */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9F7C2C4B0CB9496C00498408 /* Bindings */,
|
||||
);
|
||||
name = test;
|
||||
path = ../test;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
9F7C2C4B0CB9496C00498408 /* Bindings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9F7C2C4C0CB9496C00498408 /* Ocaml */,
|
||||
);
|
||||
path = Bindings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9F7C2C4C0CB9496C00498408 /* Ocaml */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9F7C2C4F0CB9496C00498408 /* analysis.ml */,
|
||||
9F7C2C520CB9496C00498408 /* bitwriter.ml */,
|
||||
9F7C2C5D0CB9496C00498408 /* vmcore.ml */,
|
||||
);
|
||||
path = Ocaml;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9FA638E90C77B252007F12AE /* IPO */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -268,6 +268,9 @@ external visibility : llvalue -> visibility = "llvm_visibility"
|
||||
external set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
|
||||
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"
|
||||
external set_global_constant : bool -> llvalue -> unit
|
||||
= "llvm_set_global_constant"
|
||||
|
||||
(*--... Operations on global variables .....................................--*)
|
||||
external declare_global : lltype -> string -> llmodule -> llvalue
|
||||
|
@ -251,6 +251,9 @@ external visibility : llvalue -> visibility = "llvm_visibility"
|
||||
external set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
|
||||
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"
|
||||
external set_global_constant : bool -> llvalue -> unit
|
||||
= "llvm_set_global_constant"
|
||||
|
||||
(*--... Operations on global variables .....................................--*)
|
||||
external declare_global : lltype -> string -> llmodule -> llvalue
|
||||
|
@ -445,6 +445,17 @@ CAMLprim value llvm_set_thread_local(value IsThreadLocal,
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/* llvalue -> bool */
|
||||
CAMLprim value llvm_is_global_constant(LLVMValueRef GlobalVar) {
|
||||
return Val_bool(LLVMIsGlobalConstant(GlobalVar));
|
||||
}
|
||||
|
||||
/* bool -> llvalue -> unit */
|
||||
CAMLprim value llvm_set_global_constant(value Flag, LLVMValueRef GlobalVar) {
|
||||
LLVMSetGlobalConstant(GlobalVar, Bool_val(Flag));
|
||||
return Val_unit;
|
||||
}
|
||||
|
||||
/*--... Operations on functions ............................................--*/
|
||||
|
||||
/* string -> lltype -> llmodule -> llvalue */
|
||||
|
@ -324,6 +324,8 @@ LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar);
|
||||
void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal);
|
||||
int LLVMIsThreadLocal(LLVMValueRef GlobalVar);
|
||||
void LLVMSetThreadLocal(LLVMValueRef GlobalVar, int IsThreadLocal);
|
||||
int LLVMIsGlobalConstant(LLVMValueRef GlobalVar);
|
||||
void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, int IsConstant);
|
||||
|
||||
/* Operations on functions */
|
||||
LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
|
||||
|
@ -557,6 +557,17 @@ void LLVMSetThreadLocal(LLVMValueRef GlobalVar, int IsThreadLocal) {
|
||||
unwrap<GlobalVariable>(GlobalVar)->setThreadLocal(IsThreadLocal != 0);
|
||||
}
|
||||
|
||||
int LLVMIsGlobalConstant(LLVMValueRef GlobalVar) {
|
||||
bool res = unwrap<GlobalVariable>(GlobalVar)->isConstant();
|
||||
fprintf(stderr, "LLVMIsConstantGlobal(0x%08x) = %s\n",
|
||||
(int) GlobalVar, res? "YES" : "NO");
|
||||
return unwrap<GlobalVariable>(GlobalVar)->isConstant();
|
||||
}
|
||||
|
||||
void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, int IsConstant) {
|
||||
unwrap<GlobalVariable>(GlobalVar)->setConstant(IsConstant != 0);
|
||||
}
|
||||
|
||||
/*--.. Operations on functions .............................................--*/
|
||||
|
||||
LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
|
||||
|
@ -418,7 +418,15 @@ let test_global_variables () =
|
||||
*)
|
||||
group "delete";
|
||||
let g = define_global "GVar05" fourty_two32 m in
|
||||
delete_global g
|
||||
delete_global g;
|
||||
|
||||
(* RUN: grep -v {ConstGlobalVar.*constant} < %t.ll
|
||||
*)
|
||||
group "constant";
|
||||
let g = define_global "ConstGlobalVar" fourty_two32 m in
|
||||
insist (not (is_global_constant g));
|
||||
set_global_constant true g;
|
||||
insist (is_global_constant g)
|
||||
|
||||
|
||||
(*===-- Functions ---------------------------------------------------------===*)
|
||||
|
Loading…
Reference in New Issue
Block a user