https://gcc.gnu.org/g:6cc3cdddeb362b827b5d1f97a21291623cb1bd3a

commit r16-1978-g6cc3cdddeb362b827b5d1f97a21291623cb1bd3a
Author: Karl Meakin <karl.mea...@arm.com>
Date:   Thu Jul 3 12:48:30 2025 +0100

    AArch64: make `far_branch` attribute a boolean
    
    The `far_branch` attribute only ever takes the values 0 or 1, so make it
    a `no/yes` valued string attribute instead.
    
    gcc/ChangeLog:
    
            * config/aarch64/aarch64.md (far_branch): Replace 0/1 with
            no/yes.
            (aarch64_bcond): Handle rename.
            (aarch64_cbz<optab><mode>1): Likewise.
            (*aarch64_tbz<optab><mode>1): Likewise.
            (@aarch64_tbz<optab><ALLI:mode><GPI:mode>): Likewise.

Diff:
---
 gcc/config/aarch64/aarch64.md | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 3f37ea6cff7c..0169ec5cf24c 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -569,9 +569,7 @@
 ;; Attribute that specifies whether we are dealing with a branch to a
 ;; label that is far away, i.e. further away than the maximum/minimum
 ;; representable in a signed 21-bits number.
-;; 0 :=: no
-;; 1 :=: yes
-(define_attr "far_branch" "" (const_int 0))
+(define_attr "far_branch" "no,yes" (const_string "no"))
 
 ;; Attribute that specifies whether the alternative uses MOVPRFX.
 (define_attr "movprfx" "no,yes" (const_string "no"))
@@ -792,8 +790,8 @@
                               (const_int BRANCH_LEN_N_1MiB))
                           (lt (minus (match_dup 2) (pc))
                               (const_int BRANCH_LEN_P_1MiB)))
-                     (const_int 0)
-                     (const_int 1)))]
+                     (const_string "no")
+                     (const_string "yes")))]
 )
 
 ;; For a 24-bit immediate CST we can optimize the compare for equality
@@ -857,8 +855,8 @@
                               (const_int BRANCH_LEN_N_1MiB))
                           (lt (minus (match_dup 2) (pc))
                               (const_int BRANCH_LEN_P_1MiB)))
-                     (const_int 0)
-                     (const_int 1)))]
+                     (const_string "no")
+                     (const_string "yes")))]
 )
 
 ;; For an LT/GE comparison against zero, emit `TBZ`/`TBNZ`
@@ -872,7 +870,7 @@
   {
     if (get_attr_length (insn) == 8)
       {
-       if (get_attr_far_branch (insn) == 1)
+       if (get_attr_far_branch (insn) == FAR_BRANCH_YES)
          return aarch64_gen_far_branch (operands, 1, "Ltb",
                                         "<inv_tb>\\t%<w>0, <sizem1>, ");
        else
@@ -901,8 +899,8 @@
                               (const_int BRANCH_LEN_N_1MiB))
                           (lt (minus (match_dup 1) (pc))
                               (const_int BRANCH_LEN_P_1MiB)))
-                     (const_int 0)
-                     (const_int 1)))]
+                     (const_string "no")
+                     (const_string "yes")))]
 )
 
 ;; -------------------------------------------------------------------
@@ -966,8 +964,8 @@
                               (const_int BRANCH_LEN_N_1MiB))
                           (lt (minus (match_dup 2) (pc))
                               (const_int BRANCH_LEN_P_1MiB)))
-                     (const_int 0)
-                     (const_int 1)))]
+                     (const_string "no")
+                     (const_string "yes")))]
 
 )

Reply via email to