Skip to content

Commit a387c86

Browse files
committed
get rid of rustc_codegen_ssa::common::AtomicOrdering
1 parent 4794ea1 commit a387c86

File tree

7 files changed

+23
-42
lines changed

7 files changed

+23
-42
lines changed

compiler/rustc_codegen_gcc/src/builder.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use rustc_abi::{Align, HasDataLayout, Size, TargetDataLayout, WrappingRange};
1212
use rustc_apfloat::{Float, Round, Status, ieee};
1313
use rustc_codegen_ssa::MemFlags;
1414
use rustc_codegen_ssa::common::{
15-
AtomicOrdering, AtomicRmwBinOp, IntPredicate, RealPredicate, SynchronizationScope, TypeKind,
15+
AtomicRmwBinOp, IntPredicate, RealPredicate, SynchronizationScope, TypeKind,
1616
};
1717
use rustc_codegen_ssa::mir::operand::{OperandRef, OperandValue};
1818
use rustc_codegen_ssa::mir::place::PlaceRef;
@@ -26,7 +26,7 @@ use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
2626
use rustc_middle::ty::layout::{
2727
FnAbiError, FnAbiOfHelpers, FnAbiRequest, HasTyCtxt, HasTypingEnv, LayoutError, LayoutOfHelpers,
2828
};
29-
use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
29+
use rustc_middle::ty::{self, AtomicOrdering, Instance, Ty, TyCtxt};
3030
use rustc_span::Span;
3131
use rustc_span::def_id::DefId;
3232
use rustc_target::callconv::FnAbi;
@@ -75,7 +75,7 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
7575

7676
let load_ordering = match order {
7777
// TODO(antoyo): does this make sense?
78-
AtomicOrdering::AcquireRelease | AtomicOrdering::Release => AtomicOrdering::Acquire,
78+
AtomicOrdering::AcqRel | AtomicOrdering::Release => AtomicOrdering::Acquire,
7979
_ => order,
8080
};
8181
let previous_value =
@@ -2474,8 +2474,8 @@ impl ToGccOrdering for AtomicOrdering {
24742474
AtomicOrdering::Relaxed => __ATOMIC_RELAXED, // TODO(antoyo): check if that's the same.
24752475
AtomicOrdering::Acquire => __ATOMIC_ACQUIRE,
24762476
AtomicOrdering::Release => __ATOMIC_RELEASE,
2477-
AtomicOrdering::AcquireRelease => __ATOMIC_ACQ_REL,
2478-
AtomicOrdering::SequentiallyConsistent => __ATOMIC_SEQ_CST,
2477+
AtomicOrdering::AcqRel => __ATOMIC_ACQ_REL,
2478+
AtomicOrdering::SeqCst => __ATOMIC_SEQ_CST,
24792479
};
24802480
ordering as i32
24812481
}

compiler/rustc_codegen_llvm/src/builder.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
612612
&mut self,
613613
ty: &'ll Type,
614614
ptr: &'ll Value,
615-
order: rustc_codegen_ssa::common::AtomicOrdering,
615+
order: rustc_middle::ty::AtomicOrdering,
616616
size: Size,
617617
) -> &'ll Value {
618618
unsafe {
@@ -851,7 +851,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
851851
&mut self,
852852
val: &'ll Value,
853853
ptr: &'ll Value,
854-
order: rustc_codegen_ssa::common::AtomicOrdering,
854+
order: rustc_middle::ty::AtomicOrdering,
855855
size: Size,
856856
) {
857857
debug!("Store {:?} -> {:?}", val, ptr);
@@ -1307,8 +1307,8 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
13071307
dst: &'ll Value,
13081308
cmp: &'ll Value,
13091309
src: &'ll Value,
1310-
order: rustc_codegen_ssa::common::AtomicOrdering,
1311-
failure_order: rustc_codegen_ssa::common::AtomicOrdering,
1310+
order: rustc_middle::ty::AtomicOrdering,
1311+
failure_order: rustc_middle::ty::AtomicOrdering,
13121312
weak: bool,
13131313
) -> (&'ll Value, &'ll Value) {
13141314
let weak = if weak { llvm::True } else { llvm::False };
@@ -1334,7 +1334,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
13341334
op: rustc_codegen_ssa::common::AtomicRmwBinOp,
13351335
dst: &'ll Value,
13361336
mut src: &'ll Value,
1337-
order: rustc_codegen_ssa::common::AtomicOrdering,
1337+
order: rustc_middle::ty::AtomicOrdering,
13381338
) -> &'ll Value {
13391339
// The only RMW operation that LLVM supports on pointers is compare-exchange.
13401340
let requires_cast_to_int = self.val_ty(src) == self.type_ptr()
@@ -1360,7 +1360,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
13601360

13611361
fn atomic_fence(
13621362
&mut self,
1363-
order: rustc_codegen_ssa::common::AtomicOrdering,
1363+
order: rustc_middle::ty::AtomicOrdering,
13641364
scope: SynchronizationScope,
13651365
) {
13661366
let single_threaded = match scope {

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -426,14 +426,14 @@ pub(crate) enum AtomicOrdering {
426426
}
427427

428428
impl AtomicOrdering {
429-
pub(crate) fn from_generic(ao: rustc_codegen_ssa::common::AtomicOrdering) -> Self {
430-
use rustc_codegen_ssa::common::AtomicOrdering as Common;
429+
pub(crate) fn from_generic(ao: rustc_middle::ty::AtomicOrdering) -> Self {
430+
use rustc_middle::ty::AtomicOrdering as Common;
431431
match ao {
432432
Common::Relaxed => Self::Monotonic,
433433
Common::Acquire => Self::Acquire,
434434
Common::Release => Self::Release,
435-
Common::AcquireRelease => Self::AcquireRelease,
436-
Common::SequentiallyConsistent => Self::SequentiallyConsistent,
435+
Common::AcqRel => Self::AcquireRelease,
436+
Common::SeqCst => Self::SequentiallyConsistent,
437437
}
438438
}
439439
}

compiler/rustc_codegen_ssa/src/common.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,6 @@ pub enum AtomicRmwBinOp {
5959
AtomicUMin,
6060
}
6161

62-
#[derive(Copy, Clone, Debug)]
63-
pub enum AtomicOrdering {
64-
Relaxed,
65-
Acquire,
66-
Release,
67-
AcquireRelease,
68-
SequentiallyConsistent,
69-
}
70-
7162
#[derive(Copy, Clone, Debug)]
7263
pub enum SynchronizationScope {
7364
SingleThread,

compiler/rustc_codegen_ssa/src/mir/intrinsic.rs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,8 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
345345
// This requires that atomic intrinsics follow a specific naming pattern:
346346
// "atomic_<operation>[_<ordering>]"
347347
name if let Some(atomic) = name_str.strip_prefix("atomic_") => {
348-
use crate::common::AtomicOrdering::*;
348+
use rustc_middle::ty::AtomicOrdering::*;
349+
349350
use crate::common::{AtomicRmwBinOp, SynchronizationScope};
350351

351352
let invalid_monomorphization = |ty| {
@@ -358,16 +359,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
358359

359360
let parse_const_generic_ordering = |ord: ty::Value<'tcx>| {
360361
let discr = ord.valtree.unwrap_branch()[0].unwrap_leaf();
361-
let ord = discr.to_atomic_ordering();
362-
// We have to translate from the intrinsic ordering to the backend ordering.
363-
use rustc_middle::ty::AtomicOrdering;
364-
match ord {
365-
AtomicOrdering::Relaxed => Relaxed,
366-
AtomicOrdering::Release => Release,
367-
AtomicOrdering::Acquire => Acquire,
368-
AtomicOrdering::AcqRel => AcquireRelease,
369-
AtomicOrdering::SeqCst => SequentiallyConsistent,
370-
}
362+
discr.to_atomic_ordering()
371363
};
372364

373365
// Some intrinsics have the ordering already converted to a const generic parameter, we handle those first.
@@ -403,8 +395,8 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
403395
"relaxed" => Relaxed,
404396
"acquire" => Acquire,
405397
"release" => Release,
406-
"acqrel" => AcquireRelease,
407-
"seqcst" => SequentiallyConsistent,
398+
"acqrel" => AcqRel,
399+
"seqcst" => SeqCst,
408400
_ => bx.sess().dcx().emit_fatal(errors::UnknownAtomicOrdering),
409401
};
410402

compiler/rustc_codegen_ssa/src/traits/builder.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::ops::Deref;
44
use rustc_abi::{Align, Scalar, Size, WrappingRange};
55
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
66
use rustc_middle::ty::layout::{FnAbiOf, LayoutOf, TyAndLayout};
7-
use rustc_middle::ty::{Instance, Ty};
7+
use rustc_middle::ty::{AtomicOrdering, Instance, Ty};
88
use rustc_session::config::OptLevel;
99
use rustc_span::Span;
1010
use rustc_target::callconv::FnAbi;
@@ -19,9 +19,7 @@ use super::misc::MiscCodegenMethods;
1919
use super::type_::{ArgAbiBuilderMethods, BaseTypeCodegenMethods, LayoutTypeCodegenMethods};
2020
use super::{CodegenMethods, StaticBuilderMethods};
2121
use crate::MemFlags;
22-
use crate::common::{
23-
AtomicOrdering, AtomicRmwBinOp, IntPredicate, RealPredicate, SynchronizationScope, TypeKind,
24-
};
22+
use crate::common::{AtomicRmwBinOp, IntPredicate, RealPredicate, SynchronizationScope, TypeKind};
2523
use crate::mir::operand::{OperandRef, OperandValue};
2624
use crate::mir::place::{PlaceRef, PlaceValue};
2725

compiler/rustc_middle/src/ty/consts/int.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ impl ConstInt {
2929
/// An enum to represent the compiler-side view of `intrinsics::AtomicOrdering`.
3030
/// This lives here because there's a method in this file that needs it and it is entirely unclear
3131
/// where else to put this...
32-
#[derive(Debug)]
32+
#[derive(Debug, Copy, Clone)]
3333
pub enum AtomicOrdering {
3434
// These values must match `intrinsics::AtomicOrdering`!
3535
Relaxed = 0,

0 commit comments

Comments
 (0)