From 3ce6bef0f97391a518fe5a7be4a65bb1ed103182 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 22 Mar 2003 17:40:04 -0800 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/cfgcleanup.c | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 791e5b9e51d9..cf3c258ce61a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-03-22 Richard Henderson + + * cfgcleanup.c (insns_match_p): Do not do EQUIV substitution + after reload. + 2003-03-22 DJ Delorie , Bruce Korb diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 76aebc470344..42dc0a9e4c5f 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