https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028

--- Comment #11 from Martin Liška <marxin at gcc dot gnu.org> ---
Reduced test-case:

$ cat pr104028.c
# 1 "" 3
struct {
  _Bool do_force;
  int examine;
  int vpd_pn
} svpd_decode_t10_op;
svpd_decode_t10_sg_fd, svpd_decode_t10_op_1, svpd_decode_t10_op_2;
svpd_decode_t10_rp() {
  _Bool inhex_active = svpd_decode_t10_sg_fd;
  int pn = svpd_decode_t10_op_2;
  if (inhex_active)
    pn = svpd_decode_t10_rp;
  if (!inhex_active && svpd_decode_t10_op_1)
    vpd_fetch_page();
  switch (pn) {
  case 2:
    if (inhex_active)
      sg_ll_inquiry_v2();
  case 181:
    vpd_fetch_page();
  case 182:
    vpd_fetch_page();
  case 183:
    vpd_fetch_page();
  case 184:
    vpd_fetch_page(svpd_decode_t10_op);
  case 185:
    vpd_fetch_page();
  }
}

$ m68k-suse-linux-gcc pr104028.c -c -mcpu=5208 -Os
/tmp/cciKSGSl.s: Assembler messages:
/tmp/cciKSGSl.s:77: Error: value -134 out of range
/tmp/cciKSGSl.s:77: Error: value of ffffff7a too large for field of 1 byte at
000000cf

$ m68k-suse-linux-gcc pr104028.c --version
m68k-suse-linux-gcc (SUSE Linux) 11.2.1 20220103 [revision
d4a1d3c4b377f1d4acb34fe1b55b5088a3f293f6]

we speak about the following instruction:

    77          move.w .L18(%pc,%d2.l),%d0

Reply via email to