aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-04-11 09:24:02 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-04-11 09:24:02 -0400
commitc8cfe1f62b3678d548e6003f0d077aedb640b339 (patch)
tree2b551da989644d262baf0812d23613e4ea06bdb7 /gcc
parentcbcf989d7f0543b2c391268bd625b6624c198608 (diff)
downloadgcc-c8cfe1f62b3678d548e6003f0d077aedb640b339.zip
gcc-c8cfe1f62b3678d548e6003f0d077aedb640b339.tar.gz
gcc-c8cfe1f62b3678d548e6003f0d077aedb640b339.tar.bz2
(add_to_delay_list): Clear any cached block information for INSN.
From-SVN: r4084
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reorg.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 83bbdda..47526fc 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -879,9 +879,24 @@ add_to_delay_list (insn, delay_list)
rtx insn;
rtx delay_list;
{
- /* If we have an empty list, just make a new list element. */
+ /* If we have an empty list, just make a new list element. If
+ INSN has it's block number recorded, clear it since we may
+ be moving the insn to a new block. */
+
if (delay_list == 0)
- return gen_rtx (INSN_LIST, VOIDmode, insn, NULL_RTX);
+ {
+ struct target_info *tinfo;
+
+ for (tinfo = target_hash_table[INSN_UID (insn) % TARGET_HASH_PRIME];
+ tinfo; tinfo = tinfo->next)
+ if (tinfo->uid == INSN_UID (insn))
+ break;
+
+ if (tinfo)
+ tinfo->block = -1;
+
+ return gen_rtx (INSN_LIST, VOIDmode, insn, NULL_RTX);
+ }
/* Otherwise this must be an INSN_LIST. Add INSN to the end of the
list. */