aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgcleanup.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-03-22 17:40:04 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-03-22 17:40:04 -0800
commit3ce6bef0f97391a518fe5a7be4a65bb1ed103182 (patch)
treea74d627ef14953efdc3431beb769188b0728e42b /gcc/cfgcleanup.c
parentde32716c0dc0a842db46ab4ebba49be4b0763b62 (diff)
downloadgcc-3ce6bef0f97391a518fe5a7be4a65bb1ed103182.zip
gcc-3ce6bef0f97391a518fe5a7be4a65bb1ed103182.tar.gz
gcc-3ce6bef0f97391a518fe5a7be4a65bb1ed103182.tar.bz2
cfgcleanup.c (insns_match_p): Do not do EQUIV substitution after reload.
* cfgcleanup.c (insns_match_p): Do not do EQUIV substitution after reload. From-SVN: r64738
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r--gcc/cfgcleanup.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 76aebc4..42dc0a9 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -967,7 +967,15 @@ insns_match_p (mode, i1, i2)
#endif
if (reload_completed
- ? ! rtx_renumbered_equal_p (p1, p2) : ! rtx_equal_p (p1, p2))
+ ? rtx_renumbered_equal_p (p1, p2) : rtx_equal_p (p1, p2))
+ return true;
+
+ /* Do not do EQUIV substitution after reload. First, we're undoing the
+ work of reload_cse. Second, we may be undoing the work of the post-
+ reload splitting pass. */
+ /* ??? Possibly add a new phase switch variable that can be used by
+ targets to disallow the troublesome insns after splitting. */
+ if (!reload_completed)
{
/* The following code helps take care of G++ cleanups. */
rtx equiv1 = find_reg_equal_equiv_note (i1);
@@ -994,11 +1002,9 @@ insns_match_p (mode, i1, i2)
return true;
}
}
-
- return false;
}
- return true;
+ return false;
}
/* Look through the insns at the end of BB1 and BB2 and find the longest