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

Reply via email to