From ca81c149d418bc349ee6749fe1cfa7ec005c5a1f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 7 Jul 2000 22:06:57 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/integrate.c | 14 +++++++++++--- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/20000707-1.c | 16 ++++++++++++++++ 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/20000707-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 41df73bce62..b9261b3b73a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2000-07-07 Jakub Jelinek + + * integrate.c (copy_insn_list): Remove REG_LABEL notes. + 2000-07-07 Jakub Jelinek * sibcall.c (uses_addressof): Add INMEM argument, check for diff --git a/gcc/integrate.c b/gcc/integrate.c index eba94c10758..93ed6d43c7d 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 (¬e, 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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e50a96c720a..096cea1e456 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-07-07 Jakub Jelinek + + * gcc.dg/20000707-1.c: New test. + 2000-07-07 Jakub Jelinek * gcc.c-torture/execute/20000706-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/20000707-1.c b/gcc/testsuite/gcc.dg/20000707-1.c new file mode 100644 index 00000000000..5328dfa63d9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20000707-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wall" } */ + +extern void foo(void *here); +extern inline void bar(void) +{ + __label__ here; + foo(&&here); +here: + ; +} + +void baz(void) +{ + bar(); +} -- 2.30.2