diff options
| author | Denis Merigoux <denis.merigoux@gmail.com> | 2018-09-28 12:18:03 +0200 |
|---|---|---|
| committer | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2018-11-16 14:38:19 +0200 |
| commit | 566fa4d003dd27c63a708a9e5e4e5c673a276f8d (patch) | |
| tree | 9ab92193d202e1e9cd4517ed3d5f9c96e7dcec73 /src/librustc_codegen_llvm | |
| parent | 39fd4d92740ce4f838326fbaa101ba951b757e39 (diff) | |
| download | rust-566fa4d003dd27c63a708a9e5e4e5c673a276f8d.tar.gz rust-566fa4d003dd27c63a708a9e5e4e5c673a276f8d.zip | |
Moved common.rs enums
Diffstat (limited to 'src/librustc_codegen_llvm')
| -rw-r--r-- | src/librustc_codegen_llvm/base.rs | 4 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/builder.rs | 23 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/common.rs | 76 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/interfaces/builder.rs | 4 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/interfaces/type_.rs | 2 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/intrinsic.rs | 6 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/llvm/ffi.rs | 126 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/mir/rvalue.rs | 4 | ||||
| -rw-r--r-- | src/librustc_codegen_llvm/type_.rs | 5 |
9 files changed, 95 insertions, 155 deletions
diff --git a/src/librustc_codegen_llvm/base.rs b/src/librustc_codegen_llvm/base.rs index 7d1b3a4c6e5..5a11bade274 100644 --- a/src/librustc_codegen_llvm/base.rs +++ b/src/librustc_codegen_llvm/base.rs @@ -53,8 +53,8 @@ use mir::place::PlaceRef; use builder::{Builder, MemFlags}; use callee; use rustc_mir::monomorphize::item::DefPathBasedNames; -use common::{self, RealPredicate, TypeKind}; -use rustc_codegen_utils::common::IntPredicate; +use common; +use rustc_codegen_utils::common::{RealPredicate, TypeKind, IntPredicate}; use meth; use mir; use context::CodegenCx; diff --git a/src/librustc_codegen_llvm/builder.rs b/src/librustc_codegen_llvm/builder.rs index 94b308421eb..8e6832361a6 100644 --- a/src/librustc_codegen_llvm/builder.rs +++ b/src/librustc_codegen_llvm/builder.rs @@ -10,8 +10,9 @@ use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect}; use llvm::{self, False, OperandBundleDef, BasicBlock}; -use common::{self, *}; -use rustc_codegen_utils::common::IntPredicate; +use common; +use rustc_codegen_utils::common::{IntPredicate, TypeKind, RealPredicate}; +use rustc_codegen_utils; use context::CodegenCx; use type_::Type; use type_of::LayoutLlvmExt; @@ -524,7 +525,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { fn atomic_load( &self, ptr: &'ll Value, - order: common::AtomicOrdering, + order: rustc_codegen_utils::common::AtomicOrdering, size: Size, ) -> &'ll Value { self.count_insn("load.atomic"); @@ -678,7 +679,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { } fn atomic_store(&self, val: &'ll Value, ptr: &'ll Value, - order: common::AtomicOrdering, size: Size) { + order: rustc_codegen_utils::common::AtomicOrdering, size: Size) { debug!("Store {:?} -> {:?}", val, ptr); self.count_insn("store.atomic"); let ptr = self.check_store(val, ptr); @@ -1201,8 +1202,8 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { dst: &'ll Value, cmp: &'ll Value, src: &'ll Value, - order: common::AtomicOrdering, - failure_order: common::AtomicOrdering, + order: rustc_codegen_utils::common::AtomicOrdering, + failure_order: rustc_codegen_utils::common::AtomicOrdering, weak: bool, ) -> &'ll Value { let weak = if weak { llvm::True } else { llvm::False }; @@ -1220,10 +1221,10 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { } fn atomic_rmw( &self, - op: common::AtomicRmwBinOp, + op: rustc_codegen_utils::common::AtomicRmwBinOp, dst: &'ll Value, src: &'ll Value, - order: common::AtomicOrdering, + order: rustc_codegen_utils::common::AtomicOrdering, ) -> &'ll Value { unsafe { llvm::LLVMBuildAtomicRMW( @@ -1236,7 +1237,11 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { } } - fn atomic_fence(&self, order: common::AtomicOrdering, scope: common::SynchronizationScope) { + fn atomic_fence( + &self, + order: rustc_codegen_utils::common::AtomicOrdering, + scope: rustc_codegen_utils::common::SynchronizationScope + ) { unsafe { llvm::LLVMRustBuildAtomicFence( self.llbuilder, diff --git a/src/librustc_codegen_llvm/common.rs b/src/librustc_codegen_llvm/common.rs index 67fae48e2e5..8bc20ddd6b1 100644 --- a/src/librustc_codegen_llvm/common.rs +++ b/src/librustc_codegen_llvm/common.rs @@ -29,6 +29,7 @@ use rustc::mir::interpret::{Scalar, AllocType, Allocation}; use rustc::hir; use mir::constant::const_alloc_to_llvm; use mir::place::PlaceRef; +use rustc_codegen_utils::common::TypeKind; use libc::{c_uint, c_char}; @@ -64,81 +65,6 @@ impl<'a, V> OperandBundleDef<'a, V> { } } -#[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, -} - -#[derive(Copy, Clone, PartialEq, Debug)] -pub enum TypeKind { - Void, - Half, - Float, - Double, - X86_FP80, - FP128, - PPc_FP128, - Label, - Integer, - Function, - Struct, - Array, - Pointer, - Vector, - Metadata, - X86_MMX, - Token, -} - /* * A note on nomenclature of linking: "extern", "foreign", and "upcall". * diff --git a/src/librustc_codegen_llvm/interfaces/builder.rs b/src/librustc_codegen_llvm/interfaces/builder.rs index 7874a4496e9..54e0baff381 100644 --- a/src/librustc_codegen_llvm/interfaces/builder.rs +++ b/src/librustc_codegen_llvm/interfaces/builder.rs @@ -20,7 +20,9 @@ use libc::c_char; use mir::operand::OperandRef; use mir::place::PlaceRef; use rustc::ty::layout::{Align, Size}; -use rustc_codegen_utils::common::IntPredicate; +use rustc_codegen_utils::common::{ + AtomicOrdering, AtomicRmwBinOp, IntPredicate, RealPredicate, SynchronizationScope, +}; use std::borrow::Cow; use std::ops::Range; diff --git a/src/librustc_codegen_llvm/interfaces/type_.rs b/src/librustc_codegen_llvm/interfaces/type_.rs index 7f1d0ffdde5..a03bcac5ecd 100644 --- a/src/librustc_codegen_llvm/interfaces/type_.rs +++ b/src/librustc_codegen_llvm/interfaces/type_.rs @@ -10,12 +10,12 @@ use super::backend::Backend; use super::HasCodegen; -use common::TypeKind; use mir::place::PlaceRef; use rustc::ty::layout::TyLayout; use rustc::ty::layout::{self, Align, Size}; use rustc::ty::Ty; use rustc::util::nodemap::FxHashMap; +use rustc_codegen_utils::common::TypeKind; use rustc_target::abi::call::{ArgType, CastTarget, FnType, Reg}; use std::cell::RefCell; use syntax::ast; diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs index 563d205020c..708e43ef85d 100644 --- a/src/librustc_codegen_llvm/intrinsic.rs +++ b/src/librustc_codegen_llvm/intrinsic.rs @@ -18,13 +18,13 @@ use abi::{Abi, FnType, LlvmType, PassMode}; use mir::place::PlaceRef; use mir::operand::{OperandRef, OperandValue}; use base::*; -use common::*; use context::CodegenCx; use glue; use type_::Type; use type_of::LayoutLlvmExt; use rustc::ty::{self, Ty}; use rustc::ty::layout::{LayoutOf, HasTyCtxt}; +use rustc_codegen_utils::common::TypeKind; use rustc::hir; use syntax::ast; use syntax::symbol::Symbol; @@ -463,7 +463,9 @@ impl IntrinsicCallMethods<'tcx> for Builder<'a, 'll, 'tcx> { // This requires that atomic intrinsics follow a specific naming pattern: // "atomic_<operation>[_<ordering>]", and no ordering means SeqCst name if name.starts_with("atomic_") => { - use self::AtomicOrdering::*; + use rustc_codegen_utils::common::AtomicOrdering::*; + use rustc_codegen_utils::common:: + {SynchronizationScope, AtomicRmwBinOp}; let split: Vec<&str> = name.split('_').collect(); diff --git a/src/librustc_codegen_llvm/llvm/ffi.rs b/src/librustc_codegen_llvm/llvm/ffi.rs index e3aac40c081..06c60dba2f5 100644 --- a/src/librustc_codegen_llvm/llvm/ffi.rs +++ b/src/librustc_codegen_llvm/llvm/ffi.rs @@ -19,7 +19,6 @@ use libc::{c_uint, c_int, size_t, c_char}; use libc::{c_ulonglong, c_void}; use std::marker::PhantomData; -use common; use rustc_codegen_utils; use syntax; @@ -184,24 +183,26 @@ pub enum RealPredicate { } impl RealPredicate { - pub fn from_generic(realpred: common::RealPredicate) -> Self { + pub fn from_generic(realpred: rustc_codegen_utils::common::RealPredicate) -> Self { match realpred { - common::RealPredicate::RealPredicateFalse => RealPredicate::RealPredicateFalse, - common::RealPredicate::RealOEQ => RealPredicate::RealOEQ, - common::RealPredicate::RealOGT => RealPredicate::RealOGT, - common::RealPredicate::RealOGE => RealPredicate::RealOGE, - common::RealPredicate::RealOLT => RealPredicate::RealOLT, - common::RealPredicate::RealOLE => RealPredicate::RealOLE, - common::RealPredicate::RealONE => RealPredicate::RealONE, - common::RealPredicate::RealORD => RealPredicate::RealORD, - common::RealPredicate::RealUNO => RealPredicate::RealUNO, - common::RealPredicate::RealUEQ => RealPredicate::RealUEQ, - common::RealPredicate::RealUGT => RealPredicate::RealUGT, - common::RealPredicate::RealUGE => RealPredicate::RealUGE, - common::RealPredicate::RealULT => RealPredicate::RealULT, - common::RealPredicate::RealULE => RealPredicate::RealULE, - common::RealPredicate::RealUNE => RealPredicate::RealUNE, - common::RealPredicate::RealPredicateTrue => RealPredicate::RealPredicateTrue + rustc_codegen_utils::common::RealPredicate::RealPredicateFalse => + RealPredicate::RealPredicateFalse, + rustc_codegen_utils::common::RealPredicate::RealOEQ => RealPredicate::RealOEQ, + rustc_codegen_utils::common::RealPredicate::RealOGT => RealPredicate::RealOGT, + rustc_codegen_utils::common::RealPredicate::RealOGE => RealPredicate::RealOGE, + rustc_codegen_utils::common::RealPredicate::RealOLT => RealPredicate::RealOLT, + rustc_codegen_utils::common::RealPredicate::RealOLE => RealPredicate::RealOLE, + rustc_codegen_utils::common::RealPredicate::RealONE => RealPredicate::RealONE, + rustc_codegen_utils::common::RealPredicate::RealORD => RealPredicate::RealORD, + rustc_codegen_utils::common::RealPredicate::RealUNO => RealPredicate::RealUNO, + rustc_codegen_utils::common::RealPredicate::RealUEQ => RealPredicate::RealUEQ, + rustc_codegen_utils::common::RealPredicate::RealUGT => RealPredicate::RealUGT, + rustc_codegen_utils::common::RealPredicate::RealUGE => RealPredicate::RealUGE, + rustc_codegen_utils::common::RealPredicate::RealULT => RealPredicate::RealULT, + rustc_codegen_utils::common::RealPredicate::RealULE => RealPredicate::RealULE, + rustc_codegen_utils::common::RealPredicate::RealUNE => RealPredicate::RealUNE, + rustc_codegen_utils::common::RealPredicate::RealPredicateTrue => + RealPredicate::RealPredicateTrue } } } @@ -216,7 +217,7 @@ pub enum TypeKind { Double = 3, X86_FP80 = 4, FP128 = 5, - PPc_FP128 = 6, + PPC_FP128 = 6, Label = 7, Integer = 8, Function = 9, @@ -230,25 +231,25 @@ pub enum TypeKind { } impl TypeKind { - pub fn to_generic(self) -> common::TypeKind { + pub fn to_generic(self) -> rustc_codegen_utils::common::TypeKind { match self { - TypeKind::Void => common::TypeKind::Void, - TypeKind::Half => common::TypeKind::Half, - TypeKind::Float => common::TypeKind::Float, - TypeKind::Double => common::TypeKind::Double, - TypeKind::X86_FP80 => common::TypeKind::X86_FP80, - TypeKind::FP128 => common::TypeKind::FP128, - TypeKind::PPc_FP128 => common::TypeKind::PPc_FP128, - TypeKind::Label => common::TypeKind::Label, - TypeKind::Integer => common::TypeKind::Integer, - TypeKind::Function => common::TypeKind::Function, - TypeKind::Struct => common::TypeKind::Struct, - TypeKind::Array => common::TypeKind::Array, - TypeKind::Pointer => common::TypeKind::Pointer, - TypeKind::Vector => common::TypeKind::Vector, - TypeKind::Metadata => common::TypeKind::Metadata, - TypeKind::X86_MMX => common::TypeKind::X86_MMX, - TypeKind::Token => common::TypeKind::Token, + TypeKind::Void => rustc_codegen_utils::common::TypeKind::Void, + TypeKind::Half => rustc_codegen_utils::common::TypeKind::Half, + TypeKind::Float => rustc_codegen_utils::common::TypeKind::Float, + TypeKind::Double => rustc_codegen_utils::common::TypeKind::Double, + TypeKind::X86_FP80 => rustc_codegen_utils::common::TypeKind::X86_FP80, + TypeKind::FP128 => rustc_codegen_utils::common::TypeKind::FP128, + TypeKind::PPC_FP128 => rustc_codegen_utils::common::TypeKind::PPC_FP128, + TypeKind::Label => rustc_codegen_utils::common::TypeKind::Label, + TypeKind::Integer => rustc_codegen_utils::common::TypeKind::Integer, + TypeKind::Function => rustc_codegen_utils::common::TypeKind::Function, + TypeKind::Struct => rustc_codegen_utils::common::TypeKind::Struct, + TypeKind::Array => rustc_codegen_utils::common::TypeKind::Array, + TypeKind::Pointer => rustc_codegen_utils::common::TypeKind::Pointer, + TypeKind::Vector => rustc_codegen_utils::common::TypeKind::Vector, + TypeKind::Metadata => rustc_codegen_utils::common::TypeKind::Metadata, + TypeKind::X86_MMX => rustc_codegen_utils::common::TypeKind::X86_MMX, + TypeKind::Token => rustc_codegen_utils::common::TypeKind::Token, } } } @@ -271,19 +272,19 @@ pub enum AtomicRmwBinOp { } impl AtomicRmwBinOp { - pub fn from_generic(op: common::AtomicRmwBinOp) -> Self { + pub fn from_generic(op: rustc_codegen_utils::common::AtomicRmwBinOp) -> Self { match op { - common::AtomicRmwBinOp::AtomicXchg => AtomicRmwBinOp::AtomicXchg, - common::AtomicRmwBinOp::AtomicAdd => AtomicRmwBinOp::AtomicAdd, - common::AtomicRmwBinOp::AtomicSub => AtomicRmwBinOp::AtomicSub, - common::AtomicRmwBinOp::AtomicAnd => AtomicRmwBinOp::AtomicAnd, - common::AtomicRmwBinOp::AtomicNand => AtomicRmwBinOp::AtomicNand, - common::AtomicRmwBinOp::AtomicOr => AtomicRmwBinOp::AtomicOr, - common::AtomicRmwBinOp::AtomicXor => AtomicRmwBinOp::AtomicXor, - common::AtomicRmwBinOp::AtomicMax => AtomicRmwBinOp::AtomicMax, - common::AtomicRmwBinOp::AtomicMin => AtomicRmwBinOp::AtomicMin, - common::AtomicRmwBinOp::AtomicUMax => AtomicRmwBinOp::AtomicUMax, - common::AtomicRmwBinOp::AtomicUMin => AtomicRmwBinOp::AtomicUMin + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicXchg => AtomicRmwBinOp::AtomicXchg, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicAdd => AtomicRmwBinOp::AtomicAdd, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicSub => AtomicRmwBinOp::AtomicSub, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicAnd => AtomicRmwBinOp::AtomicAnd, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicNand => AtomicRmwBinOp::AtomicNand, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicOr => AtomicRmwBinOp::AtomicOr, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicXor => AtomicRmwBinOp::AtomicXor, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicMax => AtomicRmwBinOp::AtomicMax, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicMin => AtomicRmwBinOp::AtomicMin, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicUMax => AtomicRmwBinOp::AtomicUMax, + rustc_codegen_utils::common::AtomicRmwBinOp::AtomicUMin => AtomicRmwBinOp::AtomicUMin } } } @@ -304,15 +305,16 @@ pub enum AtomicOrdering { } impl AtomicOrdering { - pub fn from_generic(ao: common::AtomicOrdering) -> Self { + pub fn from_generic(ao: rustc_codegen_utils::common::AtomicOrdering) -> Self { match ao { - common::AtomicOrdering::NotAtomic => AtomicOrdering::NotAtomic, - common::AtomicOrdering::Unordered => AtomicOrdering::Unordered, - common::AtomicOrdering::Monotonic => AtomicOrdering::Monotonic, - common::AtomicOrdering::Acquire => AtomicOrdering::Acquire, - common::AtomicOrdering::Release => AtomicOrdering::Release, - common::AtomicOrdering::AcquireRelease => AtomicOrdering::AcquireRelease, - common::AtomicOrdering::SequentiallyConsistent => + rustc_codegen_utils::common::AtomicOrdering::NotAtomic => AtomicOrdering::NotAtomic, + rustc_codegen_utils::common::AtomicOrdering::Unordered => AtomicOrdering::Unordered, + rustc_codegen_utils::common::AtomicOrdering::Monotonic => AtomicOrdering::Monotonic, + rustc_codegen_utils::common::AtomicOrdering::Acquire => AtomicOrdering::Acquire, + rustc_codegen_utils::common::AtomicOrdering::Release => AtomicOrdering::Release, + rustc_codegen_utils::common::AtomicOrdering::AcquireRelease => + AtomicOrdering::AcquireRelease, + rustc_codegen_utils::common::AtomicOrdering::SequentiallyConsistent => AtomicOrdering::SequentiallyConsistent } } @@ -331,11 +333,13 @@ pub enum SynchronizationScope { } impl SynchronizationScope { - pub fn from_generic(sc: common::SynchronizationScope) -> Self { + pub fn from_generic(sc: rustc_codegen_utils::common::SynchronizationScope) -> Self { match sc { - common::SynchronizationScope::Other => SynchronizationScope::Other, - common::SynchronizationScope::SingleThread => SynchronizationScope::SingleThread, - common::SynchronizationScope::CrossThread => SynchronizationScope::CrossThread, + rustc_codegen_utils::common::SynchronizationScope::Other => SynchronizationScope::Other, + rustc_codegen_utils::common::SynchronizationScope::SingleThread => + SynchronizationScope::SingleThread, + rustc_codegen_utils::common::SynchronizationScope::CrossThread => + SynchronizationScope::CrossThread, } } } diff --git a/src/librustc_codegen_llvm/mir/rvalue.rs b/src/librustc_codegen_llvm/mir/rvalue.rs index 15a225e4e24..f1b07c39178 100644 --- a/src/librustc_codegen_llvm/mir/rvalue.rs +++ b/src/librustc_codegen_llvm/mir/rvalue.rs @@ -19,8 +19,8 @@ use std::{u128, i128}; use base; use builder::MemFlags; use callee; -use common::{self, RealPredicate}; -use rustc_codegen_utils::common::IntPredicate; +use common; +use rustc_codegen_utils::common::{RealPredicate, IntPredicate}; use monomorphize; use type_of::LayoutLlvmExt; diff --git a/src/librustc_codegen_llvm/type_.rs b/src/librustc_codegen_llvm/type_.rs index 60134d9dfe3..d63b19ae7eb 100644 --- a/src/librustc_codegen_llvm/type_.rs +++ b/src/librustc_codegen_llvm/type_.rs @@ -26,7 +26,8 @@ use rustc::ty::{self, Ty}; use rustc::ty::layout::TyLayout; use rustc_target::abi::call::{CastTarget, FnType, Reg}; use rustc_data_structures::small_c_str::SmallCStr; -use common::{self, TypeKind}; +use common; +use rustc_codegen_utils::common::TypeKind; use type_of::LayoutLlvmExt; use abi::{LlvmType, FnTypeExt}; @@ -224,7 +225,7 @@ impl BaseTypeMethods<'tcx> for CodegenCx<'ll, 'tcx> { TypeKind::Float => 32, TypeKind::Double => 64, TypeKind::X86_FP80 => 80, - TypeKind::FP128 | TypeKind::PPc_FP128 => 128, + TypeKind::FP128 | TypeKind::PPC_FP128 => 128, _ => bug!("llvm_float_width called on a non-float type") } } |
