]> gcc.gnu.org Git - gcc.git/commitdiff
reg-notes.def (CROSSING_JUMP): Likewise.
authorRichard Sandiford <rdsandiford@googlemail.com>
Mon, 19 May 2014 06:49:58 +0000 (06:49 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 19 May 2014 06:49:58 +0000 (06:49 +0000)
gcc/
* reg-notes.def (CROSSING_JUMP): Likewise.
* rtl.h (rtx_def): Update comment for jump flag.
(CROSSING_JUMP_P): Define.
* cfgcleanup.c (try_forward_edges, try_optimize_cfg): Use it instead
of a REG_CROSSING_JUMP note.
* cfghooks.c (tidy_fallthru_edges): Likewise.
* cfgrtl.c (fixup_partition_crossing, rtl_verify_edges): Likewise.
* emit-rtl.c (try_split): Likewise.
* haifa-sched.c (sched_create_recovery_edges): Likewise.
* ifcvt.c (find_if_case_1, find_if_case_2): Likewise.
* jump.c (redirect_jump_2): Likewise.
* reorg.c (follow_jumps, fill_slots_from_thread): Likewise.
(relax_delay_slots): Likewise.
* config/arc/arc.md (jump_i, cbranchsi4_scratch, *bbit): Likewise.
(bbit_di): Likewise.
* config/arc/arc.c (arc_reorg, arc_can_follow_jump): Likewise.
* config/sh/sh.md (jump_compact): Likewise.
* bb-reorder.c (rotate_loop): Likewise.
(pass_duplicate_computed_gotos::execute): Likewise.
(add_reg_crossing_jump_notes): Rename to...
(update_crossing_jump_flags): ...this.
(pass_partition_blocks::execute): Update accordingly.

From-SVN: r210603

15 files changed:
gcc/ChangeLog
gcc/bb-reorder.c
gcc/cfgcleanup.c
gcc/cfghooks.c
gcc/cfgrtl.c
gcc/config/arc/arc.c
gcc/config/arc/arc.md
gcc/config/sh/sh.md
gcc/emit-rtl.c
gcc/haifa-sched.c
gcc/ifcvt.c
gcc/jump.c
gcc/reg-notes.def
gcc/reorg.c
gcc/rtl.h

index 7a9996881ba092deeccc3ff5a66593d9f9bc6412..75ca1d293bd88d5da3629e76f96bc3fdc9245bfa 100644 (file)
@@ -1,3 +1,28 @@
+2014-05-19  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * reg-notes.def (CROSSING_JUMP): Likewise.
+       * rtl.h (rtx_def): Update comment for jump flag.
+       (CROSSING_JUMP_P): Define.
+       * cfgcleanup.c (try_forward_edges, try_optimize_cfg): Use it instead
+       of a REG_CROSSING_JUMP note.
+       * cfghooks.c (tidy_fallthru_edges): Likewise.
+       * cfgrtl.c (fixup_partition_crossing, rtl_verify_edges): Likewise.
+       * emit-rtl.c (try_split): Likewise.
+       * haifa-sched.c (sched_create_recovery_edges): Likewise.
+       * ifcvt.c (find_if_case_1, find_if_case_2): Likewise.
+       * jump.c (redirect_jump_2): Likewise.
+       * reorg.c (follow_jumps, fill_slots_from_thread): Likewise.
+       (relax_delay_slots): Likewise.
+       * config/arc/arc.md (jump_i, cbranchsi4_scratch, *bbit): Likewise.
+       (bbit_di): Likewise.
+       * config/arc/arc.c (arc_reorg, arc_can_follow_jump): Likewise.
+       * config/sh/sh.md (jump_compact): Likewise.
+       * bb-reorder.c (rotate_loop): Likewise.
+       (pass_duplicate_computed_gotos::execute): Likewise.
+       (add_reg_crossing_jump_notes): Rename to...
+       (update_crossing_jump_flags): ...this.
+       (pass_partition_blocks::execute): Update accordingly.
+
 2014-05-19  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * tree.h: Remove extraneous template <>.
index 9581c71dedcf79b64ce94ec3d34f693772ec6b4a..3d7fad5933940b57c64765a806e5b21ad566a58f 100644 (file)
@@ -425,8 +425,7 @@ rotate_loop (edge back_edge, struct trace *trace, int trace_n)
              /* Duplicate HEADER if it is a small block containing cond jump
                 in the end.  */
              if (any_condjump_p (BB_END (header)) && copy_bb_p (header, 0)
-                 && !find_reg_note (BB_END (header), REG_CROSSING_JUMP,
-                                    NULL_RTX))
+                 && !CROSSING_JUMP_P (BB_END (header)))
                copy_bb (header, single_succ_edge (prev_bb), prev_bb, trace_n);
            }
        }
@@ -2194,10 +2193,10 @@ fix_crossing_unconditional_branches (void)
     }
 }
 
-/* Add REG_CROSSING_JUMP note to all crossing jump insns.  */
+/* Update CROSSING_JUMP_P flags on all jump insns.  */
 
 static void
-add_reg_crossing_jump_notes (void)
+update_crossing_jump_flags (void)
 {
   basic_block bb;
   edge e;
@@ -2205,12 +2204,15 @@ add_reg_crossing_jump_notes (void)
 
   FOR_EACH_BB_FN (bb, cfun)
     FOR_EACH_EDGE (e, ei, bb->succs)
-      if ((e->flags & EDGE_CROSSING)
-         && JUMP_P (BB_END (e->src))
-          /* Some notes were added during fix_up_fall_thru_edges, via
-             force_nonfallthru_and_redirect.  */
-          && !find_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX))
-       add_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
+      if (e->flags & EDGE_CROSSING)
+       {
+         if (JUMP_P (BB_END (bb))
+             /* Some flags were added during fix_up_fall_thru_edges, via
+                force_nonfallthru_and_redirect.  */
+             && !CROSSING_JUMP_P (BB_END (bb)))
+           CROSSING_JUMP_P (BB_END (bb)) = 1;
+         break;
+       }
 }
 
 /* Reorder basic blocks.  The main entry point to this file.  FLAGS is
@@ -2454,7 +2456,7 @@ pass_duplicate_computed_gotos::execute (function *fun)
        continue;
 
       /* Only consider blocks that can be duplicated.  */
-      if (find_reg_note (BB_END (bb), REG_CROSSING_JUMP, NULL_RTX)
+      if (CROSSING_JUMP_P (BB_END (bb))
          || !can_duplicate_block_p (bb))
        continue;
 
@@ -2507,7 +2509,7 @@ pass_duplicate_computed_gotos::execute (function *fun)
 
       /* Don't duplicate a partition crossing edge, which requires difficult
          fixup.  */
-      if (find_reg_note (BB_END (bb), REG_CROSSING_JUMP, NULL_RTX))
+      if (JUMP_P (BB_END (bb)) && CROSSING_JUMP_P (BB_END (bb)))
        continue;
 
       new_bb = duplicate_block (single_succ (bb), single_succ_edge (bb), bb);
@@ -2710,7 +2712,7 @@ pass_partition_blocks::execute (function *fun)
   if (!HAS_LONG_UNCOND_BRANCH)
     fix_crossing_unconditional_branches ();
 
-  add_reg_crossing_jump_notes ();
+  update_crossing_jump_flags ();
 
   /* Clear bb->aux fields that the above routines were using.  */
   clear_aux_for_blocks ();
index 291217630f4b56fa0c1c78bfdcd40a0cfa3a3e31..7c24a6d7dde196a41f4a6b3f8cc95c5e49bac312 100644 (file)
@@ -419,7 +419,7 @@ try_forward_edges (int mode, basic_block b)
      partition boundaries).  See the comments at the top of
      bb-reorder.c:partition_hot_cold_basic_blocks for complete details.  */
 
-  if (find_reg_note (BB_END (b), REG_CROSSING_JUMP, NULL_RTX))
+  if (JUMP_P (BB_END (b)) && CROSSING_JUMP_P (BB_END (b)))
     return false;
 
   for (ei = ei_start (b->succs); (e = ei_safe_edge (ei)); )
@@ -457,7 +457,8 @@ try_forward_edges (int mode, basic_block b)
         details.  */
 
       if (first != EXIT_BLOCK_PTR_FOR_FN (cfun)
-         && find_reg_note (BB_END (first), REG_CROSSING_JUMP, NULL_RTX))
+         && JUMP_P (BB_END (first))
+         && CROSSING_JUMP_P (BB_END (first)))
        return changed;
 
       while (counter < n_basic_blocks_for_fn (cfun))
@@ -2797,7 +2798,7 @@ try_optimize_cfg (int mode)
              if (single_succ_p (b)
                  && single_succ (b) != EXIT_BLOCK_PTR_FOR_FN (cfun)
                  && onlyjump_p (BB_END (b))
-                 && !find_reg_note (BB_END (b), REG_CROSSING_JUMP, NULL_RTX)
+                 && !CROSSING_JUMP_P (BB_END (b))
                  && try_redirect_by_replacing_jump (single_succ_edge (b),
                                                     single_succ (b),
                                                     (mode & CLEANUP_CFGLAYOUT) != 0))
index 66313df85acc349a641572af9770fdc64e41b83b..04053a5d73d52fd756165b1a76357e518858af52 100644 (file)
@@ -965,7 +965,7 @@ tidy_fallthru_edges (void)
          s = single_succ_edge (b);
          if (! (s->flags & EDGE_COMPLEX)
              && s->dest == c
-             && !find_reg_note (BB_END (b), REG_CROSSING_JUMP, NULL_RTX))
+             && !(JUMP_P (BB_END (b)) && CROSSING_JUMP_P (BB_END (b))))
            tidy_fallthru_edge (s);
        }
     }
index 51dbb9e3d22db2ff9677bbf8478f66023c15ea3b..eb25e89ccf3a983b74cb4b5eba9f0ace2873a164 100644 (file)
@@ -1325,8 +1325,6 @@ redirect_branch_edge (edge e, basic_block target)
 static void
 fixup_partition_crossing (edge e)
 {
-  rtx note;
-
   if (e->src == ENTRY_BLOCK_PTR_FOR_FN (cfun) || e->dest
       == EXIT_BLOCK_PTR_FOR_FN (cfun))
     return;
@@ -1337,10 +1335,9 @@ fixup_partition_crossing (edge e)
   if (BB_PARTITION (e->src) != BB_PARTITION (e->dest))
     {
       e->flags |= EDGE_CROSSING;
-      note = find_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
       if (JUMP_P (BB_END (e->src))
-          && !note)
-        add_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
+         && !CROSSING_JUMP_P (BB_END (e->src)))
+       CROSSING_JUMP_P (BB_END (e->src)) = 1;
     }
   else if (BB_PARTITION (e->src) == BB_PARTITION (e->dest))
     {
@@ -1348,8 +1345,7 @@ fixup_partition_crossing (edge e)
       /* Remove the section crossing note from jump at end of
          src if it exists, and if no other successors are
          still crossing.  */
-      note = find_reg_note (BB_END (e->src), REG_CROSSING_JUMP, NULL_RTX);
-      if (note)
+      if (JUMP_P (BB_END (e->src)) && CROSSING_JUMP_P (BB_END (e->src)))
         {
           bool has_crossing_succ = false;
           edge e2;
@@ -1361,7 +1357,7 @@ fixup_partition_crossing (edge e)
                 break;
             }
           if (!has_crossing_succ)
-            remove_note (BB_END (e->src), note);
+           CROSSING_JUMP_P (BB_END (e->src)) = 0;
         }
     }
 }
@@ -2460,8 +2456,7 @@ rtl_verify_edges (void)
                         e->src->index);
                  err = 1;
                }
-              if (JUMP_P (BB_END (bb))
-                  && !find_reg_note (BB_END (bb), REG_CROSSING_JUMP, NULL_RTX))
+              if (JUMP_P (BB_END (bb)) && !CROSSING_JUMP_P (BB_END (bb)))
                {
                  error ("No region crossing jump at section boundary in bb %i",
                         bb->index);
@@ -2496,7 +2491,8 @@ rtl_verify_edges (void)
        }
 
         if (!has_crossing_edge
-            && find_reg_note (BB_END (bb), REG_CROSSING_JUMP, NULL_RTX))
+           && JUMP_P (BB_END (bb))
+           && CROSSING_JUMP_P (BB_END (bb)))
           {
             print_rtl_with_bb (stderr, get_insns (), TDF_RTL | TDF_BLOCKS | TDF_DETAILS);
             error ("Region crossing jump across same section in bb %i",
index a9161b30a710e62334931044508d667285115bac..3b3e82080e69b1acdfb99bf9f5de8bcc4e69d026 100644 (file)
@@ -6051,7 +6051,7 @@ arc_reorg (void)
            continue;
 
          /* Now check if the jump is beyond the s9 range.  */
-         if (find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX))
+         if (CROSSING_JUMP_P (insn))
            continue;
          offset = branch_dest (insn) - INSN_ADDRESSES (INSN_UID (insn));
 
@@ -9206,7 +9206,7 @@ arc_decl_pretend_args (tree decl)
 
 /* Without this, gcc.dg/tree-prof/bb-reorg.c fails to assemble
   when compiling with -O2 -freorder-blocks-and-partition -fprofile-use
-  -D_PROFILE_USE; delay branch scheduling then follows a REG_CROSSING_JUMP
+  -D_PROFILE_USE; delay branch scheduling then follows a crossing jump
   to redirect two breqs.  */
 
 static bool
@@ -9216,7 +9216,7 @@ arc_can_follow_jump (const_rtx follower, const_rtx followee)
   union { const_rtx c; rtx r; } u;
 
   u.c = follower;
-  if (find_reg_note (followee, REG_CROSSING_JUMP, NULL_RTX))
+  if (CROSSING_JUMP_P (followee))
     switch (get_attr_type (u.r))
       {
       case TYPE_BRCC:
index 80f6e338a1092d84d519996300b6e8ff100bd821..72ba470e6eac33281c68c2ebee65155b8772e53d 100644 (file)
 
 (define_insn "jump_i"
   [(set (pc) (label_ref (match_operand 0 "" "")))]
-  "!TARGET_LONG_CALLS_SET || !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
+  "!TARGET_LONG_CALLS_SET || !CROSSING_JUMP_P (insn)"
   "b%!%* %^%l0%&"
   [(set_attr "type" "uncond_branch")
    (set (attr "iscompact")
          (eq_attr "delay_slot_filled" "yes")
          (const_int 4)
 
-         (match_test "find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)")
+         (match_test "CROSSING_JUMP_P (insn)")
          (const_int 4)
 
          (ior (lt (minus (match_dup 0) (pc)) (const_int -512))
    "(reload_completed
      || (TARGET_EARLY_CBRANCHSI
         && brcc_nolimm_operator (operands[0], VOIDmode)))
-    && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
+    && !CROSSING_JUMP_P (insn)"
    "*
      switch (get_attr_length (insn))
      {
          (label_ref (match_operand 0 "" ""))
          (pc)))
    (clobber (reg:CC_ZN CC_REG))]
-  "!find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
+  "!CROSSING_JUMP_P (insn)"
 {
   switch (get_attr_length (insn))
     {
          (label_ref (match_operand 0 "" ""))
          (pc)))
    (clobber (reg:CC_ZN CC_REG))]
-  "!find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
+  "!CROSSING_JUMP_P (insn)"
   "#"
   ""
   [(parallel
index 609645b4f44dfc7a48f829bb8a193322a1363716..f77f572d0e5fd4e02631cece2ee3c4c98db946ac 100644 (file)
@@ -8804,7 +8804,7 @@ label:
 (define_insn "jump_compact"
   [(set (pc)
        (label_ref (match_operand 0 "" "")))]
-  "TARGET_SH1 && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
+  "TARGET_SH1 && !CROSSING_JUMP_P (insn)"
 {
   /* The length is 16 if the delay slot is unfilled.  */
   if (get_attr_length(insn) > 4)
index 9282a29520b4c16ba18f9f27a90d2ab19bddc4fb..1d74c3fded725b33b5260cf73c39b6d8396ec9d6 100644 (file)
@@ -3590,11 +3590,13 @@ try_split (rtx pat, rtx trial, int last)
      may have introduced invalid RTL sharing, so unshare the sequence now.  */
   unshare_all_rtl_in_chain (seq);
 
-  /* Mark labels.  */
+  /* Mark labels and copy flags.  */
   for (insn = insn_last; insn ; insn = PREV_INSN (insn))
     {
       if (JUMP_P (insn))
        {
+         if (JUMP_P (trial))
+           CROSSING_JUMP_P (insn) = CROSSING_JUMP_P (trial);
          mark_jump_label (PATTERN (insn), insn, 0);
          njumps++;
          if (probability != -1
@@ -3671,7 +3673,6 @@ try_split (rtx pat, rtx trial, int last)
          break;
 
        case REG_NON_LOCAL_GOTO:
-       case REG_CROSSING_JUMP:
          for (insn = insn_last; insn != NULL_RTX; insn = PREV_INSN (insn))
            {
              if (JUMP_P (insn))
index 5d16b4d0f9429bd0f7c5c93179447663053d8165..149071ec94cf32be5c0ee76ce6b8ddc6990d1997 100644 (file)
@@ -7653,7 +7653,7 @@ sched_create_recovery_edges (basic_block first_bb, basic_block rec,
        {
          /* We don't need the same note for the check because
             any_condjump_p (check) == true.  */
-         add_reg_note (jump, REG_CROSSING_JUMP, NULL_RTX);
+         CROSSING_JUMP_P (jump) = 1;
        }
       edge_flags = EDGE_CROSSING;
     }
index cd2b5dcda03c670d224eb510b25e3d040f96f776..2ca2278709dc739cdb29fff91e9e07ac58358c24 100644 (file)
@@ -3877,12 +3877,14 @@ find_if_case_1 (basic_block test_bb, edge then_edge, edge else_edge)
      bb-reorder.c:partition_hot_cold_basic_blocks for complete details.  */
 
   if ((BB_END (then_bb)
-       && find_reg_note (BB_END (then_bb), REG_CROSSING_JUMP, NULL_RTX))
+       && JUMP_P (BB_END (then_bb))
+       && CROSSING_JUMP_P (BB_END (then_bb)))
       || (BB_END (test_bb)
-         && find_reg_note (BB_END (test_bb), REG_CROSSING_JUMP, NULL_RTX))
+         && JUMP_P (BB_END (test_bb))
+         && CROSSING_JUMP_P (BB_END (test_bb)))
       || (BB_END (else_bb)
-         && find_reg_note (BB_END (else_bb), REG_CROSSING_JUMP,
-                           NULL_RTX)))
+         && JUMP_P (BB_END (else_bb))
+         && CROSSING_JUMP_P (BB_END (else_bb))))
     return FALSE;
 
   /* THEN has one successor.  */
@@ -4000,12 +4002,14 @@ find_if_case_2 (basic_block test_bb, edge then_edge, edge else_edge)
      bb-reorder.c:partition_hot_cold_basic_blocks for complete details.  */
 
   if ((BB_END (then_bb)
-       && find_reg_note (BB_END (then_bb), REG_CROSSING_JUMP, NULL_RTX))
+       && JUMP_P (BB_END (then_bb))
+       && CROSSING_JUMP_P (BB_END (then_bb)))
       || (BB_END (test_bb)
-         && find_reg_note (BB_END (test_bb), REG_CROSSING_JUMP, NULL_RTX))
+         && JUMP_P (BB_END (test_bb))
+         && CROSSING_JUMP_P (BB_END (test_bb)))
       || (BB_END (else_bb)
-         && find_reg_note (BB_END (else_bb), REG_CROSSING_JUMP,
-                           NULL_RTX)))
+         && JUMP_P (BB_END (else_bb))
+         && CROSSING_JUMP_P (BB_END (else_bb))))
     return FALSE;
 
   /* ELSE has one successor.  */
index cdea8d5b885f98b788c0a518279bb09f640a0bc0..9418f6529fa23aa8f5e67fc210b703c5095ccb0a 100644 (file)
@@ -1590,11 +1590,7 @@ redirect_jump_2 (rtx jump, rtx olabel, rtx nlabel, int delete_unused,
      label and are now changing it into a direct conditional return.
      The jump is no longer crossing in that case.  */
   if (ANY_RETURN_P (nlabel))
-    {
-      note = find_reg_note (jump, REG_CROSSING_JUMP, NULL_RTX);
-      if (note)
-       remove_note (jump, note);
-    }
+    CROSSING_JUMP_P (jump) = 0;
 
   if (!ANY_RETURN_P (olabel)
       && --LABEL_NUSES (olabel) == 0 && delete_unused > 0
index 831fe82272aa2b4dfd91d7c28fadf6ba60e33a29..3146ba001bdb8d578c415871f441959aca82ac3f 100644 (file)
@@ -188,11 +188,6 @@ REG_NOTE (NORETURN)
    computed goto.  */
 REG_NOTE (NON_LOCAL_GOTO)
 
-/* Indicates that a jump crosses between hot and cold sections in a
-   (partitioned) assembly or .o file, and therefore should not be
-   reduced to a simpler jump by optimizations.  */
-REG_NOTE (CROSSING_JUMP)
-
 /* This kind of note is generated at each to `setjmp', and similar
    functions that can return twice.  */
 REG_NOTE (SETJMP)
index 95e942f3eaf1eaea1ba6f9a88133b5c364714274..e4b6d45176c4316a78d89f4c20cbcac1e32f61e1 100644 (file)
@@ -2289,8 +2289,8 @@ fill_simple_delay_slots (int non_jumps_p)
    If LABEL is not followed by a jump, return LABEL.
    If the chain loops or we can't find end, return LABEL,
    since that tells caller to avoid changing the insn.
-   If the returned label is obtained by following a REG_CROSSING_JUMP
-   jump, set *CROSSING to true, otherwise set it to false.  */
+   If the returned label is obtained by following a crossing jump,
+   set *CROSSING to true, otherwise set it to false.  */
 
 static rtx
 follow_jumps (rtx label, rtx jump, bool *crossing)
@@ -2330,8 +2330,7 @@ follow_jumps (rtx label, rtx jump, bool *crossing)
       if (!targetm.can_follow_jump (jump, insn))
        break;
       if (!*crossing)
-       *crossing
-         = find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX) != NULL_RTX;
+       *crossing = CROSSING_JUMP_P (jump);
       value = this_label;
     }
   if (depth == 10)
@@ -2800,7 +2799,7 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
        {
          reorg_redirect_jump (insn, label);
          if (crossing)
-           set_unique_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX);
+           CROSSING_JUMP_P (insn) = 1;
        }
     }
 
@@ -3175,7 +3174,7 @@ relax_delay_slots (rtx first)
            {
              reorg_redirect_jump (insn, target_label);
              if (crossing)
-               set_unique_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX);
+               CROSSING_JUMP_P (insn) = 1;
            }
 
          /* See if this jump conditionally branches around an unconditional
@@ -3320,7 +3319,7 @@ relax_delay_slots (rtx first)
          reorg_redirect_jump (delay_insn, trial);
          target_label = trial;
          if (crossing)
-           set_unique_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX);
+           CROSSING_JUMP_P (insn) = 1;
        }
 
       /* If the first insn at TARGET_LABEL is redundant with a previous
index d9460a097665037d1a562c0e845504d22e4a52f8..10ae1e9cee5876bbbac4c38b57bae35e7da67edf 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -276,6 +276,7 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"),
 
   /* 1 in a MEM if we should keep the alias set for this mem unchanged
      when we access a component.
+     1 in a JUMP_INSN if it is a crossing jump.
      1 in a CALL_INSN if it is a sibling call.
      1 in a SET that is for a return.
      In a CODE_LABEL, part of the two-bit alternate entry field.
@@ -942,6 +943,10 @@ extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
 #define INSN_DELETED_P(RTX)                                            \
   (RTL_INSN_CHAIN_FLAG_CHECK ("INSN_DELETED_P", (RTX))->volatil)
 
+/* 1 if JUMP RTX is a crossing jump.  */
+#define CROSSING_JUMP_P(RTX) \
+  (RTL_FLAG_CHECK1 ("CROSSING_JUMP_P", (RTX), JUMP_INSN)->jump)
+
 /* 1 if RTX is a call to a const function.  Built from ECF_CONST and
    TREE_READONLY.  */
 #define RTL_CONST_CALL_P(RTX)                                  \
This page took 0.097198 seconds and 5 git commands to generate.