* rtl.texi (jump_insn): Expand on JUMP_LABEL documentation.
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Apr 2001 19:44:43 +0000 (19:44 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Apr 2001 19:44:43 +0000 (19:44 +0000)
* loop.c (load_mems): Handle a NULL JUMP_LABEL for a JUMP_INSN.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41424 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 429a184..cfd394e 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 7748015..3e340af 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 665a407..4e1dd21 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