https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114492
Alex Coplan <acoplan at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |acoplan at gcc dot gnu.org --- Comment #4 from Alex Coplan <acoplan at gcc dot gnu.org> --- I think these should be OK. In the case of: for (unsigned i = 0; i < changes.length (); i++) gcc_assert (rtl_ssa::restrict_movement_ignoring (*changes[i], is_changing)); I think this is OK because the pass guarantees to have chosen a singleton move range for the pair, so we don't rely on the call to restrict_movement_ignoring updating the move range for any of the changes. Other changes in the set are either deletions or no-ops in terms of movement. So we call this purely for checking purposes to make sure we're not attempting something invalid. Similarly in the case of: gcc_assert (crtl->ssa->verify_insn_changes (changes)); this is OK because the function doesn't have side effects (other than possibly dumping). Discussing this offline with Richard S he suggested asserting that we have singleton move ranges before calling restrict_movement_ignoring to make that case more obviously correct, so mine for that improvement (but either way I think this should be OK).