On 06/23/2015 07:00 PM, Sandra Loosemore wrote:
On 06/18/2015 11:32 AM, Eric Botcazou wrote:
The attached patch teaches regrename to validate insns affected by each
register renaming before making the change.  I can see at least two
other ways to handle this -- earlier, by rejecting renamings that result
in invalid instructions when it's searching for the best renaming; or
later, by validating the entire set of renamings as a group instead of
incrementally for each one -- but doing it all in regname_do_replace
seems least disruptive and risky in terms of the existing code.

OK, but the patch looks incomplete, rename_chains should be adjusted
as well,
i.e. regrename_do_replace should now return a boolean.

Like this?  I tested this on nios2 and x86_64-linux-gnu, as before, plus
built for aarch64-linux-gnu and ran the gcc testsuite.

The c6x back end also calls regrename_do_replace.  I am not set up to
build or test on that target, and Bernd told me off-list that it would
never fail on that target anyway so I have left that code alone.

-Sandra

regrename-2.log


2015-06-23  Chung-Lin Tang<clt...@codesourcery.com>
            Sandra Loosemore<san...@codesourcery.com>

        gcc/
        * regrename.h (regrename_do_replace): Change to return bool.
        * regrename.c (rename_chains): Check return value of
        regname_do_replace.
        (regrename_do_replace): Re-validate the modified insns and
        return bool status.
        * config/aarch64/cortex-a57-fma-steering.c (rename_single_chain):
        Update to match rename_chains changes.
As Eric mentioned, please put an assert to verify that the call from the c6x backend never fails.

The regrename and ARM bits are fine.

Do you have a testcase that you can add to the suite? If so it'd be appreciated if you could include that too.

Approved with the c6x assert if a testcase isn't available or exceedingly difficult to produce.

jeff

Reply via email to