rustc_codegen_llvm: use safe references for Builder.
This commit is contained in:
parent
d04e66d114
commit
2dbde55395
2 changed files with 142 additions and 144 deletions
|
@ -13,7 +13,7 @@
|
|||
use llvm;
|
||||
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
|
||||
use llvm::{Opcode, IntPredicate, RealPredicate, False, OperandBundleDef};
|
||||
use llvm::{ValueRef, BasicBlockRef, BuilderRef};
|
||||
use llvm::{ValueRef, BasicBlockRef};
|
||||
use common::*;
|
||||
use type_::Type;
|
||||
use value::Value;
|
||||
|
@ -32,7 +32,7 @@ use syntax_pos::Span;
|
|||
// All Builders must have an llfn associated with them
|
||||
#[must_use]
|
||||
pub struct Builder<'a, 'll: 'a, 'tcx: 'll> {
|
||||
pub llbuilder: BuilderRef,
|
||||
pub llbuilder: &'ll llvm::Builder,
|
||||
pub cx: &'a CodegenCx<'ll, 'tcx>,
|
||||
}
|
||||
|
||||
|
@ -599,7 +599,6 @@ impl Builder<'a, 'll, 'tcx> {
|
|||
flags: MemFlags,
|
||||
) -> ValueRef {
|
||||
debug!("Store {:?} -> {:?} ({:?})", Value(val), Value(ptr), flags);
|
||||
assert!(!self.llbuilder.is_null());
|
||||
self.count_insn("store");
|
||||
let ptr = self.check_store(val, ptr);
|
||||
unsafe {
|
||||
|
|
|
@ -384,8 +384,7 @@ extern { pub type Metadata_opaque; }
|
|||
pub type MetadataRef = *mut Metadata_opaque;
|
||||
extern { pub type BasicBlock_opaque; }
|
||||
pub type BasicBlockRef = *mut BasicBlock_opaque;
|
||||
extern { pub type Builder_opaque; }
|
||||
pub type BuilderRef = *mut Builder_opaque;
|
||||
extern { pub type Builder; }
|
||||
extern { pub type ExecutionEngine_opaque; }
|
||||
pub type ExecutionEngineRef = *mut ExecutionEngine_opaque;
|
||||
extern { pub type MemoryBuffer_opaque; }
|
||||
|
@ -762,35 +761,35 @@ extern "C" {
|
|||
Count: c_uint);
|
||||
|
||||
// Instruction builders
|
||||
pub fn LLVMCreateBuilderInContext(C: &Context) -> BuilderRef;
|
||||
pub fn LLVMPositionBuilder(Builder: BuilderRef, Block: BasicBlockRef, Instr: ValueRef);
|
||||
pub fn LLVMPositionBuilderBefore(Builder: BuilderRef, Instr: ValueRef);
|
||||
pub fn LLVMPositionBuilderAtEnd(Builder: BuilderRef, Block: BasicBlockRef);
|
||||
pub fn LLVMGetInsertBlock(Builder: BuilderRef) -> BasicBlockRef;
|
||||
pub fn LLVMDisposeBuilder(Builder: BuilderRef);
|
||||
pub fn LLVMCreateBuilderInContext(C: &Context) -> &Builder;
|
||||
pub fn LLVMPositionBuilder(Builder: &Builder, Block: BasicBlockRef, Instr: ValueRef);
|
||||
pub fn LLVMPositionBuilderBefore(Builder: &Builder, Instr: ValueRef);
|
||||
pub fn LLVMPositionBuilderAtEnd(Builder: &Builder, Block: BasicBlockRef);
|
||||
pub fn LLVMGetInsertBlock(Builder: &Builder) -> BasicBlockRef;
|
||||
pub fn LLVMDisposeBuilder(Builder: &Builder);
|
||||
|
||||
// Metadata
|
||||
pub fn LLVMSetCurrentDebugLocation(Builder: BuilderRef, L: Option<NonNull<Value_opaque>>);
|
||||
pub fn LLVMGetCurrentDebugLocation(Builder: BuilderRef) -> ValueRef;
|
||||
pub fn LLVMSetInstDebugLocation(Builder: BuilderRef, Inst: ValueRef);
|
||||
pub fn LLVMSetCurrentDebugLocation(Builder: &Builder, L: Option<NonNull<Value_opaque>>);
|
||||
pub fn LLVMGetCurrentDebugLocation(Builder: &Builder) -> ValueRef;
|
||||
pub fn LLVMSetInstDebugLocation(Builder: &Builder, Inst: ValueRef);
|
||||
|
||||
// Terminators
|
||||
pub fn LLVMBuildRetVoid(B: BuilderRef) -> ValueRef;
|
||||
pub fn LLVMBuildRet(B: BuilderRef, V: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildAggregateRet(B: BuilderRef, RetVals: *const ValueRef, N: c_uint) -> ValueRef;
|
||||
pub fn LLVMBuildBr(B: BuilderRef, Dest: BasicBlockRef) -> ValueRef;
|
||||
pub fn LLVMBuildCondBr(B: BuilderRef,
|
||||
pub fn LLVMBuildRetVoid(B: &Builder) -> ValueRef;
|
||||
pub fn LLVMBuildRet(B: &Builder, V: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildAggregateRet(B: &Builder, RetVals: *const ValueRef, N: c_uint) -> ValueRef;
|
||||
pub fn LLVMBuildBr(B: &Builder, Dest: BasicBlockRef) -> ValueRef;
|
||||
pub fn LLVMBuildCondBr(B: &Builder,
|
||||
If: ValueRef,
|
||||
Then: BasicBlockRef,
|
||||
Else: BasicBlockRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSwitch(B: BuilderRef,
|
||||
pub fn LLVMBuildSwitch(B: &Builder,
|
||||
V: ValueRef,
|
||||
Else: BasicBlockRef,
|
||||
NumCases: c_uint)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildIndirectBr(B: BuilderRef, Addr: ValueRef, NumDests: c_uint) -> ValueRef;
|
||||
pub fn LLVMRustBuildInvoke(B: BuilderRef,
|
||||
pub fn LLVMBuildIndirectBr(B: &Builder, Addr: ValueRef, NumDests: c_uint) -> ValueRef;
|
||||
pub fn LLVMRustBuildInvoke(B: &Builder,
|
||||
Fn: ValueRef,
|
||||
Args: *const ValueRef,
|
||||
NumArgs: c_uint,
|
||||
|
@ -799,33 +798,33 @@ extern "C" {
|
|||
Bundle: Option<NonNull<OperandBundleDef_opaque>>,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildLandingPad(B: BuilderRef,
|
||||
Ty: &Type,
|
||||
pub fn LLVMBuildLandingPad(B: &'a Builder,
|
||||
Ty: &'a Type,
|
||||
PersFn: ValueRef,
|
||||
NumClauses: c_uint,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildResume(B: BuilderRef, Exn: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildUnreachable(B: BuilderRef) -> ValueRef;
|
||||
pub fn LLVMBuildResume(B: &Builder, Exn: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildUnreachable(B: &Builder) -> ValueRef;
|
||||
|
||||
pub fn LLVMRustBuildCleanupPad(B: BuilderRef,
|
||||
pub fn LLVMRustBuildCleanupPad(B: &Builder,
|
||||
ParentPad: Option<NonNull<Value_opaque>>,
|
||||
ArgCnt: c_uint,
|
||||
Args: *const ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildCleanupRet(B: BuilderRef,
|
||||
pub fn LLVMRustBuildCleanupRet(B: &Builder,
|
||||
CleanupPad: ValueRef,
|
||||
UnwindBB: Option<NonNull<BasicBlock_opaque>>)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildCatchPad(B: BuilderRef,
|
||||
pub fn LLVMRustBuildCatchPad(B: &Builder,
|
||||
ParentPad: ValueRef,
|
||||
ArgCnt: c_uint,
|
||||
Args: *const ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildCatchRet(B: BuilderRef, Pad: ValueRef, BB: BasicBlockRef) -> ValueRef;
|
||||
pub fn LLVMRustBuildCatchSwitch(Builder: BuilderRef,
|
||||
pub fn LLVMRustBuildCatchRet(B: &Builder, Pad: ValueRef, BB: BasicBlockRef) -> ValueRef;
|
||||
pub fn LLVMRustBuildCatchSwitch(Builder: &Builder,
|
||||
ParentPad: Option<NonNull<Value_opaque>>,
|
||||
BB: Option<NonNull<BasicBlock_opaque>>,
|
||||
NumHandlers: c_uint,
|
||||
|
@ -844,288 +843,288 @@ extern "C" {
|
|||
pub fn LLVMSetCleanup(LandingPad: ValueRef, Val: Bool);
|
||||
|
||||
// Arithmetic
|
||||
pub fn LLVMBuildAdd(B: BuilderRef,
|
||||
pub fn LLVMBuildAdd(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNSWAdd(B: BuilderRef,
|
||||
pub fn LLVMBuildNSWAdd(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNUWAdd(B: BuilderRef,
|
||||
pub fn LLVMBuildNUWAdd(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFAdd(B: BuilderRef,
|
||||
pub fn LLVMBuildFAdd(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSub(B: BuilderRef,
|
||||
pub fn LLVMBuildSub(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNSWSub(B: BuilderRef,
|
||||
pub fn LLVMBuildNSWSub(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNUWSub(B: BuilderRef,
|
||||
pub fn LLVMBuildNUWSub(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFSub(B: BuilderRef,
|
||||
pub fn LLVMBuildFSub(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildMul(B: BuilderRef,
|
||||
pub fn LLVMBuildMul(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNSWMul(B: BuilderRef,
|
||||
pub fn LLVMBuildNSWMul(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNUWMul(B: BuilderRef,
|
||||
pub fn LLVMBuildNUWMul(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFMul(B: BuilderRef,
|
||||
pub fn LLVMBuildFMul(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildUDiv(B: BuilderRef,
|
||||
pub fn LLVMBuildUDiv(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildExactUDiv(B: BuilderRef,
|
||||
pub fn LLVMBuildExactUDiv(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSDiv(B: BuilderRef,
|
||||
pub fn LLVMBuildSDiv(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildExactSDiv(B: BuilderRef,
|
||||
pub fn LLVMBuildExactSDiv(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFDiv(B: BuilderRef,
|
||||
pub fn LLVMBuildFDiv(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildURem(B: BuilderRef,
|
||||
pub fn LLVMBuildURem(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSRem(B: BuilderRef,
|
||||
pub fn LLVMBuildSRem(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFRem(B: BuilderRef,
|
||||
pub fn LLVMBuildFRem(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildShl(B: BuilderRef,
|
||||
pub fn LLVMBuildShl(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildLShr(B: BuilderRef,
|
||||
pub fn LLVMBuildLShr(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildAShr(B: BuilderRef,
|
||||
pub fn LLVMBuildAShr(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildAnd(B: BuilderRef,
|
||||
pub fn LLVMBuildAnd(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildOr(B: BuilderRef,
|
||||
pub fn LLVMBuildOr(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildXor(B: BuilderRef,
|
||||
pub fn LLVMBuildXor(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildBinOp(B: BuilderRef,
|
||||
pub fn LLVMBuildBinOp(B: &Builder,
|
||||
Op: Opcode,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNeg(B: BuilderRef, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNSWNeg(B: BuilderRef, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNUWNeg(B: BuilderRef, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildFNeg(B: BuilderRef, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNot(B: BuilderRef, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNeg(B: &Builder, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNSWNeg(B: &Builder, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNUWNeg(B: &Builder, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildFNeg(B: &Builder, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildNot(B: &Builder, V: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMRustSetHasUnsafeAlgebra(Instr: ValueRef);
|
||||
|
||||
// Memory
|
||||
pub fn LLVMBuildAlloca(B: BuilderRef, Ty: &Type, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildFree(B: BuilderRef, PointerVal: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildLoad(B: BuilderRef, PointerVal: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildAlloca(B: &Builder, Ty: &Type, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildFree(B: &Builder, PointerVal: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildLoad(B: &Builder, PointerVal: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
|
||||
pub fn LLVMBuildStore(B: BuilderRef, Val: ValueRef, Ptr: ValueRef) -> ValueRef;
|
||||
pub fn LLVMBuildStore(B: &Builder, Val: ValueRef, Ptr: ValueRef) -> ValueRef;
|
||||
|
||||
pub fn LLVMBuildGEP(B: BuilderRef,
|
||||
pub fn LLVMBuildGEP(B: &Builder,
|
||||
Pointer: ValueRef,
|
||||
Indices: *const ValueRef,
|
||||
NumIndices: c_uint,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildInBoundsGEP(B: BuilderRef,
|
||||
pub fn LLVMBuildInBoundsGEP(B: &Builder,
|
||||
Pointer: ValueRef,
|
||||
Indices: *const ValueRef,
|
||||
NumIndices: c_uint,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildStructGEP(B: BuilderRef,
|
||||
pub fn LLVMBuildStructGEP(B: &Builder,
|
||||
Pointer: ValueRef,
|
||||
Idx: c_uint,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildGlobalString(B: BuilderRef,
|
||||
pub fn LLVMBuildGlobalString(B: &Builder,
|
||||
Str: *const c_char,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildGlobalStringPtr(B: BuilderRef,
|
||||
pub fn LLVMBuildGlobalStringPtr(B: &Builder,
|
||||
Str: *const c_char,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
|
||||
// Casts
|
||||
pub fn LLVMBuildTrunc(B: BuilderRef,
|
||||
pub fn LLVMBuildTrunc(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildZExt(B: BuilderRef,
|
||||
pub fn LLVMBuildZExt(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSExt(B: BuilderRef,
|
||||
pub fn LLVMBuildSExt(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFPToUI(B: BuilderRef,
|
||||
pub fn LLVMBuildFPToUI(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFPToSI(B: BuilderRef,
|
||||
pub fn LLVMBuildFPToSI(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildUIToFP(B: BuilderRef,
|
||||
pub fn LLVMBuildUIToFP(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSIToFP(B: BuilderRef,
|
||||
pub fn LLVMBuildSIToFP(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFPTrunc(B: BuilderRef,
|
||||
pub fn LLVMBuildFPTrunc(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFPExt(B: BuilderRef,
|
||||
pub fn LLVMBuildFPExt(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildPtrToInt(B: BuilderRef,
|
||||
pub fn LLVMBuildPtrToInt(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildIntToPtr(B: BuilderRef,
|
||||
pub fn LLVMBuildIntToPtr(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildBitCast(B: BuilderRef,
|
||||
pub fn LLVMBuildBitCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildZExtOrBitCast(B: BuilderRef,
|
||||
pub fn LLVMBuildZExtOrBitCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSExtOrBitCast(B: BuilderRef,
|
||||
pub fn LLVMBuildSExtOrBitCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildTruncOrBitCast(B: BuilderRef,
|
||||
pub fn LLVMBuildTruncOrBitCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildCast(B: BuilderRef,
|
||||
pub fn LLVMBuildCast(B: &'a Builder,
|
||||
Op: Opcode,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildPointerCast(B: BuilderRef,
|
||||
pub fn LLVMBuildPointerCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildIntCast(B: BuilderRef,
|
||||
pub fn LLVMRustBuildIntCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
IsSized: bool)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFPCast(B: BuilderRef,
|
||||
pub fn LLVMBuildFPCast(B: &'a Builder,
|
||||
Val: ValueRef,
|
||||
DestTy: &Type,
|
||||
DestTy: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
|
||||
// Comparisons
|
||||
pub fn LLVMBuildICmp(B: BuilderRef,
|
||||
pub fn LLVMBuildICmp(B: &Builder,
|
||||
Op: c_uint,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildFCmp(B: BuilderRef,
|
||||
pub fn LLVMBuildFCmp(B: &Builder,
|
||||
Op: c_uint,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
|
@ -1133,119 +1132,119 @@ extern "C" {
|
|||
-> ValueRef;
|
||||
|
||||
// Miscellaneous instructions
|
||||
pub fn LLVMBuildPhi(B: BuilderRef, Ty: &Type, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMRustBuildCall(B: BuilderRef,
|
||||
pub fn LLVMBuildPhi(B: &Builder, Ty: &Type, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMRustBuildCall(B: &Builder,
|
||||
Fn: ValueRef,
|
||||
Args: *const ValueRef,
|
||||
NumArgs: c_uint,
|
||||
Bundle: Option<NonNull<OperandBundleDef_opaque>>,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildSelect(B: BuilderRef,
|
||||
pub fn LLVMBuildSelect(B: &Builder,
|
||||
If: ValueRef,
|
||||
Then: ValueRef,
|
||||
Else: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildVAArg(B: BuilderRef,
|
||||
pub fn LLVMBuildVAArg(B: &'a Builder,
|
||||
list: ValueRef,
|
||||
Ty: &Type,
|
||||
Ty: &'a Type,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildExtractElement(B: BuilderRef,
|
||||
pub fn LLVMBuildExtractElement(B: &Builder,
|
||||
VecVal: ValueRef,
|
||||
Index: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildInsertElement(B: BuilderRef,
|
||||
pub fn LLVMBuildInsertElement(B: &Builder,
|
||||
VecVal: ValueRef,
|
||||
EltVal: ValueRef,
|
||||
Index: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildShuffleVector(B: BuilderRef,
|
||||
pub fn LLVMBuildShuffleVector(B: &Builder,
|
||||
V1: ValueRef,
|
||||
V2: ValueRef,
|
||||
Mask: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildExtractValue(B: BuilderRef,
|
||||
pub fn LLVMBuildExtractValue(B: &Builder,
|
||||
AggVal: ValueRef,
|
||||
Index: c_uint,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildInsertValue(B: BuilderRef,
|
||||
pub fn LLVMBuildInsertValue(B: &Builder,
|
||||
AggVal: ValueRef,
|
||||
EltVal: ValueRef,
|
||||
Index: c_uint,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
|
||||
pub fn LLVMRustBuildVectorReduceFAdd(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceFAdd(B: &Builder,
|
||||
Acc: ValueRef,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceFMul(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceFMul(B: &Builder,
|
||||
Acc: ValueRef,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceAdd(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceAdd(B: &Builder,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceMul(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceMul(B: &Builder,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceAnd(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceAnd(B: &Builder,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceOr(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceOr(B: &Builder,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceXor(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceXor(B: &Builder,
|
||||
Src: ValueRef)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceMin(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceMin(B: &Builder,
|
||||
Src: ValueRef,
|
||||
IsSigned: bool)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceMax(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceMax(B: &Builder,
|
||||
Src: ValueRef,
|
||||
IsSigned: bool)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceFMin(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceFMin(B: &Builder,
|
||||
Src: ValueRef,
|
||||
IsNaN: bool)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustBuildVectorReduceFMax(B: BuilderRef,
|
||||
pub fn LLVMRustBuildVectorReduceFMax(B: &Builder,
|
||||
Src: ValueRef,
|
||||
IsNaN: bool)
|
||||
-> ValueRef;
|
||||
|
||||
pub fn LLVMRustBuildMinNum(B: BuilderRef, LHS: ValueRef, LHS: ValueRef) -> ValueRef;
|
||||
pub fn LLVMRustBuildMaxNum(B: BuilderRef, LHS: ValueRef, LHS: ValueRef) -> ValueRef;
|
||||
pub fn LLVMRustBuildMinNum(B: &Builder, LHS: ValueRef, LHS: ValueRef) -> ValueRef;
|
||||
pub fn LLVMRustBuildMaxNum(B: &Builder, LHS: ValueRef, LHS: ValueRef) -> ValueRef;
|
||||
|
||||
pub fn LLVMBuildIsNull(B: BuilderRef, Val: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildIsNotNull(B: BuilderRef, Val: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildPtrDiff(B: BuilderRef,
|
||||
pub fn LLVMBuildIsNull(B: &Builder, Val: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildIsNotNull(B: &Builder, Val: ValueRef, Name: *const c_char) -> ValueRef;
|
||||
pub fn LLVMBuildPtrDiff(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
Name: *const c_char)
|
||||
-> ValueRef;
|
||||
|
||||
// Atomic Operations
|
||||
pub fn LLVMRustBuildAtomicLoad(B: BuilderRef,
|
||||
pub fn LLVMRustBuildAtomicLoad(B: &Builder,
|
||||
PointerVal: ValueRef,
|
||||
Name: *const c_char,
|
||||
Order: AtomicOrdering)
|
||||
-> ValueRef;
|
||||
|
||||
pub fn LLVMRustBuildAtomicStore(B: BuilderRef,
|
||||
pub fn LLVMRustBuildAtomicStore(B: &Builder,
|
||||
Val: ValueRef,
|
||||
Ptr: ValueRef,
|
||||
Order: AtomicOrdering)
|
||||
-> ValueRef;
|
||||
|
||||
pub fn LLVMRustBuildAtomicCmpXchg(B: BuilderRef,
|
||||
pub fn LLVMRustBuildAtomicCmpXchg(B: &Builder,
|
||||
LHS: ValueRef,
|
||||
CMP: ValueRef,
|
||||
RHS: ValueRef,
|
||||
|
@ -1254,7 +1253,7 @@ extern "C" {
|
|||
Weak: Bool)
|
||||
-> ValueRef;
|
||||
|
||||
pub fn LLVMBuildAtomicRMW(B: BuilderRef,
|
||||
pub fn LLVMBuildAtomicRMW(B: &Builder,
|
||||
Op: AtomicRmwBinOp,
|
||||
LHS: ValueRef,
|
||||
RHS: ValueRef,
|
||||
|
@ -1262,7 +1261,7 @@ extern "C" {
|
|||
SingleThreaded: Bool)
|
||||
-> ValueRef;
|
||||
|
||||
pub fn LLVMRustBuildAtomicFence(B: BuilderRef,
|
||||
pub fn LLVMRustBuildAtomicFence(B: &Builder,
|
||||
Order: AtomicOrdering,
|
||||
Scope: SynchronizationScope);
|
||||
|
||||
|
@ -1709,7 +1708,7 @@ extern "C" {
|
|||
-> OperandBundleDefRef;
|
||||
pub fn LLVMRustFreeOperandBundleDef(Bundle: OperandBundleDefRef);
|
||||
|
||||
pub fn LLVMRustPositionBuilderAtStart(B: BuilderRef, BB: BasicBlockRef);
|
||||
pub fn LLVMRustPositionBuilderAtStart(B: &Builder, BB: BasicBlockRef);
|
||||
|
||||
pub fn LLVMRustSetComdat(M: &Module, V: ValueRef, Name: *const c_char);
|
||||
pub fn LLVMRustUnsetComdat(V: ValueRef);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue