* jump.c (mark_jump_label): Fix thinko in 2001-05-19 change.
authorMark Mitchell <mark@codesourcery.com>
Wed, 23 May 2001 07:56:45 +0000 (07:56 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 23 May 2001 07:56:45 +0000 (07:56 +0000)
From-SVN: r42491

gcc/ChangeLog
gcc/jump.c

index 98aa47afcbe15cc9e09c6493715592830bbf168e..0bb7521f65badde412fcd09f9c4fb4c3121bd17c 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * jump.c (mark_jump_label): Fix thinko in 2001-05-19 change.
+
 2001-05-23  Richard Henderson  <rth@redhat.com>
 
        * function.c (expand_function_start): Always use a pseudo
index 8f9c6b45a3681402de696433d595b9e4be4c375e..5d5c6d6e796dc6bdb7e02e9101cac2275d508c76 100644 (file)
@@ -2542,47 +2542,36 @@ mark_jump_label (x, insn, cross_jump, in_mem)
          {
            if (GET_CODE (insn) == JUMP_INSN)
              JUMP_LABEL (insn) = label;
-
-           /* If we've changed the label, update notes accordingly.  */
-           else if (label != olabel)
+           else
              {
-               rtx note;
-
-               /* We may have a REG_LABEL note to indicate that this
-                  instruction uses the label.  */
-               note = find_reg_note (insn, REG_LABEL, olabel);
-               if (note)
-                 XEXP (note, 0) = label;
-
-               /* We may also have a REG_EQUAL note to indicate that
-                  a register is being set to the address of the
-                  label.  */
-               note = find_reg_note (insn, REG_EQUAL, NULL_RTX);
-               if (note 
-                   && GET_CODE (XEXP (note, 0)) == LABEL_REF
-                   && XEXP (XEXP (note, 0), 0) == olabel)
-                 XEXP (XEXP (note, 0), 0) = label;
-             }
+               /* If we've changed the label, update notes accordingly.  */
+               if (label != olabel)
+                 {
+                   rtx note;
+
+                   /* We may have a REG_LABEL note to indicate that this
+                      instruction uses the label.  */
+                   note = find_reg_note (insn, REG_LABEL, olabel);
+                   if (note)
+                     XEXP (note, 0) = label;
+
+                   /* We may also have a REG_EQUAL note to indicate that
+                      a register is being set to the address of the
+                      label.  */
+                   note = find_reg_note (insn, REG_EQUAL, NULL_RTX);
+                   if (note 
+                       && GET_CODE (XEXP (note, 0)) == LABEL_REF
+                       && XEXP (XEXP (note, 0), 0) == olabel)
+                     XEXP (XEXP (note, 0), 0) = label;
+                 }
 
-           /* Otherwise, add a REG_LABEL note for LABEL unless there already
-              is one.  */
-           else if (! find_reg_note (insn, REG_LABEL, label))
-             {
-               /* This code used to ignore labels which refered to dispatch
-                  tables to avoid flow.c generating worse code.
-
-                  However, in the presense of global optimizations like
-                  gcse which call find_basic_blocks without calling
-                  life_analysis, not recording such labels will lead
-                  to compiler aborts because of inconsistencies in the
-                  flow graph.  So we go ahead and record the label.
-
-                  It may also be the case that the optimization argument
-                  is no longer valid because of the more accurate cfg
-                  we build in find_basic_blocks -- it no longer pessimizes
-                  code when it finds a REG_LABEL note.  */
-               REG_NOTES (insn) = gen_rtx_INSN_LIST (REG_LABEL, label,
-                                                     REG_NOTES (insn));
+               /* Add a REG_LABEL note for LABEL unless there already
+                  is one.  All uses of a label, except for labels
+                  that are the targets of jumps, must have a
+                  REG_LABEL note.  */
+               if (! find_reg_note (insn, REG_LABEL, label))
+                 REG_NOTES (insn) = gen_rtx_INSN_LIST (REG_LABEL, label,
+                                                       REG_NOTES (insn));
              }
          }
        return;