Convert *u8 native string users to *c_char
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import std::map::hashmap;
|
||||
|
||||
import libc::{c_int, c_uint, c_longlong, c_ulonglong};
|
||||
import libc::{c_char, c_int, c_uint, c_longlong, c_ulonglong};
|
||||
|
||||
type Opcode = u32;
|
||||
type Bool = c_uint;
|
||||
@@ -147,28 +147,28 @@ native mod llvm {
|
||||
fn LLVMContextCreate() -> ContextRef;
|
||||
fn LLVMGetGlobalContext() -> ContextRef;
|
||||
fn LLVMContextDispose(C: ContextRef);
|
||||
fn LLVMGetMDKindIDInContext(C: ContextRef, Name: *u8, SLen: c_uint) ->
|
||||
fn LLVMGetMDKindIDInContext(C: ContextRef, Name: *c_char, SLen: c_uint) ->
|
||||
c_uint;
|
||||
fn LLVMGetMDKindID(Name: *u8, SLen: c_uint) -> c_uint;
|
||||
fn LLVMGetMDKindID(Name: *c_char, SLen: c_uint) -> c_uint;
|
||||
|
||||
/* Create and destroy modules. */
|
||||
fn LLVMModuleCreateWithNameInContext(ModuleID: *u8, C: ContextRef) ->
|
||||
fn LLVMModuleCreateWithNameInContext(ModuleID: *c_char, C: ContextRef) ->
|
||||
ModuleRef;
|
||||
fn LLVMDisposeModule(M: ModuleRef);
|
||||
|
||||
/** Data layout. See Module::getDataLayout. */
|
||||
fn LLVMGetDataLayout(M: ModuleRef) -> *u8;
|
||||
fn LLVMSetDataLayout(M: ModuleRef, Triple: *u8);
|
||||
fn LLVMGetDataLayout(M: ModuleRef) -> *c_char;
|
||||
fn LLVMSetDataLayout(M: ModuleRef, Triple: *c_char);
|
||||
|
||||
/** Target triple. See Module::getTargetTriple. */
|
||||
fn LLVMGetTarget(M: ModuleRef) -> *u8;
|
||||
fn LLVMSetTarget(M: ModuleRef, Triple: *u8);
|
||||
fn LLVMGetTarget(M: ModuleRef) -> *c_char;
|
||||
fn LLVMSetTarget(M: ModuleRef, Triple: *c_char);
|
||||
|
||||
/** See Module::dump. */
|
||||
fn LLVMDumpModule(M: ModuleRef);
|
||||
|
||||
/** See Module::setModuleInlineAsm. */
|
||||
fn LLVMSetModuleInlineAsm(M: ModuleRef, Asm: *u8);
|
||||
fn LLVMSetModuleInlineAsm(M: ModuleRef, Asm: *c_char);
|
||||
|
||||
/** See llvm::LLVMTypeKind::getTypeID. */
|
||||
|
||||
@@ -252,8 +252,8 @@ native mod llvm {
|
||||
|
||||
/* Operations on all values */
|
||||
fn LLVMTypeOf(Val: ValueRef) -> TypeRef;
|
||||
fn LLVMGetValueName(Val: ValueRef) -> *u8;
|
||||
fn LLVMSetValueName(Val: ValueRef, Name: *u8);
|
||||
fn LLVMGetValueName(Val: ValueRef) -> *c_char;
|
||||
fn LLVMSetValueName(Val: ValueRef, Name: *c_char);
|
||||
fn LLVMDumpValue(Val: ValueRef);
|
||||
fn LLVMReplaceAllUsesWith(OldVal: ValueRef, NewVal: ValueRef);
|
||||
fn LLVMHasMetadata(Val: ValueRef) -> c_int;
|
||||
@@ -282,13 +282,13 @@ native mod llvm {
|
||||
fn LLVMConstPointerNull(Ty: TypeRef) -> ValueRef;
|
||||
|
||||
/* Operations on metadata */
|
||||
fn LLVMMDStringInContext(C: ContextRef, Str: *u8, SLen: c_uint) ->
|
||||
fn LLVMMDStringInContext(C: ContextRef, Str: *c_char, SLen: c_uint) ->
|
||||
ValueRef;
|
||||
fn LLVMMDString(Str: *u8, SLen: c_uint) -> ValueRef;
|
||||
fn LLVMMDString(Str: *c_char, SLen: c_uint) -> ValueRef;
|
||||
fn LLVMMDNodeInContext(C: ContextRef, Vals: *ValueRef, Count: c_uint) ->
|
||||
ValueRef;
|
||||
fn LLVMMDNode(Vals: *ValueRef, Count: c_uint) -> ValueRef;
|
||||
fn LLVMAddNamedMetadataOperand(M: ModuleRef, Str: *u8,
|
||||
fn LLVMAddNamedMetadataOperand(M: ModuleRef, Str: *c_char,
|
||||
Val: ValueRef);
|
||||
|
||||
/* Operations on scalar constants */
|
||||
@@ -296,25 +296,26 @@ native mod llvm {
|
||||
ValueRef;
|
||||
// FIXME: radix is actually u8, but our native layer can't handle this
|
||||
// yet. lucky for us we're little-endian. Small miracles.
|
||||
fn LLVMConstIntOfString(IntTy: TypeRef, Text: *u8, Radix: c_int) ->
|
||||
fn LLVMConstIntOfString(IntTy: TypeRef, Text: *c_char, Radix: c_int) ->
|
||||
ValueRef;
|
||||
fn LLVMConstIntOfStringAndSize(IntTy: TypeRef, Text: *u8, SLen: c_uint,
|
||||
fn LLVMConstIntOfStringAndSize(IntTy: TypeRef, Text: *c_char,
|
||||
SLen: c_uint,
|
||||
Radix: u8) -> ValueRef;
|
||||
fn LLVMConstReal(RealTy: TypeRef, N: f64) -> ValueRef;
|
||||
fn LLVMConstRealOfString(RealTy: TypeRef, Text: *u8) -> ValueRef;
|
||||
fn LLVMConstRealOfStringAndSize(RealTy: TypeRef, Text: *u8,
|
||||
fn LLVMConstRealOfString(RealTy: TypeRef, Text: *c_char) -> ValueRef;
|
||||
fn LLVMConstRealOfStringAndSize(RealTy: TypeRef, Text: *c_char,
|
||||
SLen: c_uint) -> ValueRef;
|
||||
fn LLVMConstIntGetZExtValue(ConstantVal: ValueRef) -> c_ulonglong;
|
||||
fn LLVMConstIntGetSExtValue(ConstantVal: ValueRef) -> c_longlong;
|
||||
|
||||
|
||||
/* Operations on composite constants */
|
||||
fn LLVMConstStringInContext(C: ContextRef, Str: *u8, Length: c_uint,
|
||||
fn LLVMConstStringInContext(C: ContextRef, Str: *c_char, Length: c_uint,
|
||||
DontNullTerminate: Bool) -> ValueRef;
|
||||
fn LLVMConstStructInContext(C: ContextRef, ConstantVals: *ValueRef,
|
||||
Count: c_uint, Packed: Bool) -> ValueRef;
|
||||
|
||||
fn LLVMConstString(Str: *u8, Length: c_uint,
|
||||
fn LLVMConstString(Str: *c_char, Length: c_uint,
|
||||
DontNullTerminate: Bool) -> ValueRef;
|
||||
fn LLVMConstArray(ElementTy: TypeRef, ConstantVals: *ValueRef,
|
||||
Length: c_uint) -> ValueRef;
|
||||
@@ -416,9 +417,9 @@ native mod llvm {
|
||||
fn LLVMConstInsertValue(AggConstant: ValueRef,
|
||||
ElementValueConstant: ValueRef, IdxList: *uint,
|
||||
NumIdx: c_uint) -> ValueRef;
|
||||
fn LLVMConstInlineAsm(Ty: TypeRef, AsmString: *u8, Constraints: *u8,
|
||||
HasSideEffects: Bool, IsAlignStack: Bool) ->
|
||||
ValueRef;
|
||||
fn LLVMConstInlineAsm(Ty: TypeRef, AsmString: *c_char,
|
||||
Constraints: *c_char, HasSideEffects: Bool,
|
||||
IsAlignStack: Bool) -> ValueRef;
|
||||
fn LLVMBlockAddress(F: ValueRef, BB: BasicBlockRef) -> ValueRef;
|
||||
|
||||
|
||||
@@ -428,8 +429,8 @@ native mod llvm {
|
||||
fn LLVMIsDeclaration(Global: ValueRef) -> Bool;
|
||||
fn LLVMGetLinkage(Global: ValueRef) -> c_uint;
|
||||
fn LLVMSetLinkage(Global: ValueRef, Link: c_uint);
|
||||
fn LLVMGetSection(Global: ValueRef) -> *u8;
|
||||
fn LLVMSetSection(Global: ValueRef, Section: *u8);
|
||||
fn LLVMGetSection(Global: ValueRef) -> *c_char;
|
||||
fn LLVMSetSection(Global: ValueRef, Section: *c_char);
|
||||
fn LLVMGetVisibility(Global: ValueRef) -> c_uint;
|
||||
fn LLVMSetVisibility(Global: ValueRef, Viz: c_uint);
|
||||
fn LLVMGetAlignment(Global: ValueRef) -> c_uint;
|
||||
@@ -437,10 +438,10 @@ native mod llvm {
|
||||
|
||||
|
||||
/* Operations on global variables */
|
||||
fn LLVMAddGlobal(M: ModuleRef, Ty: TypeRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMAddGlobalInAddressSpace(M: ModuleRef, Ty: TypeRef, Name: *u8,
|
||||
fn LLVMAddGlobal(M: ModuleRef, Ty: TypeRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMAddGlobalInAddressSpace(M: ModuleRef, Ty: TypeRef, Name: *c_char,
|
||||
AddressSpace: c_uint) -> ValueRef;
|
||||
fn LLVMGetNamedGlobal(M: ModuleRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMGetNamedGlobal(M: ModuleRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMGetFirstGlobal(M: ModuleRef) -> ValueRef;
|
||||
fn LLVMGetLastGlobal(M: ModuleRef) -> ValueRef;
|
||||
fn LLVMGetNextGlobal(GlobalVar: ValueRef) -> ValueRef;
|
||||
@@ -454,25 +455,25 @@ native mod llvm {
|
||||
fn LLVMSetGlobalConstant(GlobalVar: ValueRef, IsConstant: Bool);
|
||||
|
||||
/* Operations on aliases */
|
||||
fn LLVMAddAlias(M: ModuleRef, Ty: TypeRef, Aliasee: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMAddAlias(M: ModuleRef, Ty: TypeRef, Aliasee: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
|
||||
/* Operations on functions */
|
||||
fn LLVMAddFunction(M: ModuleRef, Name: *u8, FunctionTy: TypeRef) ->
|
||||
fn LLVMAddFunction(M: ModuleRef, Name: *c_char, FunctionTy: TypeRef) ->
|
||||
ValueRef;
|
||||
fn LLVMGetNamedFunction(M: ModuleRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMGetNamedFunction(M: ModuleRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMGetFirstFunction(M: ModuleRef) -> ValueRef;
|
||||
fn LLVMGetLastFunction(M: ModuleRef) -> ValueRef;
|
||||
fn LLVMGetNextFunction(Fn: ValueRef) -> ValueRef;
|
||||
fn LLVMGetPreviousFunction(Fn: ValueRef) -> ValueRef;
|
||||
fn LLVMDeleteFunction(Fn: ValueRef);
|
||||
fn LLVMGetOrInsertFunction(M: ModuleRef, Name: *u8, FunctionTy: TypeRef)
|
||||
-> ValueRef;
|
||||
fn LLVMGetOrInsertFunction(M: ModuleRef, Name: *c_char,
|
||||
FunctionTy: TypeRef) -> ValueRef;
|
||||
fn LLVMGetIntrinsicID(Fn: ValueRef) -> c_uint;
|
||||
fn LLVMGetFunctionCallConv(Fn: ValueRef) -> c_uint;
|
||||
fn LLVMSetFunctionCallConv(Fn: ValueRef, CC: c_uint);
|
||||
fn LLVMGetGC(Fn: ValueRef) -> *u8;
|
||||
fn LLVMSetGC(Fn: ValueRef, Name: *u8);
|
||||
fn LLVMGetGC(Fn: ValueRef) -> *c_char;
|
||||
fn LLVMSetGC(Fn: ValueRef, Name: *c_char);
|
||||
fn LLVMAddFunctionAttr(Fn: ValueRef, PA: c_uint, HighPA: c_uint);
|
||||
fn LLVMGetFunctionAttr(Fn: ValueRef) -> c_uint;
|
||||
fn LLVMRemoveFunctionAttr(Fn: ValueRef, PA: c_uint, HighPA: c_uint);
|
||||
@@ -504,13 +505,13 @@ native mod llvm {
|
||||
fn LLVMGetPreviousBasicBlock(BB: BasicBlockRef) -> BasicBlockRef;
|
||||
fn LLVMGetEntryBasicBlock(Fn: ValueRef) -> BasicBlockRef;
|
||||
|
||||
fn LLVMAppendBasicBlockInContext(C: ContextRef, Fn: ValueRef, Name: *u8)
|
||||
-> BasicBlockRef;
|
||||
fn LLVMAppendBasicBlockInContext(C: ContextRef, Fn: ValueRef,
|
||||
Name: *c_char) -> BasicBlockRef;
|
||||
fn LLVMInsertBasicBlockInContext(C: ContextRef, BB: BasicBlockRef,
|
||||
Name: *u8) -> BasicBlockRef;
|
||||
Name: *c_char) -> BasicBlockRef;
|
||||
|
||||
fn LLVMAppendBasicBlock(Fn: ValueRef, Name: *u8) -> BasicBlockRef;
|
||||
fn LLVMInsertBasicBlock(InsertBeforeBB: BasicBlockRef, Name: *u8) ->
|
||||
fn LLVMAppendBasicBlock(Fn: ValueRef, Name: *c_char) -> BasicBlockRef;
|
||||
fn LLVMInsertBasicBlock(InsertBeforeBB: BasicBlockRef, Name: *c_char) ->
|
||||
BasicBlockRef;
|
||||
fn LLVMDeleteBasicBlock(BB: BasicBlockRef);
|
||||
|
||||
@@ -553,7 +554,7 @@ native mod llvm {
|
||||
fn LLVMClearInsertionPosition(Builder: BuilderRef);
|
||||
fn LLVMInsertIntoBuilder(Builder: BuilderRef, Instr: ValueRef);
|
||||
fn LLVMInsertIntoBuilderWithName(Builder: BuilderRef, Instr: ValueRef,
|
||||
Name: *u8);
|
||||
Name: *c_char);
|
||||
fn LLVMDisposeBuilder(Builder: BuilderRef);
|
||||
|
||||
/* Metadata */
|
||||
@@ -575,9 +576,9 @@ native mod llvm {
|
||||
NumDests: c_uint) -> ValueRef;
|
||||
fn LLVMBuildInvoke(B: BuilderRef, Fn: ValueRef, Args: *ValueRef,
|
||||
NumArgs: c_uint, Then: BasicBlockRef,
|
||||
Catch: BasicBlockRef, Name: *u8) -> ValueRef;
|
||||
Catch: BasicBlockRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildLandingPad(B: BuilderRef, Ty: TypeRef, PersFn: ValueRef,
|
||||
NumClauses: c_uint, Name: *u8) -> ValueRef;
|
||||
NumClauses: c_uint, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildResume(B: BuilderRef, Exn: ValueRef) -> ValueRef;
|
||||
fn LLVMBuildUnreachable(B: BuilderRef) -> ValueRef;
|
||||
|
||||
@@ -594,169 +595,172 @@ native mod llvm {
|
||||
fn LLVMSetCleanup(LandingPad: ValueRef, Val: Bool);
|
||||
|
||||
/* Arithmetic */
|
||||
fn LLVMBuildAdd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildAdd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNSWAdd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNUWAdd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildFAdd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildSub(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFAdd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSub(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNSWSub(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNUWSub(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildFSub(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildMul(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFSub(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildMul(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNSWMul(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNUWMul(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildFMul(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildUDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildSDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFMul(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildUDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildExactSDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildFDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildURem(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildSRem(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildFRem(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildShl(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildLShr(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildAShr(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildAnd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildOr(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8) ->
|
||||
ValueRef;
|
||||
fn LLVMBuildXor(B: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: *u8)
|
||||
-> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFDiv(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildURem(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSRem(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFRem(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildShl(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildLShr(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildAShr(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildAnd(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildOr(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildXor(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildBinOp(B: BuilderRef, Op: Opcode, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildNeg(B: BuilderRef, V: ValueRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildNSWNeg(B: BuilderRef, V: ValueRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildNUWNeg(B: BuilderRef, V: ValueRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildFNeg(B: BuilderRef, V: ValueRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildNot(B: BuilderRef, V: ValueRef, Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNeg(B: BuilderRef, V: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNSWNeg(B: BuilderRef, V: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNUWNeg(B: BuilderRef, V: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFNeg(B: BuilderRef, V: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildNot(B: BuilderRef, V: ValueRef, Name: *c_char) -> ValueRef;
|
||||
|
||||
/* Memory */
|
||||
fn LLVMBuildMalloc(B: BuilderRef, Ty: TypeRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildMalloc(B: BuilderRef, Ty: TypeRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildArrayMalloc(B: BuilderRef, Ty: TypeRef, Val: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildAlloca(B: BuilderRef, Ty: TypeRef, Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildAlloca(B: BuilderRef, Ty: TypeRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildArrayAlloca(B: BuilderRef, Ty: TypeRef, Val: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFree(B: BuilderRef, PointerVal: ValueRef) -> ValueRef;
|
||||
fn LLVMBuildLoad(B: BuilderRef, PointerVal: ValueRef, Name: *u8) ->
|
||||
fn LLVMBuildLoad(B: BuilderRef, PointerVal: ValueRef, Name: *c_char) ->
|
||||
ValueRef;
|
||||
fn LLVMBuildStore(B: BuilderRef, Val: ValueRef, Ptr: ValueRef) ->
|
||||
ValueRef;
|
||||
fn LLVMBuildGEP(B: BuilderRef, Pointer: ValueRef, Indices: *ValueRef,
|
||||
NumIndices: c_uint, Name: *u8) -> ValueRef;
|
||||
NumIndices: c_uint, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildInBoundsGEP(B: BuilderRef, Pointer: ValueRef,
|
||||
Indices: *ValueRef, NumIndices: c_uint,
|
||||
Name: *u8)
|
||||
Name: *c_char)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildStructGEP(B: BuilderRef, Pointer: ValueRef, Idx: c_uint,
|
||||
Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildGlobalString(B: BuilderRef, Str: *u8, Name: *u8) ->
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildGlobalString(B: BuilderRef, Str: *c_char, Name: *c_char) ->
|
||||
ValueRef;
|
||||
fn LLVMBuildGlobalStringPtr(B: BuilderRef, Str: *u8, Name: *u8) ->
|
||||
fn LLVMBuildGlobalStringPtr(B: BuilderRef, Str: *c_char, Name: *c_char) ->
|
||||
ValueRef;
|
||||
|
||||
/* Casts */
|
||||
fn LLVMBuildTrunc(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildZExt(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSExt(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFPToUI(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFPToSI(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildUIToFP(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSIToFP(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFPTrunc(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFPExt(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildPtrToInt(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildIntToPtr(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildBitCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildZExtOrBitCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSExtOrBitCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildTruncOrBitCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildCast(B: BuilderRef, Op: Opcode, Val: ValueRef,
|
||||
DestTy: TypeRef, Name: *u8) -> ValueRef;
|
||||
DestTy: TypeRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildPointerCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildIntCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFPCast(B: BuilderRef, Val: ValueRef, DestTy: TypeRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
|
||||
/* Comparisons */
|
||||
fn LLVMBuildICmp(B: BuilderRef, Op: c_uint, LHS: ValueRef,
|
||||
RHS: ValueRef, Name: *u8) -> ValueRef;
|
||||
RHS: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildFCmp(B: BuilderRef, Op: c_uint, LHS: ValueRef,
|
||||
RHS: ValueRef, Name: *u8) -> ValueRef;
|
||||
RHS: ValueRef, Name: *c_char) -> ValueRef;
|
||||
|
||||
/* Miscellaneous instructions */
|
||||
fn LLVMBuildPhi(B: BuilderRef, Ty: TypeRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildPhi(B: BuilderRef, Ty: TypeRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildCall(B: BuilderRef, Fn: ValueRef, Args: *ValueRef,
|
||||
NumArgs: c_uint, Name: *u8) -> ValueRef;
|
||||
NumArgs: c_uint, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildSelect(B: BuilderRef, If: ValueRef, Then: ValueRef,
|
||||
Else: ValueRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildVAArg(B: BuilderRef, list: ValueRef, Ty: TypeRef, Name: *u8)
|
||||
Else: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildVAArg(B: BuilderRef, list: ValueRef, Ty: TypeRef,
|
||||
Name: *c_char)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildExtractElement(B: BuilderRef, VecVal: ValueRef,
|
||||
Index: ValueRef, Name: *u8) -> ValueRef;
|
||||
Index: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildInsertElement(B: BuilderRef, VecVal: ValueRef,
|
||||
EltVal: ValueRef, Index: ValueRef, Name: *u8)
|
||||
EltVal: ValueRef, Index: ValueRef,
|
||||
Name: *c_char)
|
||||
-> ValueRef;
|
||||
fn LLVMBuildShuffleVector(B: BuilderRef, V1: ValueRef, V2: ValueRef,
|
||||
Mask: ValueRef, Name: *u8) -> ValueRef;
|
||||
Mask: ValueRef, Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildExtractValue(B: BuilderRef, AggVal: ValueRef, Index: c_uint,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildInsertValue(B: BuilderRef, AggVal: ValueRef, EltVal: ValueRef,
|
||||
Index: c_uint, Name: *u8) -> ValueRef;
|
||||
Index: c_uint, Name: *c_char) -> ValueRef;
|
||||
|
||||
fn LLVMBuildIsNull(B: BuilderRef, Val: ValueRef, Name: *u8) -> ValueRef;
|
||||
fn LLVMBuildIsNotNull(B: BuilderRef, Val: ValueRef, Name: *u8) ->
|
||||
fn LLVMBuildIsNull(B: BuilderRef, Val: ValueRef,
|
||||
Name: *c_char) -> ValueRef;
|
||||
fn LLVMBuildIsNotNull(B: BuilderRef, Val: ValueRef, Name: *c_char) ->
|
||||
ValueRef;
|
||||
fn LLVMBuildPtrDiff(B: BuilderRef, LHS: ValueRef, RHS: ValueRef,
|
||||
Name: *u8) -> ValueRef;
|
||||
Name: *c_char) -> ValueRef;
|
||||
|
||||
/* Selected entries from the downcasts. */
|
||||
fn LLVMIsATerminatorInst(Inst: ValueRef) -> ValueRef;
|
||||
|
||||
/** Writes a module to the specified path. Returns 0 on success. */
|
||||
fn LLVMWriteBitcodeToFile(M: ModuleRef, Path: *u8) -> c_int;
|
||||
fn LLVMWriteBitcodeToFile(M: ModuleRef, Path: *c_char) -> c_int;
|
||||
|
||||
/** Creates target data from a target layout string. */
|
||||
fn LLVMCreateTargetData(StringRep: *u8) -> TargetDataRef;
|
||||
fn LLVMCreateTargetData(StringRep: *c_char) -> TargetDataRef;
|
||||
/** Adds the target data to the given pass manager. The pass manager
|
||||
references the target data only weakly. */
|
||||
fn LLVMAddTargetData(TD: TargetDataRef, PM: PassManagerRef);
|
||||
@@ -856,38 +860,40 @@ native mod llvm {
|
||||
/** Moves the section iterator to point to the next section. */
|
||||
fn LLVMMoveToNextSection(SI: SectionIteratorRef);
|
||||
/** Returns the current section name. */
|
||||
fn LLVMGetSectionName(SI: SectionIteratorRef) -> *u8;
|
||||
fn LLVMGetSectionName(SI: SectionIteratorRef) -> *c_char;
|
||||
/** Returns the current section size. */
|
||||
fn LLVMGetSectionSize(SI: SectionIteratorRef) -> c_ulonglong;
|
||||
/** Returns the current section contents as a string buffer. */
|
||||
fn LLVMGetSectionContents(SI: SectionIteratorRef) -> *u8;
|
||||
fn LLVMGetSectionContents(SI: SectionIteratorRef) -> *c_char;
|
||||
|
||||
/** Reads the given file and returns it as a memory buffer. Use
|
||||
LLVMDisposeMemoryBuffer() to get rid of it. */
|
||||
fn LLVMRustCreateMemoryBufferWithContentsOfFile(Path: *u8) ->
|
||||
fn LLVMRustCreateMemoryBufferWithContentsOfFile(Path: *c_char) ->
|
||||
MemoryBufferRef;
|
||||
|
||||
/* FIXME: The FileType is an enum.*/
|
||||
fn LLVMRustWriteOutputFile(PM: PassManagerRef, M: ModuleRef, Triple: *u8,
|
||||
Output: *u8, FileType: c_int, OptLevel: c_int,
|
||||
fn LLVMRustWriteOutputFile(PM: PassManagerRef, M: ModuleRef,
|
||||
Triple: *c_char,
|
||||
Output: *c_char, FileType: c_int,
|
||||
OptLevel: c_int,
|
||||
EnableSegmentedStacks: bool);
|
||||
|
||||
/** Returns a string describing the last error caused by an LLVMRust*
|
||||
call. */
|
||||
fn LLVMRustGetLastError() -> *u8;
|
||||
fn LLVMRustGetLastError() -> *c_char;
|
||||
|
||||
/** Parses the bitcode in the given memory buffer. */
|
||||
fn LLVMRustParseBitcode(MemBuf: MemoryBufferRef) -> ModuleRef;
|
||||
|
||||
/** Parses LLVM asm in the given file */
|
||||
fn LLVMRustParseAssemblyFile(Filename: *u8) -> ModuleRef;
|
||||
fn LLVMRustParseAssemblyFile(Filename: *c_char) -> ModuleRef;
|
||||
|
||||
/** FiXME: Hacky adaptor for lack of c_ulonglong in FFI: */
|
||||
fn LLVMRustConstInt(IntTy: TypeRef, N_hi: c_uint, N_lo: c_uint,
|
||||
SignExtend: Bool) -> ValueRef;
|
||||
|
||||
fn LLVMRustAddPrintModulePass(PM: PassManagerRef, M: ModuleRef,
|
||||
Output: *u8);
|
||||
Output: *c_char);
|
||||
|
||||
/** Turn on LLVM pass-timing. */
|
||||
fn LLVMRustEnableTimePasses();
|
||||
@@ -895,7 +901,7 @@ native mod llvm {
|
||||
/** Print the pass timings since static dtors aren't picking them up. */
|
||||
fn LLVMRustPrintPassTimings();
|
||||
|
||||
fn LLVMStructCreateNamed(C: ContextRef, Name: *u8) -> TypeRef;
|
||||
fn LLVMStructCreateNamed(C: ContextRef, Name: *c_char) -> TypeRef;
|
||||
|
||||
fn LLVMStructSetBody(StructTy: TypeRef, ElementTypes: *TypeRef,
|
||||
ElementCount: c_uint, Packed: Bool);
|
||||
@@ -1058,7 +1064,7 @@ type target_data = {lltd: TargetDataRef, dtor: @target_data_res};
|
||||
|
||||
fn mk_target_data(string_rep: str) -> target_data {
|
||||
let lltd =
|
||||
str::as_buf(string_rep, {|buf| llvm::LLVMCreateTargetData(buf) });
|
||||
str::as_c_str(string_rep, {|buf| llvm::LLVMCreateTargetData(buf) });
|
||||
ret {lltd: lltd, dtor: @target_data_res(lltd)};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user