https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105607
Bug ID: 105607
Summary: sh-unknown-elf: Error: opcode not valid for this cpu
variant
Product: gcc
Version: 12.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: judge.packham at gmail dot com
Target Milestone: ---
I'm in the process of adding GCC 12.1.0 to crosstool-ng. When building for
sh-unknown-elf we see the following errors building libgcc
[ALL ]
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/build/build-cc-gcc-core/./gcc/xgcc
-B/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/build/build-cc-gcc-core/./gcc/
-B/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/buildtools/sh-unknown-elf/bin/
-B/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/buildtools/sh-unknown-elf/lib/
-isystem
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/buildtools/sh-unknown-elf/include
-isystem
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/buildtools/sh-unknown-elf/sys-include
-g -O2 -idirafter
/home/runner/work/crosstool-ng/crosstool-ng/x-tools/sh-unknown-elf/sh-unknown-elf/include
-g -Os -mb -m1 -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition -isystem ./include -g
-DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -I. -I.
-I../../../.././gcc
-I/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc
-I/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/.
-I/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/../gcc
-I/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/../include
-DHAVE_CC_TLS -o _movmem_i4_s.o -MT _movmem_i4_s.o -MD -MP -MF
_movmem_i4_s.dep -DSHARED -DL_movmem_i4 -xassembler-with-cpp -c
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/config/sh/lib1funcs.S
[ALL ]
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/config/sh/lib1funcs.S:
Assembler messages:
[ERROR]
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/config/sh/lib1funcs.S:933:
Error: opcode not valid for this cpu variant
[ERROR]
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/config/sh/lib1funcs.S:935:
Error: opcode not valid for this cpu variant
[ERROR]
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/config/sh/lib1funcs.S:942:
Error: opcode not valid for this cpu variant
[ERROR]
/home/runner/work/crosstool-ng/crosstool-ng/.build/sh-unknown-elf/src/gcc/libgcc/config/sh/lib1funcs.S:944:
Error: opcode not valid for this cpu variant
[ERROR] make[4]: *** [Makefile:491: _movmem_i4_s.o] Error 1
The same configuration/build recipe successfully builds GCC 11.3.0
The assembly that is being complained about is
931 L_movmem_loop:
932 mov.l r3,@(12,r4)
933 dt r6
934 mov.l @r5+,r0
935 bt/s L_movmem_2mod4_end
936 mov.l @r5+,r1
937 add #16,r4
938 L_movmem_start_even:
939 mov.l @r5+,r2
940 mov.l @r5+,r3
941 mov.l r0,@r4
942 dt r6
943 mov.l r1,@(4,r4)
944 bf/s L_movmem_loop
945 mov.l r2,@(8,r4)
946 rts
947 mov.l r3,@(12,r4)
The code in question hasn't changed in many years so I assume it's something to
do with GCC passing the CPU information to gas