aboutsummaryrefslogtreecommitdiff
path: root/gcc/regrename.cc
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2025-09-02 15:58:26 -0700
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2025-09-02 15:58:26 -0700
commit071b4126c613881f4cb25b4e5c39032964827f88 (patch)
tree7ed805786566918630d1d617b1ed8f7310f5fd8e /gcc/regrename.cc
parent845d23f3ea08ba873197c275a8857eee7edad996 (diff)
parentcaa1c2f42691d68af4d894a5c3e700ecd2dba080 (diff)
downloadgcc-devel/gfortran-test.zip
gcc-devel/gfortran-test.tar.gz
gcc-devel/gfortran-test.tar.bz2
Merge branch 'master' into gfortran-testdevel/gfortran-test
Diffstat (limited to 'gcc/regrename.cc')
-rw-r--r--gcc/regrename.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/regrename.cc b/gcc/regrename.cc
index 7de8881..cb03c1d 100644
--- a/gcc/regrename.cc
+++ b/gcc/regrename.cc
@@ -1117,6 +1117,12 @@ scan_rtx_reg (rtx_insn *insn, rtx *loc, enum reg_class cl, enum scan_actions act
unsigned this_regno = REGNO (x);
int this_nregs = REG_NREGS (x);
+ /* Do not process write actions for the second instruction of
+ a macro-fused pair of two single_sets. */
+ if ((action == mark_write || action == terminate_write)
+ && single_output_fused_pair_p (insn))
+ return;
+
if (action == mark_write)
{
if (type == OP_OUT)
@@ -1153,7 +1159,9 @@ scan_rtx_reg (rtx_insn *insn, rtx *loc, enum reg_class cl, enum scan_actions act
return;
}
- if ((type == OP_OUT) != (action == terminate_write || action == mark_access))
+ if ((type == OP_OUT) != (action == terminate_write || action == mark_access)
+ && ! (type == OP_OUT && action == mark_read
+ && single_output_fused_pair_p (insn)))
return;
for (p = &open_chains; *p;)