MCPcopy Create free account
hub / github.com/Amanieu/regalloc3 / check_reg

Method check_reg

src/debug_utils/validate_reginfo.rs:320–345  ·  view source on GitHub ↗

Check a register.

(&mut self, reg: PhysReg)

Source from the content-addressed store, hash-verified

318
319 /// Check a register.
320 fn check_reg(&mut self, reg: PhysReg) -> Result<()> {
321 // Non-allocatable registers have no constraints.
322 if let Some(bank) = self.reginfo.bank_for_reg(reg) {
323 self.check_entity(Entity::RegBank(bank))?;
324 ensure!(
325 self.reginfo.reg_units(reg).count() != 0,
326 "{reg}: Allocatable register must have at least 1 register unit"
327 );
328
329 ensure!(
330 self.reginfo.reg_units(reg).count() <= MAX_UNITS_PER_REG,
331 "{reg} has too many register units (max is {MAX_UNITS_PER_REG})"
332 );
333
334 for unit in self.reginfo.reg_units(reg) {
335 self.check_entity(Entity::RegUnit(unit))?;
336 ensure!(
337 !self.bank_units[bank].contains(unit),
338 "{unit} in {reg} overlaps with other registers in {bank}"
339 );
340 self.bank_units[bank].insert(unit);
341 }
342 }
343
344 Ok(())
345 }
346
347 /// Check a register group.
348 fn check_reg_group(&mut self, group: RegGroup) -> Result<()> {

Callers 1

check_reginfoMethod · 0.80

Calls 4

bank_for_regMethod · 0.80
reg_unitsMethod · 0.80
check_entityMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected