mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-05 13:16:32 +00:00
[OCaml] Add Llvm.{string_of_const,const_element}.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214677 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -782,6 +782,31 @@ CAMLprim LLVMValueRef llvm_const_vector(value ElementVals) {
|
||||
Wosize_val(ElementVals));
|
||||
}
|
||||
|
||||
/* llvalue -> string option */
|
||||
CAMLprim value llvm_string_of_const(LLVMValueRef Const) {
|
||||
const char *S;
|
||||
size_t Len;
|
||||
CAMLparam0();
|
||||
CAMLlocal2(Option, Str);
|
||||
|
||||
if(LLVMIsAConstantDataSequential(Const) && LLVMIsConstantString(Const)) {
|
||||
S = LLVMGetAsString(Const, &Len);
|
||||
Str = caml_alloc_string(Len);
|
||||
memcpy(String_val(Str), S, Len);
|
||||
|
||||
Option = alloc(1, 0);
|
||||
Field(Option, 0) = Str;
|
||||
CAMLreturn(Option);
|
||||
} else {
|
||||
CAMLreturn(Val_int(0));
|
||||
}
|
||||
}
|
||||
|
||||
/* llvalue -> int -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_const_element(LLVMValueRef Const, value N) {
|
||||
return LLVMGetElementAsConstant(Const, Int_val(N));
|
||||
}
|
||||
|
||||
/*--... Constant expressions ...............................................--*/
|
||||
|
||||
/* Icmp.t -> llvalue -> llvalue -> llvalue */
|
||||
|
||||
Reference in New Issue
Block a user