Tested as described in the covering note. I plan to commit this as obvious if the prerequisites are approved.
gcc/ * config/aarch64/aarch64.md (fp): Turn into a code,alternative attribute. (simd, enabled): Likewise. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index d46f837..a6f312f 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -166,12 +166,12 @@ ;; Attribute that specifies whether or not the instruction touches fp ;; registers. When this is set to yes for an alternative, that alternative ;; will be disabled when !TARGET_FLOAT. -(define_attr "fp" "no,yes" (const_string "no")) +(define_attr "fp" "no,yes" (const_string "no") "code,alternative") ;; Attribute that specifies whether or not the instruction touches simd ;; registers. When this is set to yes for an alternative, that alternative ;; will be disabled when !TARGET_SIMD. -(define_attr "simd" "no,yes" (const_string "no")) +(define_attr "simd" "no,yes" (const_string "no") "code,alternative") (define_attr "length" "" (const_int 4)) @@ -186,7 +186,8 @@ (and (eq_attr "simd" "yes") (eq (symbol_ref "TARGET_SIMD") (const_int 0)))) (const_string "no") - ] (const_string "yes"))) + ] (const_string "yes")) + "code,alternative") ;; 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