]> gcc.gnu.org Git - gcc.git/commit
RA: Implement reuse of equivalent memory for caller saves optimization (2nd version)
authorVladimir N. Makarov <vmakarov@redhat.com>
Thu, 9 Feb 2023 20:18:48 +0000 (15:18 -0500)
committerVladimir N. Makarov <vmakarov@redhat.com>
Thu, 9 Feb 2023 21:48:21 +0000 (16:48 -0500)
commit10827a92f1a8c3207b327515f77845b34c1d9512
tree9ede1ff37a8cbdba928e8451d259f31bed2c1d4f
parenta618b45ac41cf480f54c4fa4014aed6218931290
RA: Implement reuse of equivalent memory for caller saves optimization (2nd version)

The test pr103541.c shows opportunity to reuse memory with constant address for
caller saves optimization for constant or pure function call.  The patch
implements the memory reuse.

        PR rtl-optimization/103541
        PR rtl-optimization/108711

gcc/ChangeLog:

* ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
* ira.cc (validate_equiv_mem): Check memref address variance.
(no_equiv): Clear caller_save_p flag.
(update_equiv_regs): Define caller save equivalence for
valid_combine.
(setup_reg_equiv): Clear defined_p flag for caller save equivalence.
* lra-constraints.cc (lra_copy_reg_equiv): Add new arg
call_save_p.  Use caller save equivalence depending on the arg.
(split_reg): Adjust the call.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr103541.c: New.
* g++.target/i386/pr108711.C: New.
gcc/ira.cc
gcc/ira.h
gcc/lra-constraints.cc
gcc/testsuite/g++.target/i386/pr108711.C [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr103541.c [new file with mode: 0644]
This page took 0.079929 seconds and 6 git commands to generate.