recog: Add a way of temporarily undoing changes
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 17 Dec 2020 00:15:07 +0000 (00:15 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 17 Dec 2020 00:15:07 +0000 (00:15 +0000)
commiteb74135dd35213f800f434df92b2835ce49f8ea6
tree7b9bc5b0bd2a9e257ed765d0fa8a057877c5b0f4
parent6059a3dd084d157759309357e5a52f8a8cc504c1
recog: Add a way of temporarily undoing changes

In some cases, it can be convenient to roll back the changes that
have been made by validate_change to see how things looked before,
then reroll the changes.  For example, this makes it possible
to defer calculating the cost of an instruction until we know that
the result is actually needed.  It can also make dumps easier to read.

This patch adds a couple of helper functions for doing that.

gcc/
* recog.h (temporarily_undo_changes, redo_changes): Declare.
* recog.c (temporarily_undone_changes): New variable.
(validate_change_1, confirm_change_group): Check that it's zero.
(cancel_changes): Likewise.
(swap_change, temporarily_undo_changes): New functions.
(redo_changes): Likewise.
gcc/recog.c
gcc/recog.h