[Bug target/88145] New: ICE: unrecognizable insn (mffs) targeting 32-bit BE FPU-less powerpc CPUs
asolokha at gmx dot com
gcc-bugzilla@gcc.gnu.org
Thu Nov 22 03:56:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88145
Bug ID: 88145
Summary: ICE: unrecognizable insn (mffs) targeting 32-bit BE
FPU-less powerpc CPUs
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: asolokha at gmx dot com
Target Milestone: ---
Target: powerpc-*-linux-gnu
gcc-9.0.0-alpha20181118 snapshot (r266255) ICEs when compiling
gcc/testsuite/gcc.target/powerpc/test_mffsl.c for 32-bit powerpc cores that
don't include a FPU:
% powerpc-e300c3-linux-gnu-gcc-9.0.0-alpha20181118 -mcpu=e300c2 -c
gcc/testsuite/gcc.target/powerpc/test_mffsl.c -o /dev/null
gcc/testsuite/gcc.target/powerpc/test_mffsl.c: In function 'main':
gcc/testsuite/gcc.target/powerpc/test_mffsl.c:20:3: error: impossible
constraint in 'asm'
20 | __asm __volatile ("mffs %0" : "=f"(f14));
| ^~~~~
gcc/testsuite/gcc.target/powerpc/test_mffsl.c:32:1: error: unrecognizable insn:
32 | }
| ^
(insn 9 8 10 2 (set (reg:DF 128)
(unspec_volatile:DF [
(const_int 0 [0])
] UNSPECV_MFFS))
"gcc/testsuite/gcc.target/powerpc/test_mffsl.c":23:21 -1
(nil))
during RTL pass: vregs
gcc/testsuite/gcc.target/powerpc/test_mffsl.c:32:1: internal compiler error: in
extract_insn, at recog.c:2305
0x639917 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/rtl-error.c:108
0x639935 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/rtl-error.c:116
0x637d86 extract_insn(rtx_insn*)
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/recog.c:2305
0xa2dbf2 instantiate_virtual_regs_in_insn
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/function.c:1605
0xa2dbf2 instantiate_virtual_regs
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/function.c:1975
0xa2dbf2 execute
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181118/work/gcc-9-20181118/gcc/function.c:2024
gcc 4.9.4 correctly rejects it w/ "error: impossible constraint in 'asm'" and
w/o ICE, as does any version of the powerpcspe backend.
Also, shouldn't the rs6000 backend reject it when compiling for 85xx CPUs? I
see standard FPU instructions in the generated code which I believe shouldn't
be there. Maybe -mcpu=854[08] should be removed from the rs6000 backend
altogether, duplicating what was done in the powerpcspe backend previously w/
all non-SPE -mcpu's?
More information about the Gcc-bugs
mailing list