mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-24 04:09:47 +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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
9FA638DB0C77B1AB007F12AE /* APInt.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = APInt.h; sourceTree = "<group>"; };
|
||||||
@ -1071,6 +1074,7 @@
|
|||||||
DE816FAC08CFB44C0093BDEF /* utils */,
|
DE816FAC08CFB44C0093BDEF /* utils */,
|
||||||
DE66F38D08ABF35C00323D32 /* docs */,
|
DE66F38D08ABF35C00323D32 /* docs */,
|
||||||
9FD3E56D0CA0116100E54D15 /* bindings */,
|
9FD3E56D0CA0116100E54D15 /* bindings */,
|
||||||
|
9F7C2B690CB9496B00498408 /* test */,
|
||||||
DE66F3FD08ABF37000323D32 /* examples */,
|
DE66F3FD08ABF37000323D32 /* examples */,
|
||||||
DE66F38C08ABF35300323D32 /* CREDITS.TXT */,
|
DE66F38C08ABF35300323D32 /* CREDITS.TXT */,
|
||||||
CFD99AA80AFE827B0068D19C /* LICENSE.TXT */,
|
CFD99AA80AFE827B0068D19C /* LICENSE.TXT */,
|
||||||
@ -1170,6 +1174,33 @@
|
|||||||
path = analysis;
|
path = analysis;
|
||||||
sourceTree = "<group>";
|
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 */ = {
|
9FA638E90C77B252007F12AE /* IPO */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -268,6 +268,9 @@ external visibility : llvalue -> visibility = "llvm_visibility"
|
|||||||
external set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
|
external set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
|
||||||
external alignment : llvalue -> int = "llvm_alignment"
|
external alignment : llvalue -> int = "llvm_alignment"
|
||||||
external set_alignment : int -> llvalue -> unit = "llvm_set_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 .....................................--*)
|
(*--... Operations on global variables .....................................--*)
|
||||||
external declare_global : lltype -> string -> llmodule -> llvalue
|
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 set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
|
||||||
external alignment : llvalue -> int = "llvm_alignment"
|
external alignment : llvalue -> int = "llvm_alignment"
|
||||||
external set_alignment : int -> llvalue -> unit = "llvm_set_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 .....................................--*)
|
(*--... Operations on global variables .....................................--*)
|
||||||
external declare_global : lltype -> string -> llmodule -> llvalue
|
external declare_global : lltype -> string -> llmodule -> llvalue
|
||||||
|
@ -445,6 +445,17 @@ CAMLprim value llvm_set_thread_local(value IsThreadLocal,
|
|||||||
return Val_unit;
|
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 ............................................--*/
|
/*--... Operations on functions ............................................--*/
|
||||||
|
|
||||||
/* string -> lltype -> llmodule -> llvalue */
|
/* string -> lltype -> llmodule -> llvalue */
|
||||||
|
@ -324,6 +324,8 @@ LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar);
|
|||||||
void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal);
|
void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal);
|
||||||
int LLVMIsThreadLocal(LLVMValueRef GlobalVar);
|
int LLVMIsThreadLocal(LLVMValueRef GlobalVar);
|
||||||
void LLVMSetThreadLocal(LLVMValueRef GlobalVar, int IsThreadLocal);
|
void LLVMSetThreadLocal(LLVMValueRef GlobalVar, int IsThreadLocal);
|
||||||
|
int LLVMIsGlobalConstant(LLVMValueRef GlobalVar);
|
||||||
|
void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, int IsConstant);
|
||||||
|
|
||||||
/* Operations on functions */
|
/* Operations on functions */
|
||||||
LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
|
LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
|
||||||
|
@ -557,6 +557,17 @@ void LLVMSetThreadLocal(LLVMValueRef GlobalVar, int IsThreadLocal) {
|
|||||||
unwrap<GlobalVariable>(GlobalVar)->setThreadLocal(IsThreadLocal != 0);
|
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 .............................................--*/
|
/*--.. Operations on functions .............................................--*/
|
||||||
|
|
||||||
LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
|
LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
|
||||||
|
@ -418,7 +418,15 @@ let test_global_variables () =
|
|||||||
*)
|
*)
|
||||||
group "delete";
|
group "delete";
|
||||||
let g = define_global "GVar05" fourty_two32 m in
|
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 ---------------------------------------------------------===*)
|
(*===-- Functions ---------------------------------------------------------===*)
|
||||||
|
Loading…
Reference in New Issue
Block a user