diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-04-11 09:24:02 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-04-11 09:24:02 -0400 |
commit | c8cfe1f62b3678d548e6003f0d077aedb640b339 (patch) | |
tree | 2b551da989644d262baf0812d23613e4ea06bdb7 /gcc | |
parent | cbcf989d7f0543b2c391268bd625b6624c198608 (diff) | |
download | gcc-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.c | 19 |
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. */ |