From 82fde5b62281fa51a72bb4fbbf4324ca623a68d1 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sun, 6 Oct 2019 17:52:23 +0200 Subject: [PATCH] Remove bitflags dependency --- Cargo.lock | 1 - Cargo.toml | 1 - src/abi/mod.rs | 10 ++-------- src/abi/returning.rs | 8 +++----- src/analyze.rs | 26 ++++++++++++-------------- 5 files changed, 17 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ce707861fe8..c6b8ab0e398 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -391,7 +391,6 @@ name = "rustc_codegen_cranelift" version = "0.1.0" dependencies = [ "ar 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift 0.44.0 (git+https://github.com/CraneStation/cranelift.git)", "cranelift-faerie 0.44.0 (git+https://github.com/CraneStation/cranelift.git)", diff --git a/Cargo.toml b/Cargo.toml index 74e1dda7e04..66256cd68e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,6 @@ faerie = "0.11.0" #goblin = "0.0.17" ar = "0.8.0" -bitflags = "1.1.0" byteorder = "1.2.7" libc = "0.2.53" gimli = "0.19.0" diff --git a/src/abi/mod.rs b/src/abi/mod.rs index 8d4038065e9..dcd9a6ab932 100644 --- a/src/abi/mod.rs +++ b/src/abi/mod.rs @@ -282,10 +282,7 @@ pub fn codegen_fn_prelude(fx: &mut FunctionCx<'_, '_, impl Backend>, start_ebb: for (local, arg_kind, ty) in func_params { let layout = fx.layout_of(ty); - let is_ssa = !ssa_analyzed - .get(&local) - .unwrap() - .contains(crate::analyze::Flags::NOT_SSA); + let is_ssa = *ssa_analyzed.get(&local).unwrap() == crate::analyze::SsaKind::Ssa; match arg_kind { ArgKind::Normal(Some(val)) => { @@ -339,10 +336,7 @@ pub fn codegen_fn_prelude(fx: &mut FunctionCx<'_, '_, impl Backend>, start_ebb: let ty = fx.mir.local_decls[local].ty; let layout = fx.layout_of(ty); - let is_ssa = !ssa_analyzed - .get(&local) - .unwrap() - .contains(crate::analyze::Flags::NOT_SSA); + let is_ssa = *ssa_analyzed.get(&local).unwrap() == crate::analyze::SsaKind::Ssa; local_place(fx, local, layout, is_ssa); } diff --git a/src/abi/returning.rs b/src/abi/returning.rs index f827f11df35..76232793406 100644 --- a/src/abi/returning.rs +++ b/src/abi/returning.rs @@ -3,7 +3,7 @@ use crate::prelude::*; pub fn codegen_return_param( fx: &mut FunctionCx, - ssa_analyzed: &HashMap, + ssa_analyzed: &HashMap, start_ebb: Ebb, ) { let ret_layout = fx.return_layout(); @@ -16,10 +16,8 @@ pub fn codegen_return_param( Empty } PassMode::ByVal(_) | PassMode::ByValPair(_, _) => { - let is_ssa = !ssa_analyzed - .get(&RETURN_PLACE) - .unwrap() - .contains(crate::analyze::Flags::NOT_SSA); + let is_ssa = + *ssa_analyzed.get(&RETURN_PLACE).unwrap() == crate::analyze::SsaKind::Ssa; super::local_place(fx, RETURN_PLACE, ret_layout, is_ssa); diff --git a/src/analyze.rs b/src/analyze.rs index 63b268597fe..fe58eaa18bb 100644 --- a/src/analyze.rs +++ b/src/analyze.rs @@ -2,22 +2,20 @@ use crate::prelude::*; use rustc::mir::StatementKind::*; -bitflags::bitflags! { - pub struct Flags: u8 { - const NOT_SSA = 0b00000001; - } +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +pub enum SsaKind { + NotSsa, + Ssa, } -pub fn analyze(fx: &FunctionCx<'_, '_, impl Backend>) -> HashMap { +pub fn analyze(fx: &FunctionCx<'_, '_, impl Backend>) -> HashMap { let mut flag_map = HashMap::new(); - for local in fx.mir.local_decls.indices() { - flag_map.insert(local, Flags::empty()); - } - for (local, local_decl) in fx.mir.local_decls.iter_enumerated() { - if fx.clif_type(local_decl.ty).is_none() { - not_ssa(&mut flag_map, local); + if fx.clif_type(local_decl.ty).is_some() { + flag_map.insert(local, SsaKind::Ssa); + } else { + flag_map.insert(local, SsaKind::NotSsa); } } @@ -46,13 +44,13 @@ pub fn analyze(fx: &FunctionCx<'_, '_, impl Backend>) -> HashMap { flag_map } -fn analyze_non_ssa_place(flag_map: &mut HashMap, place: &Place) { +fn analyze_non_ssa_place(flag_map: &mut HashMap, place: &Place) { match place.base { PlaceBase::Local(local) => not_ssa(flag_map, local), _ => {} } } -fn not_ssa>(flag_map: &mut HashMap, local: L) { - *flag_map.get_mut(local.borrow()).unwrap() |= Flags::NOT_SSA; +fn not_ssa>(flag_map: &mut HashMap, local: L) { + *flag_map.get_mut(local.borrow()).unwrap() = SsaKind::NotSsa; }