diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-23 01:40:04 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-23 01:40:04 +0000 |
commit | fb812fedf8f512722367dda6d8eaaabf984116df (patch) | |
tree | a74d627ef14953efdc3431beb769188b0728e42b /gcc/cfgcleanup.c | |
parent | 5994c992cc75abb67085190a7fa7848604ea67aa (diff) | |
download | gcc-fb812fedf8f512722367dda6d8eaaabf984116df.tar.gz |
* cfgcleanup.c (insns_match_p): Do not do EQUIV substitution
after reload.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64738 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r-- | gcc/cfgcleanup.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 76aebc47034..42dc0a9e4c5 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 |