I have the following error when compiling a file from linux kernel (attached). Command line: m68k-elf-gcc -w -O1 -c pr.c Output: pr.c: In function 'nfs_statfs': pr.c:8757: error: unrecognizable insn: (insn 42 40 43 3 (set (mem/s/j:DI (plus:SI (reg/f:SI 26 virtual-stack-vars) (const_int -64 [0xffffffc0])) [0 res.bsize+0 S8 A16]) (zero_extend:DI (mem/s/j:SI (plus:SI (reg/v/f:SI 45 [ sb ]) (const_int 10 [0xa])) [0 <variable>.s_blocksize+0 S4 A16]))) -1 (nil) (nil)) pr.c:8757: internal compiler error: in extract_insn, at recog.c:2084 Last working version: "2005-07-29 12:00:00 UTC"
Created attachment 9512 [details] Test case
Reducing.
Confirmed, reduced testcase: struct statfs { int f_bsize; }; struct super_block { unsigned long s_blocksize; }; struct nfs_fsinfo { unsigned long long bsize; }; int statfs (struct nfs_fsinfo *); int nfs_statfs(struct super_block *sb, struct statfs *buf) { unsigned char blockbits; struct nfs_fsinfo res; statfs(&res); if (res.bsize == 0) res.bsize = sb->s_blocksize; buf->f_bsize = nfs_block_bits(res.bsize); }
m68k is not a primary or secondary platform; removing target milestone.
*** Bug 23521 has been marked as a duplicate of this bug. ***
Reduced down to: void foo (unsigned long *a, unsigned long long *p) { if (*p == 0) *p = *a; }
Reduced down to: void foo (unsigned long *a, unsigned long long *p) { *p = *a; }
Subject: Bug 23435 Author: kazu Date: Tue Nov 22 20:42:54 2005 New Revision: 107373 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107373 Log: gcc/ PR target/23435 * m68k.md (zero_extendsidi2): Force operands[1] to a register if both operands[0] and operands[1] are memory. gcc/testsuite/ PR target/23435 * gcc.c-torture/compile/pr23435.c: New. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr23435.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/m68k/m68k.md trunk/gcc/testsuite/ChangeLog
Subject: Bug 23435 Author: kazu Date: Tue Nov 22 20:53:08 2005 New Revision: 107374 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107374 Log: gcc/ PR target/23435 * m68k.md (zero_extendsidi2): Force operands[1] to a register if both operands[0] and operands[1] are memory. gcc/testsuite/ PR target/23435 * gcc.c-torture/compile/pr23435.c: New. Added: branches/gcc-4_1-branch/gcc/testsuite/gcc.c-torture/compile/pr23435.c - copied unchanged from r107373, trunk/gcc/testsuite/gcc.c-torture/compile/pr23435.c Modified: branches/gcc-4_1-branch/gcc/ChangeLog branches/gcc-4_1-branch/gcc/config/m68k/m68k.md branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
Just checked in a patch.