Disable limits if mir-opt-level >= 4
This commit is contained in:
parent
d66a00a7b1
commit
ea23585c91
@ -14,6 +14,7 @@
|
||||
use crate::MirPass;
|
||||
|
||||
// These constants are somewhat random guesses and have not been optimized.
|
||||
// If `tcx.sess.mir_opt_level() >= 4`, we ignore the limits (this can become very expensive).
|
||||
const BLOCK_LIMIT: usize = 100;
|
||||
const PLACE_LIMIT: usize = 100;
|
||||
|
||||
@ -26,7 +27,7 @@ fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
|
||||
|
||||
#[instrument(skip_all level = "debug")]
|
||||
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
||||
if body.basic_blocks.len() > BLOCK_LIMIT {
|
||||
if tcx.sess.mir_opt_level() < 4 && body.basic_blocks.len() > BLOCK_LIMIT {
|
||||
debug!("aborted dataflow const prop due too many basic blocks");
|
||||
return;
|
||||
}
|
||||
@ -42,7 +43,7 @@ fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
||||
// `O(num_nodes * tracked_places * n)` in terms of time complexity. Since the number of
|
||||
// map nodes is strongly correlated to the number of tracked places, this becomes more or
|
||||
// less `O(n)` if we place a constant limit on the number of tracked places.
|
||||
if map.tracked_places() > PLACE_LIMIT {
|
||||
if tcx.sess.mir_opt_level() < 4 && map.tracked_places() > PLACE_LIMIT {
|
||||
debug!("aborted dataflow const prop due to too many tracked places");
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user