aboutsummaryrefslogtreecommitdiff
path: root/gcc/integrate.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2000-07-07 22:06:57 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2000-07-07 22:06:57 +0200
commitca81c149d418bc349ee6749fe1cfa7ec005c5a1f (patch)
treec2e4867c5960cbe07481426cf9f690ecabfa41d1 /gcc/integrate.c
parentf5afd9e924c198f8a01a92bb40ff48be87525ab1 (diff)
downloadgcc-ca81c149d418bc349ee6749fe1cfa7ec005c5a1f.zip
gcc-ca81c149d418bc349ee6749fe1cfa7ec005c5a1f.tar.gz
gcc-ca81c149d418bc349ee6749fe1cfa7ec005c5a1f.tar.bz2
integrate.c (copy_insn_list): Remove REG_LABEL notes.
* integrate.c (copy_insn_list): Remove REG_LABEL notes. * gcc.dg/20000707-1.c: New test. From-SVN: r34907
Diffstat (limited to 'gcc/integrate.c')
-rw-r--r--gcc/integrate.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index eba94c1..93ed6d4 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1581,13 +1581,21 @@ copy_insn_list (insns, map, static_chain_value)
&& map->insn_map[INSN_UID (insn)]
&& REG_NOTES (insn))
{
- rtx tem = copy_rtx_and_substitute (REG_NOTES (insn), map, 0);
+ rtx next, note = copy_rtx_and_substitute (REG_NOTES (insn), map, 0);
/* We must also do subst_constants, in case one of our parameters
has const type and constant value. */
- subst_constants (&tem, NULL_RTX, map, 0);
+ subst_constants (&note, NULL_RTX, map, 0);
apply_change_group ();
- REG_NOTES (map->insn_map[INSN_UID (insn)]) = tem;
+ REG_NOTES (map->insn_map[INSN_UID (insn)]) = note;
+
+ /* Finally, delete any REG_LABEL notes from the chain. */
+ for (; note; note = next)
+ {
+ next = XEXP (note, 1);
+ if (REG_NOTE_KIND (note) == REG_LABEL)
+ remove_note (map->insn_map[INSN_UID (insn)], note);
+ }
}
if (local_return_label)