From d3ff0f753948e4e595c6cf3d77ac1b05c655b464 Mon Sep 17 00:00:00 2001 From: aoliva Date: Sun, 7 Jan 2001 02:26:51 +0000 Subject: * reload.c (subst_reloads): Take INSN argument. When replacing a LABEL_REF in a JUMP_INSN, add a REG_LABEL note. * reload.h (subst_reloads): Adjust prototype. * reload1.c (reload_as_needed): Pass INSN to subst_reloads. * jump.c (mark_all_labels): Canonicalize any REG_LABEL notes present in JUMP_INSNs and copy them to JUMP_LABEL. * flow.c (find_label_refs, find_basic_blocks_1): Skip JUMP_INSNs and insns with REG_LABELs that are followed by JUMP_INSNs with the same REG_LABEL. * sched-rgn.c (is_cfg_nonregular): Likewise. * rtlanal.c (computed_jump_p): Make it false if a REG_LABEL note is available. * unroll.c (unroll_loop): Look for REG_LABEL notes in JUMP_INSNs too. * rtl.texi (REG_LABEL): Document usage in JUMP_INSNs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38755 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/sched-rgn.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'gcc/sched-rgn.c') diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index db4cc877b36..c1c215a1ea9 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -1,6 +1,6 @@ /* Instruction scheduling pass. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000 Free Software Foundation, Inc. + 1999, 2000, 2001 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) @@ -349,13 +349,16 @@ is_cfg_nonregular () for (insn = BLOCK_HEAD (b);; insn = NEXT_INSN (insn)) { code = GET_CODE (insn); - if (GET_RTX_CLASS (code) == 'i') + if (GET_RTX_CLASS (code) == 'i' && code != JUMP_INSN) { - rtx note; - - for (note = REG_NOTES (insn); note; note = XEXP (note, 1)) - if (REG_NOTE_KIND (note) == REG_LABEL) - return 1; + rtx note = find_reg_note (REG_NOTES (insn), REG_LABEL, NULL_RTX); + + if (note + && ! (GET_CODE (NEXT_INSN (insn)) == JUMP_INSN + && find_reg_note (REG_NOTES (NEXT_INSN (insn)), + REG_LABEL, + XEXP (note, 0)))) + return 1; } if (insn == BLOCK_END (b)) -- cgit v1.2.1