recog: Add a validate_change_xveclen function
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 17 Dec 2020 00:15:06 +0000 (00:15 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 17 Dec 2020 00:15:06 +0000 (00:15 +0000)
commit6059a3dd084d157759309357e5a52f8a8cc504c1
tree995df859e09f7f248c362584f2e76cd62bcb11c4
parentf48b51496d08de2aabc5ed1deb45e5517333662c
recog: Add a validate_change_xveclen function

A later patch wants to be able to use the validate_change machinery
to reduce the XVECLEN of a PARALLEL.  This should be more efficient
than allocating a separate PARALLEL at a possibly distant memory
location, especially since the new PARALLEL would be garbage rtl if
the new pattern turns out not to match.  Combine already pulls this
trick with SUBST_INT.

This patch adds a general helper for doing that.

gcc/
* recog.h (validate_change_xveclen): Declare.
* recog.c (change_t::old_len): New field.
(validate_change_1): Add a new_len parameter.  Conditionally
replace the XVECLEN of an rtx, avoiding single-element PARALLELs.
(validate_change_xveclen): New function.
(cancel_changes): Undo changes made by validate_change_xveclen.
gcc/recog.c
gcc/recog.h