diff --git a/src/librustc_llvm/diagnostic.rs b/src/librustc_llvm/diagnostic.rs index 04196feafd2..3bf9c2d44f7 100644 --- a/src/librustc_llvm/diagnostic.rs +++ b/src/librustc_llvm/diagnostic.rs @@ -17,6 +17,7 @@ use libc::c_char; use {ValueRef, TwineRef, DebugLocRef, DiagnosticInfoRef}; +#[deriving(Copy)] pub enum OptimizationDiagnosticKind { OptimizationRemark, OptimizationMissed, @@ -24,8 +25,6 @@ pub enum OptimizationDiagnosticKind { OptimizationFailure, } -impl Copy for OptimizationDiagnosticKind {} - impl OptimizationDiagnosticKind { pub fn describe(self) -> &'static str { match self { @@ -69,6 +68,7 @@ impl OptimizationDiagnostic { } } +#[deriving(Copy)] pub enum Diagnostic { Optimization(OptimizationDiagnostic), @@ -76,8 +76,6 @@ pub enum Diagnostic { UnknownDiagnostic(DiagnosticInfoRef), } -impl Copy for Diagnostic {} - impl Diagnostic { pub unsafe fn unpack(di: DiagnosticInfoRef) -> Diagnostic { let kind = super::LLVMGetDiagInfoKind(di); diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs index 8b036b25015..3528b510ea1 100644 --- a/src/librustc_llvm/lib.rs +++ b/src/librustc_llvm/lib.rs @@ -68,7 +68,7 @@ pub const False: Bool = 0 as Bool; // Consts for the LLVM CallConv type, pre-cast to uint. -#[deriving(PartialEq)] +#[deriving(Copy, PartialEq)] pub enum CallConv { CCallConv = 0, FastCallConv = 8, @@ -78,20 +78,18 @@ pub enum CallConv { X86_64_Win64 = 79, } -impl Copy for CallConv {} - +#[deriving(Copy)] pub enum Visibility { LLVMDefaultVisibility = 0, HiddenVisibility = 1, ProtectedVisibility = 2, } -impl Copy for Visibility {} - // This enum omits the obsolete (and no-op) linkage types DLLImportLinkage, // DLLExportLinkage, GhostLinkage and LinkOnceODRAutoHideLinkage. // LinkerPrivateLinkage and LinkerPrivateWeakLinkage are not included either; // they've been removed in upstream LLVM commit r203866. +#[deriving(Copy)] pub enum Linkage { ExternalLinkage = 0, AvailableExternallyLinkage = 1, @@ -106,10 +104,8 @@ pub enum Linkage { CommonLinkage = 14, } -impl Copy for Linkage {} - #[repr(C)] -#[deriving(Show)] +#[deriving(Copy, Show)] pub enum DiagnosticSeverity { Error, Warning, @@ -117,8 +113,6 @@ pub enum DiagnosticSeverity { Note, } -impl Copy for DiagnosticSeverity {} - bitflags! { flags Attribute : u32 { const ZExtAttribute = 1 << 0, @@ -152,6 +146,7 @@ bitflags! { #[repr(u64)] +#[deriving(Copy)] pub enum OtherAttribute { // The following are not really exposed in // the LLVM c api so instead to add these @@ -172,22 +167,18 @@ pub enum OtherAttribute { NonNullAttribute = 1 << 44, } -impl Copy for OtherAttribute {} - +#[deriving(Copy)] pub enum SpecialAttribute { DereferenceableAttribute(u64) } -impl Copy for SpecialAttribute {} - #[repr(C)] +#[deriving(Copy)] pub enum AttributeSet { ReturnIndex = 0, FunctionIndex = !0 } -impl Copy for AttributeSet {} - pub trait AttrHelper { fn apply_llfn(&self, idx: c_uint, llfn: ValueRef); fn apply_callsite(&self, idx: c_uint, callsite: ValueRef); @@ -274,6 +265,7 @@ impl AttrBuilder { } // enum for the LLVM IntPredicate type +#[deriving(Copy)] pub enum IntPredicate { IntEQ = 32, IntNE = 33, @@ -287,9 +279,8 @@ pub enum IntPredicate { IntSLE = 41, } -impl Copy for IntPredicate {} - // enum for the LLVM RealPredicate type +#[deriving(Copy)] pub enum RealPredicate { RealPredicateFalse = 0, RealOEQ = 1, @@ -309,11 +300,9 @@ pub enum RealPredicate { RealPredicateTrue = 15, } -impl Copy for RealPredicate {} - // The LLVM TypeKind type - must stay in sync with the def of // LLVMTypeKind in llvm/include/llvm-c/Core.h -#[deriving(PartialEq)] +#[deriving(Copy, PartialEq)] #[repr(C)] pub enum TypeKind { Void = 0, @@ -334,9 +323,8 @@ pub enum TypeKind { X86_MMX = 15, } -impl Copy for TypeKind {} - #[repr(C)] +#[deriving(Copy)] pub enum AtomicBinOp { AtomicXchg = 0, AtomicAdd = 1, @@ -351,9 +339,8 @@ pub enum AtomicBinOp { AtomicUMin = 10, } -impl Copy for AtomicBinOp {} - #[repr(C)] +#[deriving(Copy)] pub enum AtomicOrdering { NotAtomic = 0, Unordered = 1, @@ -365,17 +352,15 @@ pub enum AtomicOrdering { SequentiallyConsistent = 7 } -impl Copy for AtomicOrdering {} - // Consts for the LLVMCodeGenFileType type (in include/llvm/c/TargetMachine.h) #[repr(C)] +#[deriving(Copy)] pub enum FileType { AssemblyFileType = 0, ObjectFileType = 1 } -impl Copy for FileType {} - +#[deriving(Copy)] pub enum MetadataType { MD_dbg = 0, MD_tbaa = 1, @@ -385,17 +370,14 @@ pub enum MetadataType { MD_tbaa_struct = 5 } -impl Copy for MetadataType {} - // Inline Asm Dialect +#[deriving(Copy)] pub enum AsmDialect { AD_ATT = 0, AD_Intel = 1 } -impl Copy for AsmDialect {} - -#[deriving(PartialEq, Clone)] +#[deriving(Copy, PartialEq, Clone)] #[repr(C)] pub enum CodeGenOptLevel { CodeGenLevelNone = 0, @@ -404,9 +386,7 @@ pub enum CodeGenOptLevel { CodeGenLevelAggressive = 3, } -impl Copy for CodeGenOptLevel {} - -#[deriving(PartialEq)] +#[deriving(Copy, PartialEq)] #[repr(C)] pub enum RelocMode { RelocDefault = 0, @@ -415,9 +395,8 @@ pub enum RelocMode { RelocDynamicNoPic = 3, } -impl Copy for RelocMode {} - #[repr(C)] +#[deriving(Copy)] pub enum CodeGenModel { CodeModelDefault = 0, CodeModelJITDefault = 1, @@ -427,9 +406,8 @@ pub enum CodeGenModel { CodeModelLarge = 5, } -impl Copy for CodeGenModel {} - #[repr(C)] +#[deriving(Copy)] pub enum DiagnosticKind { DK_InlineAsm = 0, DK_StackSize, @@ -441,8 +419,6 @@ pub enum DiagnosticKind { DK_OptimizationFailure, } -impl Copy for DiagnosticKind {} - // Opaque pointer types #[allow(missing_copy_implementations)] pub enum Module_opaque {} @@ -537,6 +513,7 @@ pub mod debuginfo { pub type DIArray = DIDescriptor; pub type DISubrange = DIDescriptor; + #[deriving(Copy)] pub enum DIDescriptorFlags { FlagPrivate = 1 << 0, FlagProtected = 1 << 1, @@ -555,8 +532,6 @@ pub mod debuginfo { FlagLValueReference = 1 << 14, FlagRValueReference = 1 << 15 } - - impl Copy for DIDescriptorFlags {} }