https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123285
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Keywords| |inline-asm
Last reconfirmed| |2025-12-24
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
`-mearly-ra=none` fixes the issue.
we get:
```
(insn 85 76 87 2 (set (reg:OI 62 v30)
(mem:OI (reg/f:DI 206) [0 BS_VAR_1D.23721[iftmp.0_54]+0 S32 A128]))
"/app/example.cpp":39:17 discrim 4 4826 {*aarch64_movoi}
(nil))
(insn 87 85 88 2 (set (reg:V16QI 61 v29)
(const_vector:V16QI [
(const_int -10 [0xfffffffffffffff6]) repeated x16
])) "/app/example.cpp":39:57 discrim 4 1344
{*aarch64_simd_movv16qi}
(nil))
(note 88 87 90 2 NOTE_INSN_DELETED)
(insn 90 88 91 2 (set (reg:V16QI 60 v28)
(const_vector:V16QI [
(const_int -10 [0xfffffffffffffff6])
(const_int 0 [0]) repeated x15
])) "/app/example.cpp":39:57 discrim 4 1344
{*aarch64_simd_movv16qi}
(nil))
(note 91 90 93 2 NOTE_INSN_DELETED)
(insn 93 91 94 2 (set (reg:V16QI 62 v30)
(plus:V16QI (reg:V16QI 61 v29)
(reg:V16QI 62 v30))) "/app/example.cpp":39:57 discrim 4 1411
{addv16qi3}
(nil))
(insn 94 93 101 2 (set (reg:V16QI 63 v31)
(plus:V16QI (reg:V16QI 60 v28)
(reg:V16QI 63 v31))) "/app/example.cpp":39:57 discrim 4 1411
{addv16qi3}
(expr_list:REG_DEAD (reg:OI 128 [ _53 ])
(nil)))
(insn 101 94 113 2 (parallel [
(asm_operands/v ("") ("") 0 []
[]
[] /app/example.cpp:38)
(clobber (reg:TI 62 v30))
]) "/app/example.cpp":38:9 -1
(expr_list:REG_UNUSED (reg:TI 62 v30)
(nil)))
(note 113 101 116 2 NOTE_INSN_DELETED)
(note 116 113 118 2 NOTE_INSN_DELETED)
(insn 118 116 119 2 (set (reg:V16QI 62 v30)
(plus:V16QI (reg:V16QI 61 v29)
(reg:V16QI 62 v30))) "/app/example.cpp":39:57 discrim 4 1411
{addv16qi3}
(nil))
```
Before we had:
```
(insn 94 93 101 2 (set (subreg:V16QI (reg:OI 169 [ _13 ]) 16)
(plus:V16QI (reg:V16QI 168)
(subreg:V16QI (reg:OI 128 [ _53 ]) 16))) "/app/example.cpp":39:57
discrim 4 1411 {addv16qi3}
(expr_list:REG_DEAD (reg:OI 128 [ _53 ])
(nil)))
(insn 101 94 113 2 (parallel [
(asm_operands/v ("") ("") 0 []
[]
[] /app/example.cpp:38)
(clobber (reg:TI 62 v30))
]) "/app/example.cpp":38:9 -1
(expr_list:REG_UNUSED (reg:TI 62 v30)
(nil)))
(note 113 101 116 2 NOTE_INSN_DELETED)
(note 116 113 117 2 NOTE_INSN_DELETED)
(insn 117 116 118 2 (set (reg:OI 178 [ _62 ])
(const_int 0 [0])) "/app/example.cpp":39:57 discrim 4 4826
{*aarch64_movoi}
(nil))
(insn 118 117 119 2 (set (subreg:V16QI (reg:OI 178 [ _62 ]) 0)
(plus:V16QI (reg:V16QI 167)
(subreg:V16QI (reg:OI 169 [ _13 ]) 0))) "/app/example.cpp":39:57
discrim 4 1411 {addv16qi3}
(nil))
```
early_ra misses that 169 conflicts with the clobber of the inline-asm of v30 so
it can't use v30 for 169.