1
Fork 0

Auto merge of #116454 - tmiasko:small-dominators, r=cjgillot

Generalize small dominators optimization

* Use small dominators optimization from 640ede7b0a more generally.
* Merge `DefLocation` and `LocationExtended` since they serve the same purpose.
This commit is contained in:
bors 2023-10-08 12:38:14 +00:00
commit 4f4a413fe6
5 changed files with 134 additions and 115 deletions

View file

@ -8,7 +8,7 @@ use rustc_index::bit_set::BitSet;
use rustc_index::{IndexSlice, IndexVec};
use rustc_middle::mir::traversal;
use rustc_middle::mir::visit::{MutatingUseContext, NonMutatingUseContext, PlaceContext, Visitor};
use rustc_middle::mir::{self, Location, TerminatorKind};
use rustc_middle::mir::{self, DefLocation, Location, TerminatorKind};
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
pub fn non_ssa_locals<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
@ -67,21 +67,6 @@ enum LocalKind {
SSA(DefLocation),
}
#[derive(Copy, Clone, PartialEq, Eq)]
enum DefLocation {
Argument,
Body(Location),
}
impl DefLocation {
fn dominates(self, location: Location, dominators: &Dominators<mir::BasicBlock>) -> bool {
match self {
DefLocation::Argument => true,
DefLocation::Body(def) => def.successor_within_block().dominates(location, dominators),
}
}
}
struct LocalAnalyzer<'mir, 'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> {
fx: &'mir FunctionCx<'a, 'tcx, Bx>,
dominators: &'mir Dominators<mir::BasicBlock>,