From: Mark Mitchell Date: Thu, 19 Apr 2001 19:44:43 +0000 (+0000) Subject: rtl.texi (jump_insn): Expand on JUMP_LABEL documentation. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=13c502cdd58e3f48a479d82bc84a1a559009ff14;p=gcc.git rtl.texi (jump_insn): Expand on JUMP_LABEL documentation. * rtl.texi (jump_insn): Expand on JUMP_LABEL documentation. * loop.c (load_mems): Handle a NULL JUMP_LABEL for a JUMP_INSN. From-SVN: r41424 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 429a18445e0..cfd394e783e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2001-04-19 Mark Mitchell + * rtl.texi (jump_insn): Expand on JUMP_LABEL documentation. + * loop.c (load_mems): Handle a NULL JUMP_LABEL for a JUMP_INSN. + * mips.md (reload_outputdi): Require that operand0 be a general_operand. diff --git a/gcc/loop.c b/gcc/loop.c index 774801573e9..3e340af9a93 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -8850,10 +8850,13 @@ load_mems (loop) /* If this is a jump outside of the loop but not right after the end of the loop, we would have to emit new fixup sequences for each such label. */ - if (JUMP_LABEL (p) != end_label - && (INSN_UID (JUMP_LABEL (p)) >= max_uid_for_loop - || INSN_LUID (JUMP_LABEL (p)) < INSN_LUID (loop->start) - || INSN_LUID (JUMP_LABEL (p)) > INSN_LUID (loop->end))) + if (/* If we can't tell where control might go when this + JUMP_INSN is executed, we must be conservative. */ + !JUMP_LABEL (p) + || (JUMP_LABEL (p) != end_label + && (INSN_UID (JUMP_LABEL (p)) >= max_uid_for_loop + || INSN_LUID (JUMP_LABEL (p)) < INSN_LUID (loop->start) + || INSN_LUID (JUMP_LABEL (p)) > INSN_LUID (loop->end)))) return; if (!any_condjump_p (p)) diff --git a/gcc/rtl.texi b/gcc/rtl.texi index 665a40766c7..4e1dd218ff7 100644 --- a/gcc/rtl.texi +++ b/gcc/rtl.texi @@ -2501,14 +2501,15 @@ recorded as a @code{jump_insn}. accessed in the same way and in addition contain a field @code{JUMP_LABEL} which is defined once jump optimization has completed. -For simple conditional and unconditional jumps, this field contains the -@code{code_label} to which this insn will (possibly conditionally) +For simple conditional and unconditional jumps, this field contains +the @code{code_label} to which this insn will (possibly conditionally) branch. In a more complex jump, @code{JUMP_LABEL} records one of the -labels that the insn refers to; the only way to find the others -is to scan the entire body of the insn. +labels that the insn refers to; the only way to find the others is to +scan the entire body of the insn. In an @code{addr_vec}, +@code{JUMP_LABEL} is @code{NULL_RTX}. -Return insns count as jumps, but since they do not refer to any labels, -they have zero in the @code{JUMP_LABEL} field. +Return insns count as jumps, but since they do not refer to any +labels, their @code{JUMP_LABEL} is @code{NULL_RTX}. @findex call_insn @item call_insn