diff options
| author | Mark-Simulacrum <mark.simulacrum@gmail.com> | 2016-12-17 08:24:17 -0700 |
|---|---|---|
| committer | Mark Simulacrum <mark.simulacrum@gmail.com> | 2016-12-20 20:03:29 -0700 |
| commit | 449c6d82a7f5e25cd294fb2e9a49079e91c5284c (patch) | |
| tree | f664b9cf70754855539cd4c6f27ecf4bb496b58b /src | |
| parent | cc1e210ee8eedfa253122f1dd8d78fbde2646e80 (diff) | |
| download | rust-449c6d82a7f5e25cd294fb2e9a49079e91c5284c.tar.gz rust-449c6d82a7f5e25cd294fb2e9a49079e91c5284c.zip | |
Simplify basic_block.rs
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_trans/basic_block.rs | 19 | ||||
| -rw-r--r-- | src/librustc_trans/lib.rs | 1 |
2 files changed, 6 insertions, 14 deletions
diff --git a/src/librustc_trans/basic_block.rs b/src/librustc_trans/basic_block.rs index 60bd3fb8ef1..50246a1c5b3 100644 --- a/src/librustc_trans/basic_block.rs +++ b/src/librustc_trans/basic_block.rs @@ -10,18 +10,15 @@ use llvm; use llvm::BasicBlockRef; -use value::{Users, Value}; -use std::iter::{Filter, Map}; +use value::Value; #[derive(Copy, Clone)] pub struct BasicBlock(pub BasicBlockRef); -pub type Preds = Map<Filter<Users, fn(&Value) -> bool>, fn(Value) -> BasicBlock>; - /// Wrapper for LLVM BasicBlockRef impl BasicBlock { pub fn get(&self) -> BasicBlockRef { - let BasicBlock(v) = *self; v + self.0 } pub fn as_value(self) -> Value { @@ -30,16 +27,10 @@ impl BasicBlock { } } - pub fn pred_iter(self) -> Preds { - fn is_a_terminator_inst(user: &Value) -> bool { user.is_a_terminator_inst() } - let is_a_terminator_inst: fn(&Value) -> bool = is_a_terminator_inst; - - fn get_parent(user: Value) -> BasicBlock { user.get_parent().unwrap() } - let get_parent: fn(Value) -> BasicBlock = get_parent; - + pub fn pred_iter(self) -> impl Iterator<Item=BasicBlock> { self.as_value().user_iter() - .filter(is_a_terminator_inst) - .map(get_parent) + .filter(|user| user.is_a_terminator_inst()) + .map(|user| user.get_parent().unwrap()) } pub fn get_single_predecessor(self) -> Option<BasicBlock> { diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs index 572d96eaef2..bd8121e2b9c 100644 --- a/src/librustc_trans/lib.rs +++ b/src/librustc_trans/lib.rs @@ -36,6 +36,7 @@ #![feature(slice_patterns)] #![feature(staged_api)] #![feature(unicode)] +#![feature(conservative_impl_trait)] use rustc::dep_graph::WorkProduct; |
