https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123502
--- Comment #5 from Jose E. Marchesi <jemarch at gcc dot gnu.org> ---
Using Andrew's reproducer and building with -O2:
.file "foo.c"
.text
.align 3
.global g
.type g, @function
g:
mov %r1,%fp
add %r1,-249
and %r1,-64
stdw [%r1+0],0
stdw [%r1+8],0
stdw [%r1+16],0
stdw [%r1+24],0
stdw [%r1+32],0
stdw [%r1+40],0
stdw [%r1+48],0
stdw [%r1+56],0
stdw [%r1+64],0
stdw [%r1+72],0
stdw [%r1+80],0
stdw [%r1+88],0
stdw [%r1+96],0
stdw [%r1+104],0
stdw [%r1+112],0
stdw [%r1+120],0
stdw [%r1+128],0
stdw [%r1+136],0
stdw [%r1+144],0
stdw [%r1+152],0
stdw [%r1+160],0
stdw [%r1+168],0
stdw [%r1+176],0
stdw [%r1+184],0
stdw [%r1+192],0
stdw [%r1+200],0
stdw [%r1+208],0
stdw [%r1+216],0
stdw [%r1+224],0
stdw [%r1+232],0
stdw [%r1+240],0
stdw [%r1+248],0
call f
exit
.size g, .-g
.ident "GCC: (GNU) 16.0.0 20260108 (experimental)"
Seems like the verifier is following the frame pointer into %r1, then
complaining because that pointer is being and'ed.