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