Skip to content

Commit ef83e68

Browse files
committed
rustc_codegen_ssa: derive copy and clone for various enums
1 parent f4c92cc commit ef83e68

File tree

2 files changed

+7
-19
lines changed

2 files changed

+7
-19
lines changed

compiler/rustc_codegen_gcc/src/builder.rs

+2-19
Original file line numberDiff line numberDiff line change
@@ -61,23 +61,6 @@ enum ExtremumOperation {
6161
Min,
6262
}
6363

64-
trait EnumClone {
65-
fn clone(&self) -> Self;
66-
}
67-
68-
impl EnumClone for AtomicOrdering {
69-
fn clone(&self) -> Self {
70-
match *self {
71-
AtomicOrdering::Unordered => AtomicOrdering::Unordered,
72-
AtomicOrdering::Relaxed => AtomicOrdering::Relaxed,
73-
AtomicOrdering::Acquire => AtomicOrdering::Acquire,
74-
AtomicOrdering::Release => AtomicOrdering::Release,
75-
AtomicOrdering::AcquireRelease => AtomicOrdering::AcquireRelease,
76-
AtomicOrdering::SequentiallyConsistent => AtomicOrdering::SequentiallyConsistent,
77-
}
78-
}
79-
}
80-
8164
pub struct Builder<'a: 'gcc, 'gcc, 'tcx> {
8265
pub cx: &'a CodegenCx<'gcc, 'tcx>,
8366
pub block: Block<'gcc>,
@@ -102,9 +85,9 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
10285
match order {
10386
// TODO(antoyo): does this make sense?
10487
AtomicOrdering::AcquireRelease | AtomicOrdering::Release => AtomicOrdering::Acquire,
105-
_ => order.clone(),
88+
_ => order,
10689
};
107-
let previous_value = self.atomic_load(dst.get_type(), dst, load_ordering.clone(), Size::from_bytes(size));
90+
let previous_value = self.atomic_load(dst.get_type(), dst, load_ordering, Size::from_bytes(size));
10891
let previous_var = func.new_local(None, previous_value.get_type(), "previous_value");
10992
let return_value = func.new_local(None, previous_value.get_type(), "return_value");
11093
self.llbb().add_assignment(None, previous_var, previous_value);

compiler/rustc_codegen_ssa/src/common.rs

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use rustc_span::Span;
1111
use crate::base;
1212
use crate::traits::*;
1313

14+
#[derive(Copy, Clone)]
1415
pub enum IntPredicate {
1516
IntEQ,
1617
IntNE,
@@ -24,6 +25,7 @@ pub enum IntPredicate {
2425
IntSLE,
2526
}
2627

28+
#[derive(Copy, Clone)]
2729
pub enum RealPredicate {
2830
RealPredicateFalse,
2931
RealOEQ,
@@ -43,6 +45,7 @@ pub enum RealPredicate {
4345
RealPredicateTrue,
4446
}
4547

48+
#[derive(Copy, Clone)]
4649
pub enum AtomicRmwBinOp {
4750
AtomicXchg,
4851
AtomicAdd,
@@ -57,6 +60,7 @@ pub enum AtomicRmwBinOp {
5760
AtomicUMin,
5861
}
5962

63+
#[derive(Copy, Clone)]
6064
pub enum AtomicOrdering {
6165
Unordered,
6266
Relaxed,
@@ -66,6 +70,7 @@ pub enum AtomicOrdering {
6670
SequentiallyConsistent,
6771
}
6872

73+
#[derive(Copy, Clone)]
6974
pub enum SynchronizationScope {
7075
SingleThread,
7176
CrossThread,

0 commit comments

Comments
 (0)