Skip to content
This repository was archived by the owner on May 29, 2025. It is now read-only.

Commit 1cc6207

Browse files
Merge pull request #14 from alexcrichton/fix-time-passes
Fix parsing nightly's `-Z time-passes` output
2 parents 4e7b11e + 84d05bb commit 1cc6207

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

src/time_passes.rs

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,31 @@ pub fn process_output(name: &str, output: Vec<u8>) -> Result<Vec<Pass>> {
99
.chain_err(|| format!("unable to convert output of {} to UTF-8", name))?;
1010
let mut passes = Vec::new();
1111

12+
let mut time_indent = None;
1213
for line in output.lines() {
13-
if line.starts_with("time: ") {
14-
let time = &line["time: ".len()..line.find(";").unwrap()];
14+
if line.trim().starts_with("time: ") {
15+
let indent = line.find("time:").unwrap();
16+
if time_indent.is_some() && Some(indent) != time_indent {
17+
// XXX: sub passes currently cause problems because their names are inconsistent in
18+
// incremental runs, especially codegen passes
19+
//let time = &line[" time: ".len()..line.find(";").unwrap()];
20+
//let time: f64 = time.parse().chain_err(|| format!("parsed time: {:?}", time))?;
21+
22+
//let mem = &line[line.find("rss: ").unwrap() + 5..line.find("MB").unwrap()];
23+
//let mem: u64 = mem.parse().chain_err(|| format!("parsed memory: {:?}", mem))?;
24+
25+
//let name = line[line.find("MB\t").unwrap() + 3..].to_string();
26+
//sub_passes.insert(name.clone(), Pass {
27+
// name: name,
28+
// time: time,
29+
// mem: mem,
30+
// sub_passes: HashMap::new(),
31+
//});
32+
continue
33+
}
34+
time_indent = Some(indent);
35+
36+
let time = &line[indent + "time: ".len()..line.find(";").unwrap()];
1537
let time: f64 = time.parse().chain_err(|| format!("parsed time: {:?}", time))?;
1638

1739
let mem = &line[line.find("rss: ").unwrap() + 5..line.find("MB").unwrap()];
@@ -23,22 +45,6 @@ pub fn process_output(name: &str, output: Vec<u8>) -> Result<Vec<Pass>> {
2345
time: time,
2446
mem: mem,
2547
});
26-
} else if line.starts_with(" time: ") {
27-
// XXX: sub passes currently cause problems because their names are inconsistent in
28-
// incremental runs, especially codegen passes
29-
//let time = &line[" time: ".len()..line.find(";").unwrap()];
30-
//let time: f64 = time.parse().chain_err(|| format!("parsed time: {:?}", time))?;
31-
32-
//let mem = &line[line.find("rss: ").unwrap() + 5..line.find("MB").unwrap()];
33-
//let mem: u64 = mem.parse().chain_err(|| format!("parsed memory: {:?}", mem))?;
34-
35-
//let name = line[line.find("MB\t").unwrap() + 3..].to_string();
36-
//sub_passes.insert(name.clone(), Pass {
37-
// name: name,
38-
// time: time,
39-
// mem: mem,
40-
// sub_passes: HashMap::new(),
41-
//});
4248
} else {
4349
//info!("unhandled line: {}", line);
4450
}

0 commit comments

Comments
 (0)