http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58314
--- Comment #10 from Oleg Endo <olegendo at gcc dot gnu.org> --- (In reply to Oleg Endo from comment #9) > > I'm testing the above patch now. And there are failures. Here is one (I think I remember it when working on the QI/HImode displacement addressing stuff): FAIL: gcc.dg/torture/vshuf-v16hi.c -O2 (test for excess errors) Excess errors: /usr/local/sh-elf/bin/ld: internal error: merge of architecture 'sh3e' with architecture 'sh2a-nofpu' produced unknown architecture /usr/local/sh-elf/bin/ld: /tmp/ccRPtSqs.o: uses instructions which are incompatible with instructions used in previous modules /usr/local/sh-elf/bin/ld: failed to merge target specific data of file /tmp/ccRPtSqs.o This usually happens because SH2A insns are output -- 32 bit displacement addressing insns which are more flexible -- even though the target is non-SH2A. This is what the comment above the reg_reg pattern is talking about. (There is no compiler error because the target type is not passed down to the assembler by the compiler).