https://gcc.gnu.org/g:40b414ce63a5448495df9161aea0bfb495b47c11

commit r17-5242-g40b414ce63a5448495df9161aea0bfb495b47c11
Author: Trevor Saunders <[email protected]>
Date:   Wed Oct 14 14:22:45 2026 +0200

    use label_ref_label more
    
    gcc/ChangeLog:
    
            * cfgbuild.cc (make_edges): Read labels with label_ref_label.
            (mark_tablejump_edge): Take an rtx_insn *.
            (purge_dead_tablejump_edges): Read labels with label_ref_label.
            * cprop.cc (bypass_block): Likewise.

Diff:
---
 gcc/cfgbuild.cc | 9 +++++----
 gcc/cprop.cc    | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/gcc/cfgbuild.cc b/gcc/cfgbuild.cc
index deb6c87e49b5..ddc2eb6b647d 100644
--- a/gcc/cfgbuild.cc
+++ b/gcc/cfgbuild.cc
@@ -265,7 +265,7 @@ make_edges (basic_block min, basic_block max, int update_p)
 
              for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j)
                make_label_edge (edge_cache, bb,
-                                XEXP (RTVEC_ELT (vec, j), 0), 0);
+                                label_ref_label (RTVEC_ELT (vec, j)), 0);
 
              /* Some targets (eg, ARM) emit a conditional jump that also
                 contains the out-of-range target.  Scan for these and
@@ -298,7 +298,8 @@ make_edges (basic_block min, basic_block max, int update_p)
              int i, n = ASM_OPERANDS_LABEL_LENGTH (tmp);
              for (i = 0; i < n; ++i)
                make_label_edge (edge_cache, bb,
-                                XEXP (ASM_OPERANDS_LABEL (tmp, i), 0), 0);
+                                label_ref_label (ASM_OPERANDS_LABEL (tmp, i)),
+                                0);
            }
 
          /* Otherwise, we have a plain conditional or unconditional jump.  */
@@ -381,7 +382,7 @@ make_edges (basic_block min, basic_block max, int update_p)
 }
 
 static void
-mark_tablejump_edge (rtx label)
+mark_tablejump_edge (rtx_insn *label)
 {
   basic_block bb;
 
@@ -406,7 +407,7 @@ purge_dead_tablejump_edges (basic_block bb, 
rtx_jump_table_data *table)
   vec = table->get_labels ();
 
   for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j)
-    mark_tablejump_edge (XEXP (RTVEC_ELT (vec, j), 0));
+    mark_tablejump_edge (label_ref_label (RTVEC_ELT (vec, j)));
 
   /* Some targets (eg, ARM) emit a conditional jump that also
      contains the out-of-range target.  Scan for these and
diff --git a/gcc/cprop.cc b/gcc/cprop.cc
index 8dc30c7537b5..d5ba8b1ba09c 100644
--- a/gcc/cprop.cc
+++ b/gcc/cprop.cc
@@ -1702,7 +1702,7 @@ bypass_block (basic_block bb, rtx_insn *setcc, rtx_insn 
*jump)
            }
          else if (GET_CODE (new_rtx) == LABEL_REF)
            {
-             dest = BLOCK_FOR_INSN (XEXP (new_rtx, 0));
+             dest = BLOCK_FOR_INSN (label_ref_label (new_rtx));
              /* Don't bypass edges containing instructions.  */
              if (dest)
                {

Reply via email to