On Jun 10 2022, Geert Uytterhoeven wrote:
The offending instruction is:
| drivers/scsi/mpi3mr/mpi3mr_fw.c:299: switch (host_tag) {
mvz.w %d2,%d0 | tmp160, host_tag
mov3q.l #5,%d1 |,
cmp.l %d0,%d1 | host_tag,
jcs .L154 |
tst.w %d6 | host_tag
jeq .L133 |
subq.l #2,%d2 |, tmp238
mvz.w %d2,%d2 | tmp238, tmp240
mov3q.l #3,%d0 |,
cmp.l %d2,%d0 | tmp240,
jcs .L140 |
add.l %d2,%d2 | tmp244
move.w .L155(%pc,%d2.l),%d0 |, tmp245
jra .L186 |
And the table L155 is just too far from the above instruction, so
the displacement is too large, causing the failure.
Looks like a compiler bug to me?
Yes, it's https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028.
--
Andreas Schwab, schwab@xxxxxxxxxxxxxx
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."