Add a compilation pass timing facility.

Individual compilation passes call the corresponding timing::*()
function and hold on to their timing token while they run. This causes
nested per-pass timing information to be recorded in thread-local
storage.

The --time-passes command line option prints a pass timing report to
stdout.
This commit is contained in:
Jakob Stoklund Olesen
2017-12-06 10:56:17 -08:00
parent feaea238bc
commit 60c456c1ec
29 changed files with 305 additions and 12 deletions

View File

@@ -8,6 +8,7 @@ use isa;
use packed_option::PackedOption;
use std::result;
use verifier::{Result, Error};
use timing;
/// Verify that CPU flags are used correctly.
///
@@ -26,6 +27,7 @@ pub fn verify_flags(
cfg: &ControlFlowGraph,
isa: Option<&isa::TargetIsa>,
) -> Result {
let _tt = timing::verify_flags();
let mut verifier = FlagsVerifier {
func,
cfg,