This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
porting gcc to new arch: unrecognizable insn
- From: Gabor Kerenyi <kerenyi at qwertynet dot hu>
- To: gcc at gcc dot gnu dot org
- Date: Sun, 1 Aug 2010 17:26:48 +0200
- Subject: porting gcc to new arch: unrecognizable insn
Hi All,
I'm porting GCC 4.4.4 to a new arch and while cross-compiling libgcc I get the
following error:
../../../libgcc/../gcc/libgcc2.c: In function â__clzsi2â:
../../../libgcc/../gcc/libgcc2.c:716: error: unrecognizable insn:
(insn 49 48 50 16 ../../../libgcc/../gcc/libgcc2.c:713 (set (reg:QI 25)
(mem/s/u/j:QI (plus:SI (reg/f:SI 22)
(reg:SI 23)) [0 __clz_tab S1 A8])) -1 (nil))
../../../libgcc/../gcc/libgcc2.c:716: internal compiler error: in
extract_insn, at recog.c:2048
Please submit a full bug report,
If I understand correctly it complains about a move instruction where src
memory location should be (reg22+reg23). My arch defines:
#define MAX_REGS_PER_ADDRESS 1
the first pseudo reg is 13
So I don't really understand why it tries to use such a pattern. My arch
supports:
REG->REG, REG->MEM, MEM->REG, MEM->MEM, IMM->REG, IMM->MEM (MEM can be symbol,
REF+index, and IMM+index which doesn't really work now).
If I write an asm code for count_leading_zero in longlong.h then it goes on
but that piece of C code should compile anyway.
Thanks
Gabor Kerenyi