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

Method check_reg_group

src/debug_utils/validate_reginfo.rs:348–377  ·  view source on GitHub ↗

Check a register group.

(&mut self, group: RegGroup)

Source from the content-addressed store, hash-verified

346
347 /// Check a register group.
348 fn check_reg_group(&mut self, group: RegGroup) -> Result<()> {
349 let members = self.reginfo.reg_group_members(group);
350 ensure!(
351 members.len() >= 2 || members.len() > MAX_GROUP_SIZE,
352 "{group}: Invalid group size {}",
353 members.len()
354 );
355 let Some(bank) = self.reginfo.bank_for_reg(members[0]) else {
356 bail!(
357 "{group}: Register member {} must be in a register bank",
358 members[0]
359 );
360 };
361
362 // Check for overlaps within a group.
363 let mut set = PhysRegSet::new();
364 for &member in members {
365 self.check_entity(Entity::PhysReg(member))?;
366 ensure!(
367 self.reginfo.bank_for_reg(member) == Some(bank),
368 "{group}: Group member {member} expected to be from {bank}"
369 );
370 ensure!(
371 !set.contains(member),
372 "{group} contains duplicate member {member}"
373 );
374 set.insert(member);
375 }
376 Ok(())
377 }
378
379 /// Main entry point for `RegInfo` validation.
380 fn check_reginfo(&mut self) -> Result<()> {

Callers 1

check_reginfoMethod · 0.80

Calls 4

reg_group_membersMethod · 0.80
bank_for_regMethod · 0.80
check_entityMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected