Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
rustc/driver: improve/remove allocations
  • Loading branch information
ljedrz committed Oct 13, 2018
1 parent 39753c8 commit 9a1de08
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 32 deletions.
12 changes: 6 additions & 6 deletions src/librustc_driver/driver.rs
Expand Up @@ -1586,9 +1586,8 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c
base.dedup();
}

base.into_iter()
.filter(|crate_type| {
let res = !::rustc_codegen_utils::link::invalid_output_for_target(session, *crate_type);
base.retain(|crate_type| {
let res = !::rustc_codegen_utils::link::invalid_output_for_target(session, *crate_type);

if !res {
session.warn(&format!(
Expand All @@ -1597,9 +1596,10 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c
));
}

res
})
.collect()
res
});

base
}

pub fn compute_crate_disambiguator(session: &Session) -> CrateDisambiguator {
Expand Down
27 changes: 12 additions & 15 deletions src/librustc_driver/lib.rs
Expand Up @@ -137,9 +137,7 @@ pub mod target_features {
codegen_backend: &dyn CodegenBackend) {
let tf = Symbol::intern("target_feature");

for feat in codegen_backend.target_features(sess) {
cfg.insert((tf, Some(feat)));
}
cfg.extend(codegen_backend.target_features(sess).into_iter().map(|feat| (tf, Some(feat))));

if sess.crt_static_feature() {
cfg.insert((tf, Some(Symbol::intern("crt-static"))));
Expand Down Expand Up @@ -997,7 +995,7 @@ impl RustcDefaultCalls {
input: &Input)
-> Compilation {
let r = matches.opt_strs("Z");
if r.contains(&("ls".to_string())) {
if r.iter().any(|s| *s == "ls") {
match input {
&Input::File(ref ifile) => {
let path = &(*ifile);
Expand Down Expand Up @@ -1085,8 +1083,7 @@ impl RustcDefaultCalls {
let allow_unstable_cfg = UnstableFeatures::from_environment()
.is_nightly_build();

let mut cfgs = Vec::new();
for &(name, ref value) in sess.parse_sess.config.iter() {
let mut cfgs = sess.parse_sess.config.iter().filter_map(|&(name, ref value)| {
let gated_cfg = GatedCfg::gate(&ast::MetaItem {
ident: ast::Path::from_ident(ast::Ident::with_empty_ctxt(name)),
node: ast::MetaItemKind::Word,
Expand All @@ -1105,16 +1102,16 @@ impl RustcDefaultCalls {
let value = value.as_ref().map(|s| s.as_ref());
if name != "target_feature" || value != Some("crt-static") {
if !allow_unstable_cfg && gated_cfg.is_some() {
continue;
return None
}
}

cfgs.push(if let Some(value) = value {
format!("{}=\"{}\"", name, value)
if let Some(value) = value {
Some(format!("{}=\"{}\"", name, value))
} else {
name.to_string()
});
}
Some(name.to_string())
}
}).collect::<Vec<String>>();

cfgs.sort();
for cfg in cfgs {
Expand Down Expand Up @@ -1177,7 +1174,7 @@ fn usage(verbose: bool, include_unstable_options: bool) {
for option in groups.iter().filter(|x| include_unstable_options || x.is_stable()) {
(option.apply)(&mut options);
}
let message = "Usage: rustc [OPTIONS] INPUT".to_string();
let message = "Usage: rustc [OPTIONS] INPUT";
let nightly_help = if nightly_options::is_nightly_build() {
"\n -Z help Print internal options for debugging rustc"
} else {
Expand All @@ -1192,7 +1189,7 @@ fn usage(verbose: bool, include_unstable_options: bool) {
-C help Print codegen options
-W help \
Print 'lint' options and default settings{}{}\n",
options.usage(&message),
options.usage(message),
nightly_help,
verbose_help);
}
Expand Down Expand Up @@ -1463,7 +1460,7 @@ pub fn handle_options(args: &[String]) -> Option<getopts::Matches> {
"the --no-stack-check flag is deprecated and does nothing");
}

if cg_flags.contains(&"passes=list".to_string()) {
if cg_flags.iter().any(|x| *x == "passes=list") {
get_codegen_sysroot("llvm")().print_passes();
return None;
}
Expand Down
23 changes: 12 additions & 11 deletions src/librustc_driver/profile/trace.rs
Expand Up @@ -89,18 +89,18 @@ fn html_of_duration(_start: &Instant, dur: &Duration) -> (String, String) {
)
}

fn html_of_fraction(frac: f64) -> (String, String) {
fn html_of_fraction(frac: f64) -> (String, &'static str) {
let css = {
if frac > 0.50 { "frac-50".to_string() }
else if frac > 0.40 { "frac-40".to_string() }
else if frac > 0.30 { "frac-30".to_string() }
else if frac > 0.20 { "frac-20".to_string() }
else if frac > 0.10 { "frac-10".to_string() }
else if frac > 0.05 { "frac-05".to_string() }
else if frac > 0.02 { "frac-02".to_string() }
else if frac > 0.01 { "frac-01".to_string() }
else if frac > 0.001 { "frac-001".to_string() }
else { "frac-0".to_string() }
if frac > 0.50 { "frac-50" }
else if frac > 0.40 { "frac-40" }
else if frac > 0.30 { "frac-30" }
else if frac > 0.20 { "frac-20" }
else if frac > 0.10 { "frac-10" }
else if frac > 0.05 { "frac-05" }
else if frac > 0.02 { "frac-02" }
else if frac > 0.01 { "frac-01" }
else if frac > 0.001 { "frac-001" }
else { "frac-0" }
};
let percent = frac * 100.0;
if percent > 0.1 { (format!("{:.1}%", percent), css) }
Expand Down Expand Up @@ -148,6 +148,7 @@ fn write_traces_rec(file: &mut File, traces: &[Rec], total: Duration, depth: usi
}

fn compute_counts_rec(counts: &mut FxHashMap<String,QueryMetric>, traces: &[Rec]) {
counts.reserve(traces.len());
for t in traces.iter() {
match t.effect {
Effect::TimeBegin(ref msg) => {
Expand Down

0 comments on commit 9a1de08

Please sign in to comment.