rtl.texi (jump_insn): Expand on JUMP_LABEL documentation.
authorMark Mitchell <mark@codesourcery.com>
Thu, 19 Apr 2001 19:44:43 +0000 (19:44 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Thu, 19 Apr 2001 19:44:43 +0000 (19:44 +0000)
* 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

gcc/ChangeLog
gcc/loop.c
gcc/rtl.texi

index 429a18445e0718d0dd0c6330c4497e1139c01dc8..cfd394e783ee13e14e8692ad42d2615d654ea212 100644 (file)
@@ -1,5 +1,8 @@
 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
 
+       * 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.
 
index 774801573e9c0de80dc1d0a92b1c210857b63f24..3e340af9a93549d0578689eb12303ba6c1607bba 100644 (file)
@@ -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))
index 665a40766c7e1909dcc3f84a9a641e6c08efb404..4e1dd218ff7506afca90314f76b76178165334c8 100644 (file)
@@ -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