New files and folders for traits
Moved common enums to common
This commit is contained in:
parent
7a2670e307
commit
d577ec7e5f
23 changed files with 188 additions and 172 deletions
|
@ -19,7 +19,7 @@ use type_::Type;
|
||||||
use type_of::{LayoutLlvmExt, PointerKind};
|
use type_of::{LayoutLlvmExt, PointerKind};
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use rustc_target::abi::{HasDataLayout, LayoutOf, Size, TyLayout, Abi as LayoutAbi};
|
use rustc_target::abi::{HasDataLayout, LayoutOf, Size, TyLayout, Abi as LayoutAbi};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
|
|
@ -16,7 +16,7 @@ use builder::Builder;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use mir::place::PlaceRef;
|
use mir::place::PlaceRef;
|
||||||
use mir::operand::OperandValue;
|
use mir::operand::OperandValue;
|
||||||
|
|
|
@ -55,7 +55,7 @@ use builder::{Builder, MemFlags};
|
||||||
use callee;
|
use callee;
|
||||||
use common::{C_bool, C_bytes_in_context, C_usize};
|
use common::{C_bool, C_bytes_in_context, C_usize};
|
||||||
use rustc_mir::monomorphize::item::DefPathBasedNames;
|
use rustc_mir::monomorphize::item::DefPathBasedNames;
|
||||||
use common::{C_struct_in_context, C_array, val_ty};
|
use common::{C_struct_in_context, C_array, val_ty, IntPredicate, RealPredicate};
|
||||||
use consts;
|
use consts;
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use debuginfo;
|
use debuginfo;
|
||||||
|
@ -75,7 +75,7 @@ use rustc_data_structures::small_c_str::SmallCStr;
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
use rustc_data_structures::indexed_vec::Idx;
|
use rustc_data_structures::indexed_vec::Idx;
|
||||||
|
|
||||||
use traits::{IntPredicate, RealPredicate, BuilderMethods};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
|
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
|
||||||
use llvm::{self, False, OperandBundleDef, BasicBlock};
|
use llvm::{self, False, OperandBundleDef, BasicBlock};
|
||||||
use common::*;
|
use common::{self, *};
|
||||||
use type_;
|
use type_;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use libc::{c_uint, c_char};
|
use libc::{c_uint, c_char};
|
||||||
|
@ -18,7 +18,7 @@ use rustc::ty::TyCtxt;
|
||||||
use rustc::ty::layout::{Align, Size};
|
use rustc::ty::layout::{Align, Size};
|
||||||
use rustc::session::{config, Session};
|
use rustc::session::{config, Session};
|
||||||
use rustc_data_structures::small_c_str::SmallCStr;
|
use rustc_data_structures::small_c_str::SmallCStr;
|
||||||
use traits::{self, BuilderMethods};
|
use interfaces::BuilderMethods;
|
||||||
use syntax;
|
use syntax;
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
@ -194,7 +194,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
args: &[&'ll Value],
|
args: &[&'ll Value],
|
||||||
then: &'ll BasicBlock,
|
then: &'ll BasicBlock,
|
||||||
catch: &'ll BasicBlock,
|
catch: &'ll BasicBlock,
|
||||||
bundle: Option<&traits::OperandBundleDef<'ll, &'ll Value>>) -> &'ll Value {
|
bundle: Option<&common::OperandBundleDef<'ll, &'ll Value>>) -> &'ll Value {
|
||||||
self.count_insn("invoke");
|
self.count_insn("invoke");
|
||||||
|
|
||||||
debug!("Invoke {:?} with args ({:?})",
|
debug!("Invoke {:?} with args ({:?})",
|
||||||
|
@ -495,7 +495,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
fn atomic_load(
|
fn atomic_load(
|
||||||
&self,
|
&self,
|
||||||
ptr: &'ll Value,
|
ptr: &'ll Value,
|
||||||
order: traits::AtomicOrdering,
|
order: common::AtomicOrdering,
|
||||||
size: Size,
|
size: Size,
|
||||||
) -> &'ll Value {
|
) -> &'ll Value {
|
||||||
self.count_insn("load.atomic");
|
self.count_insn("load.atomic");
|
||||||
|
@ -582,7 +582,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn atomic_store(&self, val: &'ll Value, ptr: &'ll Value,
|
fn atomic_store(&self, val: &'ll Value, ptr: &'ll Value,
|
||||||
order: traits::AtomicOrdering, size: Size) {
|
order: common::AtomicOrdering, size: Size) {
|
||||||
debug!("Store {:?} -> {:?}", val, ptr);
|
debug!("Store {:?} -> {:?}", val, ptr);
|
||||||
self.count_insn("store.atomic");
|
self.count_insn("store.atomic");
|
||||||
let ptr = self.check_store(val, ptr);
|
let ptr = self.check_store(val, ptr);
|
||||||
|
@ -708,7 +708,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Comparisons */
|
/* Comparisons */
|
||||||
fn icmp(&self, op: traits::IntPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
|
fn icmp(&self, op: IntPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
|
||||||
self.count_insn("icmp");
|
self.count_insn("icmp");
|
||||||
let op = llvm::IntPredicate::from_generic(op);
|
let op = llvm::IntPredicate::from_generic(op);
|
||||||
unsafe {
|
unsafe {
|
||||||
|
@ -716,7 +716,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fcmp(&self, op: traits::RealPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
|
fn fcmp(&self, op: RealPredicate, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
|
||||||
self.count_insn("fcmp");
|
self.count_insn("fcmp");
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMBuildFCmp(self.llbuilder, op as c_uint, lhs, rhs, noname())
|
llvm::LLVMBuildFCmp(self.llbuilder, op as c_uint, lhs, rhs, noname())
|
||||||
|
@ -1066,8 +1066,8 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
dst: &'ll Value,
|
dst: &'ll Value,
|
||||||
cmp: &'ll Value,
|
cmp: &'ll Value,
|
||||||
src: &'ll Value,
|
src: &'ll Value,
|
||||||
order: traits::AtomicOrdering,
|
order: common::AtomicOrdering,
|
||||||
failure_order: traits::AtomicOrdering,
|
failure_order: common::AtomicOrdering,
|
||||||
weak: bool,
|
weak: bool,
|
||||||
) -> &'ll Value {
|
) -> &'ll Value {
|
||||||
let weak = if weak { llvm::True } else { llvm::False };
|
let weak = if weak { llvm::True } else { llvm::False };
|
||||||
|
@ -1085,10 +1085,10 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
fn atomic_rmw(
|
fn atomic_rmw(
|
||||||
&self,
|
&self,
|
||||||
op: traits::AtomicRmwBinOp,
|
op: common::AtomicRmwBinOp,
|
||||||
dst: &'ll Value,
|
dst: &'ll Value,
|
||||||
src: &'ll Value,
|
src: &'ll Value,
|
||||||
order: traits::AtomicOrdering,
|
order: common::AtomicOrdering,
|
||||||
) -> &'ll Value {
|
) -> &'ll Value {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMBuildAtomicRMW(
|
llvm::LLVMBuildAtomicRMW(
|
||||||
|
@ -1101,7 +1101,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn atomic_fence(&self, order: traits::AtomicOrdering, scope: traits::SynchronizationScope) {
|
fn atomic_fence(&self, order: common::AtomicOrdering, scope: common::SynchronizationScope) {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMRustBuildAtomicFence(
|
llvm::LLVMRustBuildAtomicFence(
|
||||||
self.llbuilder,
|
self.llbuilder,
|
||||||
|
@ -1227,7 +1227,7 @@ impl BuilderMethods<'a, 'll, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn call(&self, llfn: &'ll Value, args: &[&'ll Value],
|
fn call(&self, llfn: &'ll Value, args: &[&'ll Value],
|
||||||
bundle: Option<&traits::OperandBundleDef<'ll, &'ll Value>>) -> &'ll Value {
|
bundle: Option<&common::OperandBundleDef<'ll, &'ll Value>>) -> &'ll Value {
|
||||||
self.count_insn("call");
|
self.count_insn("call");
|
||||||
|
|
||||||
debug!("Call {:?} with args ({:?})",
|
debug!("Call {:?} with args ({:?})",
|
||||||
|
|
|
@ -28,7 +28,7 @@ use value::Value;
|
||||||
use rustc::ty::{self, Ty, TyCtxt};
|
use rustc::ty::{self, Ty, TyCtxt};
|
||||||
use rustc::ty::layout::{HasDataLayout, LayoutOf};
|
use rustc::ty::layout::{HasDataLayout, LayoutOf};
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
use traits::{BuilderMethods, OperandBundleDef};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use libc::{c_uint, c_char};
|
use libc::{c_uint, c_char};
|
||||||
|
|
||||||
|
@ -49,6 +49,87 @@ pub fn type_is_freeze<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, ty: Ty<'tcx>) -> bo
|
||||||
ty.is_freeze(tcx, ty::ParamEnv::reveal_all(), DUMMY_SP)
|
ty.is_freeze(tcx, ty::ParamEnv::reveal_all(), DUMMY_SP)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct OperandBundleDef<'a, Value : 'a> {
|
||||||
|
pub name: &'a str,
|
||||||
|
pub val: Value
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OperandBundleDef<'ll, &'ll Value> {
|
||||||
|
pub fn new(name: &'ll str, val: &'ll Value) -> Self {
|
||||||
|
OperandBundleDef {
|
||||||
|
name,
|
||||||
|
val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum IntPredicate {
|
||||||
|
IntEQ,
|
||||||
|
IntNE,
|
||||||
|
IntUGT,
|
||||||
|
IntUGE,
|
||||||
|
IntULT,
|
||||||
|
IntULE,
|
||||||
|
IntSGT,
|
||||||
|
IntSGE,
|
||||||
|
IntSLT,
|
||||||
|
IntSLE
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub enum RealPredicate {
|
||||||
|
RealPredicateFalse,
|
||||||
|
RealOEQ,
|
||||||
|
RealOGT,
|
||||||
|
RealOGE,
|
||||||
|
RealOLT,
|
||||||
|
RealOLE,
|
||||||
|
RealONE,
|
||||||
|
RealORD,
|
||||||
|
RealUNO,
|
||||||
|
RealUEQ,
|
||||||
|
RealUGT,
|
||||||
|
RealUGE,
|
||||||
|
RealULT,
|
||||||
|
RealULE,
|
||||||
|
RealUNE,
|
||||||
|
RealPredicateTrue
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum AtomicRmwBinOp {
|
||||||
|
AtomicXchg,
|
||||||
|
AtomicAdd,
|
||||||
|
AtomicSub,
|
||||||
|
AtomicAnd,
|
||||||
|
AtomicNand,
|
||||||
|
AtomicOr,
|
||||||
|
AtomicXor,
|
||||||
|
AtomicMax,
|
||||||
|
AtomicMin,
|
||||||
|
AtomicUMax,
|
||||||
|
AtomicUMin
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum AtomicOrdering {
|
||||||
|
#[allow(dead_code)]
|
||||||
|
NotAtomic,
|
||||||
|
Unordered,
|
||||||
|
Monotonic,
|
||||||
|
// Consume, // Not specified yet.
|
||||||
|
Acquire,
|
||||||
|
Release,
|
||||||
|
AcquireRelease,
|
||||||
|
SequentiallyConsistent,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum SynchronizationScope {
|
||||||
|
// FIXME: figure out if this variant is needed at all.
|
||||||
|
#[allow(dead_code)]
|
||||||
|
Other,
|
||||||
|
SingleThread,
|
||||||
|
CrossThread,
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A note on nomenclature of linking: "extern", "foreign", and "upcall".
|
* A note on nomenclature of linking: "extern", "foreign", and "upcall".
|
||||||
*
|
*
|
||||||
|
|
|
@ -18,7 +18,7 @@ use declare;
|
||||||
use rustc::session::config::DebugInfo;
|
use rustc::session::config::DebugInfo;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use syntax::attr;
|
use syntax::attr;
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ use syntax_pos::{self, Span, Pos};
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::symbol::{Symbol, InternedString};
|
use syntax::symbol::{Symbol, InternedString};
|
||||||
use rustc::ty::layout::{self, LayoutOf};
|
use rustc::ty::layout::{self, LayoutOf};
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
pub mod gdb;
|
pub mod gdb;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
|
@ -17,7 +17,7 @@ use super::FunctionDebugContext;
|
||||||
use llvm;
|
use llvm;
|
||||||
use llvm::debuginfo::DIScope;
|
use llvm::debuginfo::DIScope;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use libc::c_uint;
|
use libc::c_uint;
|
||||||
use syntax_pos::{Span, Pos};
|
use syntax_pos::{Span, Pos};
|
||||||
|
|
|
@ -20,7 +20,7 @@ use meth;
|
||||||
use rustc::ty::layout::LayoutOf;
|
use rustc::ty::layout::LayoutOf;
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use traits::{IntPredicate,BuilderMethods};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
pub fn size_and_align_of_dst(
|
pub fn size_and_align_of_dst(
|
||||||
bx: &Builder<'_, 'll, 'tcx>,
|
bx: &Builder<'_, 'll, 'tcx>,
|
||||||
|
|
|
@ -14,92 +14,11 @@ use rustc::ty::TyCtxt;
|
||||||
use rustc::ty::layout::{Align, Size};
|
use rustc::ty::layout::{Align, Size};
|
||||||
use rustc::session::Session;
|
use rustc::session::Session;
|
||||||
use builder::MemFlags;
|
use builder::MemFlags;
|
||||||
use value::Value;
|
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
use syntax::ast::AsmDialect;
|
use syntax::ast::AsmDialect;
|
||||||
|
|
||||||
pub struct OperandBundleDef<'a, Value : 'a> {
|
|
||||||
pub name: &'a str,
|
|
||||||
pub val: Value
|
|
||||||
}
|
|
||||||
|
|
||||||
impl OperandBundleDef<'ll, &'ll Value> {
|
|
||||||
pub fn new(name: &'ll str, val: &'ll Value) -> Self {
|
|
||||||
OperandBundleDef {
|
|
||||||
name,
|
|
||||||
val
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub enum IntPredicate {
|
|
||||||
IntEQ,
|
|
||||||
IntNE,
|
|
||||||
IntUGT,
|
|
||||||
IntUGE,
|
|
||||||
IntULT,
|
|
||||||
IntULE,
|
|
||||||
IntSGT,
|
|
||||||
IntSGE,
|
|
||||||
IntSLT,
|
|
||||||
IntSLE
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub enum RealPredicate {
|
|
||||||
RealPredicateFalse,
|
|
||||||
RealOEQ,
|
|
||||||
RealOGT,
|
|
||||||
RealOGE,
|
|
||||||
RealOLT,
|
|
||||||
RealOLE,
|
|
||||||
RealONE,
|
|
||||||
RealORD,
|
|
||||||
RealUNO,
|
|
||||||
RealUEQ,
|
|
||||||
RealUGT,
|
|
||||||
RealUGE,
|
|
||||||
RealULT,
|
|
||||||
RealULE,
|
|
||||||
RealUNE,
|
|
||||||
RealPredicateTrue
|
|
||||||
}
|
|
||||||
|
|
||||||
pub enum AtomicRmwBinOp {
|
|
||||||
AtomicXchg,
|
|
||||||
AtomicAdd,
|
|
||||||
AtomicSub,
|
|
||||||
AtomicAnd,
|
|
||||||
AtomicNand,
|
|
||||||
AtomicOr,
|
|
||||||
AtomicXor,
|
|
||||||
AtomicMax,
|
|
||||||
AtomicMin,
|
|
||||||
AtomicUMax,
|
|
||||||
AtomicUMin
|
|
||||||
}
|
|
||||||
|
|
||||||
pub enum AtomicOrdering {
|
|
||||||
#[allow(dead_code)]
|
|
||||||
NotAtomic,
|
|
||||||
Unordered,
|
|
||||||
Monotonic,
|
|
||||||
// Consume, // Not specified yet.
|
|
||||||
Acquire,
|
|
||||||
Release,
|
|
||||||
AcquireRelease,
|
|
||||||
SequentiallyConsistent,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub enum SynchronizationScope {
|
|
||||||
// FIXME: figure out if this variant is needed at all.
|
|
||||||
#[allow(dead_code)]
|
|
||||||
Other,
|
|
||||||
SingleThread,
|
|
||||||
CrossThread,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
pub trait BuilderMethods<'a, 'll :'a, 'tcx: 'll> {
|
pub trait BuilderMethods<'a, 'll :'a, 'tcx: 'll> {
|
13
src/librustc_codegen_llvm/interfaces/mod.rs
Normal file
13
src/librustc_codegen_llvm/interfaces/mod.rs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
mod builder;
|
||||||
|
|
||||||
|
pub use self::builder::BuilderMethods;
|
|
@ -31,7 +31,7 @@ use syntax::symbol::Symbol;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use traits::{BuilderMethods, AtomicRmwBinOp, SynchronizationScope};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use rustc::session::Session;
|
use rustc::session::Session;
|
||||||
use syntax_pos::Span;
|
use syntax_pos::Span;
|
||||||
|
@ -439,7 +439,7 @@ pub fn codegen_intrinsic_call(
|
||||||
// This requires that atomic intrinsics follow a specific naming pattern:
|
// This requires that atomic intrinsics follow a specific naming pattern:
|
||||||
// "atomic_<operation>[_<ordering>]", and no ordering means SeqCst
|
// "atomic_<operation>[_<ordering>]", and no ordering means SeqCst
|
||||||
name if name.starts_with("atomic_") => {
|
name if name.starts_with("atomic_") => {
|
||||||
use traits::AtomicOrdering::*;
|
use self::AtomicOrdering::*;
|
||||||
|
|
||||||
let split: Vec<&str> = name.split('_').collect();
|
let split: Vec<&str> = name.split('_').collect();
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ mod back {
|
||||||
pub mod wasm;
|
pub mod wasm;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod traits;
|
mod interfaces;
|
||||||
|
|
||||||
mod abi;
|
mod abi;
|
||||||
mod allocator;
|
mod allocator;
|
||||||
|
|
|
@ -19,7 +19,7 @@ use libc::{c_uint, c_int, size_t, c_char};
|
||||||
use libc::{c_ulonglong, c_void};
|
use libc::{c_ulonglong, c_void};
|
||||||
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use traits;
|
use common;
|
||||||
use syntax;
|
use syntax;
|
||||||
|
|
||||||
use super::RustString;
|
use super::RustString;
|
||||||
|
@ -144,18 +144,18 @@ pub enum IntPredicate {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl IntPredicate {
|
impl IntPredicate {
|
||||||
pub fn from_generic(intpre: traits::IntPredicate) -> Self {
|
pub fn from_generic(intpre: common::IntPredicate) -> Self {
|
||||||
match intpre {
|
match intpre {
|
||||||
traits::IntPredicate::IntEQ => IntPredicate::IntEQ,
|
common::IntPredicate::IntEQ => IntPredicate::IntEQ,
|
||||||
traits::IntPredicate::IntNE => IntPredicate::IntNE,
|
common::IntPredicate::IntNE => IntPredicate::IntNE,
|
||||||
traits::IntPredicate::IntUGT => IntPredicate::IntUGT,
|
common::IntPredicate::IntUGT => IntPredicate::IntUGT,
|
||||||
traits::IntPredicate::IntUGE => IntPredicate::IntUGE,
|
common::IntPredicate::IntUGE => IntPredicate::IntUGE,
|
||||||
traits::IntPredicate::IntULT => IntPredicate::IntULT,
|
common::IntPredicate::IntULT => IntPredicate::IntULT,
|
||||||
traits::IntPredicate::IntULE => IntPredicate::IntULE,
|
common::IntPredicate::IntULE => IntPredicate::IntULE,
|
||||||
traits::IntPredicate::IntSGT => IntPredicate::IntSGT,
|
common::IntPredicate::IntSGT => IntPredicate::IntSGT,
|
||||||
traits::IntPredicate::IntSGE => IntPredicate::IntSGE,
|
common::IntPredicate::IntSGE => IntPredicate::IntSGE,
|
||||||
traits::IntPredicate::IntSLT => IntPredicate::IntSLT,
|
common::IntPredicate::IntSLT => IntPredicate::IntSLT,
|
||||||
traits::IntPredicate::IntSLE => IntPredicate::IntSLE,
|
common::IntPredicate::IntSLE => IntPredicate::IntSLE,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -183,24 +183,24 @@ pub enum RealPredicate {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RealPredicate {
|
impl RealPredicate {
|
||||||
pub fn from_generic(realpred: traits::RealPredicate) -> Self {
|
pub fn from_generic(realpred: common::RealPredicate) -> Self {
|
||||||
match realpred {
|
match realpred {
|
||||||
traits::RealPredicate::RealPredicateFalse => RealPredicate::RealPredicateFalse,
|
common::RealPredicate::RealPredicateFalse => RealPredicate::RealPredicateFalse,
|
||||||
traits::RealPredicate::RealOEQ => RealPredicate::RealOEQ,
|
common::RealPredicate::RealOEQ => RealPredicate::RealOEQ,
|
||||||
traits::RealPredicate::RealOGT => RealPredicate::RealOGT,
|
common::RealPredicate::RealOGT => RealPredicate::RealOGT,
|
||||||
traits::RealPredicate::RealOGE => RealPredicate::RealOGE,
|
common::RealPredicate::RealOGE => RealPredicate::RealOGE,
|
||||||
traits::RealPredicate::RealOLT => RealPredicate::RealOLT,
|
common::RealPredicate::RealOLT => RealPredicate::RealOLT,
|
||||||
traits::RealPredicate::RealOLE => RealPredicate::RealOLE,
|
common::RealPredicate::RealOLE => RealPredicate::RealOLE,
|
||||||
traits::RealPredicate::RealONE => RealPredicate::RealONE,
|
common::RealPredicate::RealONE => RealPredicate::RealONE,
|
||||||
traits::RealPredicate::RealORD => RealPredicate::RealORD,
|
common::RealPredicate::RealORD => RealPredicate::RealORD,
|
||||||
traits::RealPredicate::RealUNO => RealPredicate::RealUNO,
|
common::RealPredicate::RealUNO => RealPredicate::RealUNO,
|
||||||
traits::RealPredicate::RealUEQ => RealPredicate::RealUEQ,
|
common::RealPredicate::RealUEQ => RealPredicate::RealUEQ,
|
||||||
traits::RealPredicate::RealUGT => RealPredicate::RealUGT,
|
common::RealPredicate::RealUGT => RealPredicate::RealUGT,
|
||||||
traits::RealPredicate::RealUGE => RealPredicate::RealUGE,
|
common::RealPredicate::RealUGE => RealPredicate::RealUGE,
|
||||||
traits::RealPredicate::RealULT => RealPredicate::RealULT,
|
common::RealPredicate::RealULT => RealPredicate::RealULT,
|
||||||
traits::RealPredicate::RealULE => RealPredicate::RealULE,
|
common::RealPredicate::RealULE => RealPredicate::RealULE,
|
||||||
traits::RealPredicate::RealUNE => RealPredicate::RealUNE,
|
common::RealPredicate::RealUNE => RealPredicate::RealUNE,
|
||||||
traits::RealPredicate::RealPredicateTrue => RealPredicate::RealPredicateTrue
|
common::RealPredicate::RealPredicateTrue => RealPredicate::RealPredicateTrue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,19 +246,19 @@ pub enum AtomicRmwBinOp {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AtomicRmwBinOp {
|
impl AtomicRmwBinOp {
|
||||||
pub fn from_generic(op : traits::AtomicRmwBinOp) -> Self {
|
pub fn from_generic(op : common::AtomicRmwBinOp) -> Self {
|
||||||
match op {
|
match op {
|
||||||
traits::AtomicRmwBinOp::AtomicXchg => AtomicRmwBinOp::AtomicXchg,
|
common::AtomicRmwBinOp::AtomicXchg => AtomicRmwBinOp::AtomicXchg,
|
||||||
traits::AtomicRmwBinOp::AtomicAdd => AtomicRmwBinOp::AtomicAdd,
|
common::AtomicRmwBinOp::AtomicAdd => AtomicRmwBinOp::AtomicAdd,
|
||||||
traits::AtomicRmwBinOp::AtomicSub => AtomicRmwBinOp::AtomicSub,
|
common::AtomicRmwBinOp::AtomicSub => AtomicRmwBinOp::AtomicSub,
|
||||||
traits::AtomicRmwBinOp::AtomicAnd => AtomicRmwBinOp::AtomicAnd,
|
common::AtomicRmwBinOp::AtomicAnd => AtomicRmwBinOp::AtomicAnd,
|
||||||
traits::AtomicRmwBinOp::AtomicNand => AtomicRmwBinOp::AtomicNand,
|
common::AtomicRmwBinOp::AtomicNand => AtomicRmwBinOp::AtomicNand,
|
||||||
traits::AtomicRmwBinOp::AtomicOr => AtomicRmwBinOp::AtomicOr,
|
common::AtomicRmwBinOp::AtomicOr => AtomicRmwBinOp::AtomicOr,
|
||||||
traits::AtomicRmwBinOp::AtomicXor => AtomicRmwBinOp::AtomicXor,
|
common::AtomicRmwBinOp::AtomicXor => AtomicRmwBinOp::AtomicXor,
|
||||||
traits::AtomicRmwBinOp::AtomicMax => AtomicRmwBinOp::AtomicMax,
|
common::AtomicRmwBinOp::AtomicMax => AtomicRmwBinOp::AtomicMax,
|
||||||
traits::AtomicRmwBinOp::AtomicMin => AtomicRmwBinOp::AtomicMin,
|
common::AtomicRmwBinOp::AtomicMin => AtomicRmwBinOp::AtomicMin,
|
||||||
traits::AtomicRmwBinOp::AtomicUMax => AtomicRmwBinOp::AtomicUMax,
|
common::AtomicRmwBinOp::AtomicUMax => AtomicRmwBinOp::AtomicUMax,
|
||||||
traits::AtomicRmwBinOp::AtomicUMin => AtomicRmwBinOp::AtomicUMin
|
common::AtomicRmwBinOp::AtomicUMin => AtomicRmwBinOp::AtomicUMin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,15 +279,15 @@ pub enum AtomicOrdering {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AtomicOrdering {
|
impl AtomicOrdering {
|
||||||
pub fn from_generic(ao : traits::AtomicOrdering) -> Self {
|
pub fn from_generic(ao : common::AtomicOrdering) -> Self {
|
||||||
match ao {
|
match ao {
|
||||||
traits::AtomicOrdering::NotAtomic => AtomicOrdering::NotAtomic,
|
common::AtomicOrdering::NotAtomic => AtomicOrdering::NotAtomic,
|
||||||
traits::AtomicOrdering::Unordered => AtomicOrdering::Unordered,
|
common::AtomicOrdering::Unordered => AtomicOrdering::Unordered,
|
||||||
traits::AtomicOrdering::Monotonic => AtomicOrdering::Monotonic,
|
common::AtomicOrdering::Monotonic => AtomicOrdering::Monotonic,
|
||||||
traits::AtomicOrdering::Acquire => AtomicOrdering::Acquire,
|
common::AtomicOrdering::Acquire => AtomicOrdering::Acquire,
|
||||||
traits::AtomicOrdering::Release => AtomicOrdering::Release,
|
common::AtomicOrdering::Release => AtomicOrdering::Release,
|
||||||
traits::AtomicOrdering::AcquireRelease => AtomicOrdering::AcquireRelease,
|
common::AtomicOrdering::AcquireRelease => AtomicOrdering::AcquireRelease,
|
||||||
traits::AtomicOrdering::SequentiallyConsistent =>
|
common::AtomicOrdering::SequentiallyConsistent =>
|
||||||
AtomicOrdering::SequentiallyConsistent
|
AtomicOrdering::SequentiallyConsistent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -306,11 +306,11 @@ pub enum SynchronizationScope {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SynchronizationScope {
|
impl SynchronizationScope {
|
||||||
pub fn from_generic(sc : traits::SynchronizationScope) -> Self {
|
pub fn from_generic(sc : common::SynchronizationScope) -> Self {
|
||||||
match sc {
|
match sc {
|
||||||
traits::SynchronizationScope::Other => SynchronizationScope::Other,
|
common::SynchronizationScope::Other => SynchronizationScope::Other,
|
||||||
traits::SynchronizationScope::SingleThread => SynchronizationScope::SingleThread,
|
common::SynchronizationScope::SingleThread => SynchronizationScope::SingleThread,
|
||||||
traits::SynchronizationScope::CrossThread => SynchronizationScope::CrossThread,
|
common::SynchronizationScope::CrossThread => SynchronizationScope::CrossThread,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ use std::ffi::CStr;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use libc::{self, c_uint, c_char, size_t};
|
use libc::{self, c_uint, c_char, size_t};
|
||||||
use rustc_data_structures::small_c_str::SmallCStr;
|
use rustc_data_structures::small_c_str::SmallCStr;
|
||||||
use traits;
|
use common;
|
||||||
|
|
||||||
pub mod archive_ro;
|
pub mod archive_ro;
|
||||||
pub mod diagnostic;
|
pub mod diagnostic;
|
||||||
|
@ -273,7 +273,7 @@ impl OperandBundleDef<'a> {
|
||||||
OperandBundleDef { raw: def }
|
OperandBundleDef { raw: def }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_generic(bundle : &traits::OperandBundleDef<'a, &'a Value>) -> Self {
|
pub fn from_generic(bundle : &common::OperandBundleDef<'a, &'a Value>) -> Self {
|
||||||
Self::new(bundle.name, &[bundle.val])
|
Self::new(bundle.name, &[bundle.val])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ use monomorphize;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc::ty::layout::HasDataLayout;
|
use rustc::ty::layout::HasDataLayout;
|
||||||
|
|
|
@ -18,7 +18,7 @@ use abi::{Abi, ArgType, ArgTypeExt, FnType, FnTypeExt, LlvmType, PassMode};
|
||||||
use base;
|
use base;
|
||||||
use callee;
|
use callee;
|
||||||
use builder::{Builder, MemFlags};
|
use builder::{Builder, MemFlags};
|
||||||
use common::{self, C_bool, C_str_slice, C_struct, C_u32, C_uint_big, C_undef};
|
use common::{self, C_bool, C_str_slice, C_struct, C_u32, C_uint_big, C_undef, IntPredicate};
|
||||||
use consts;
|
use consts;
|
||||||
use meth;
|
use meth;
|
||||||
use monomorphize;
|
use monomorphize;
|
||||||
|
@ -26,7 +26,7 @@ use type_of::LayoutLlvmExt;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use traits::{IntPredicate,BuilderMethods};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use syntax::symbol::Symbol;
|
use syntax::symbol::Symbol;
|
||||||
use syntax_pos::Pos;
|
use syntax_pos::Pos;
|
||||||
|
|
|
@ -26,7 +26,7 @@ use type_::Type;
|
||||||
use syntax::ast::Mutability;
|
use syntax::ast::Mutability;
|
||||||
use syntax::source_map::Span;
|
use syntax::source_map::Span;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use super::super::callee;
|
use super::super::callee;
|
||||||
use super::FunctionCx;
|
use super::FunctionCx;
|
||||||
|
|
|
@ -26,7 +26,7 @@ use monomorphize::Instance;
|
||||||
use abi::{ArgTypeExt, FnType, FnTypeExt, PassMode};
|
use abi::{ArgTypeExt, FnType, FnTypeExt, PassMode};
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use syntax_pos::{DUMMY_SP, NO_EXPANSION, BytePos, Span};
|
use syntax_pos::{DUMMY_SP, NO_EXPANSION, BytePos, Span};
|
||||||
use syntax::symbol::keywords;
|
use syntax::symbol::keywords;
|
||||||
|
|
|
@ -21,7 +21,7 @@ use type_of::LayoutLlvmExt;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use glue;
|
use glue;
|
||||||
|
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ use rustc::mir;
|
||||||
use rustc::mir::tcx::PlaceTy;
|
use rustc::mir::tcx::PlaceTy;
|
||||||
use base;
|
use base;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use common::{CodegenCx, C_undef, C_usize, C_u8, C_u32, C_uint, C_null, C_uint_big};
|
use common::{CodegenCx, C_undef, C_usize, C_u8, C_u32, C_uint, C_null, C_uint_big, IntPredicate};
|
||||||
use consts;
|
use consts;
|
||||||
use type_of::LayoutLlvmExt;
|
use type_of::LayoutLlvmExt;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
|
@ -23,7 +23,7 @@ use value::Value;
|
||||||
use glue;
|
use glue;
|
||||||
use mir::constant::const_alloc_to_llvm;
|
use mir::constant::const_alloc_to_llvm;
|
||||||
|
|
||||||
use traits::{IntPredicate,BuilderMethods};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use super::{FunctionCx, LocalRef};
|
use super::{FunctionCx, LocalRef};
|
||||||
use super::operand::{OperandRef, OperandValue};
|
use super::operand::{OperandRef, OperandValue};
|
||||||
|
|
|
@ -20,14 +20,17 @@ use base;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use callee;
|
use callee;
|
||||||
use common::{self, val_ty};
|
use common::{self, val_ty};
|
||||||
use common::{C_bool, C_u8, C_i32, C_u32, C_u64, C_undef, C_null, C_usize, C_uint, C_uint_big};
|
use common::{
|
||||||
|
C_bool, C_u8, C_i32, C_u32, C_u64, C_undef, C_null, C_usize,
|
||||||
|
C_uint, C_uint_big, IntPredicate, RealPredicate
|
||||||
|
};
|
||||||
use consts;
|
use consts;
|
||||||
use monomorphize;
|
use monomorphize;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use type_of::LayoutLlvmExt;
|
use type_of::LayoutLlvmExt;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use traits::{IntPredicate, RealPredicate, BuilderMethods};
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use super::{FunctionCx, LocalRef};
|
use super::{FunctionCx, LocalRef};
|
||||||
use super::operand::{OperandRef, OperandValue};
|
use super::operand::{OperandRef, OperandValue};
|
||||||
|
|
|
@ -12,7 +12,7 @@ use rustc::mir;
|
||||||
|
|
||||||
use asm;
|
use asm;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use traits::BuilderMethods;
|
use interfaces::BuilderMethods;
|
||||||
|
|
||||||
use super::FunctionCx;
|
use super::FunctionCx;
|
||||||
use super::LocalRef;
|
use super::LocalRef;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue