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

            Bug ID: 87723
           Summary: ICE: output_operand: invalid %-code on s390x
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu, s390x-linux-gnu
            Target: s390x-linux-gnu

Seen both on native and cross-compiler:

$ cat ice.i
unsigned long a;
int b;
void c(char* i) {
  for (;;) {
    char g = 0;
    for (; g < 24; ++g)
      b = a << g | a >> 64 - g;
    {
      char *d = i;
      long h = b;
      char e = 0;
      for (; e < 8; ++e)
        d[e] = h;
    }
    char *d = i;
    signed e;
    unsigned long f = 0;
    e = 7;
    for (; e; --e) {
      f <<= 8;
      f |= d[e];
    }
    for (; e < 8; ++e)
      d[e] = f;
  }
}

$ /home/marxin/Programming/gcc2/objdir2/gcc/xgcc
-B/home/marxin/Programming/gcc2/objdir2/gcc/ -O3 -S -march=z196 -m64 -mzarch
ice.i
during RTL pass: final
ice.i: In function ā€˜cā€™:
ice.i:26:1: internal compiler error: output_operand: invalid %-code
   26 | }
      | ^
0x9bf140 output_operand_lossage(char const*, ...)
        ../../gcc/final.c:3600
0x9bfd68 output_asm_insn(char const*, rtx_def**)
        ../../gcc/final.c:3969
0x9c10a1 final_scan_insn_1
        ../../gcc/final.c:3103
0x9c14db final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*)
        ../../gcc/final.c:3149
0x9c17d6 final_1
        ../../gcc/final.c:2019
0x9c28e8 rest_of_handle_final
        ../../gcc/final.c:4649
0x9c28e8 execute
        ../../gcc/final.c:4723

Reply via email to