Hi,
I'm trying to compile the kernel out of the CVS tree. I'm getting this:
xfs_bmap.c:3254: internal error--unrecognizable insn:
(insn/i 564 563 2232 (parallel[
(set (reg:SI 0 %eax)
(asm_operands ("") ("=a") 0[
(reg:DI 1 %edx)
]
[
(asm_input:DI ("A"))
] ("xfs_os_defs.h") 72))
(set (reg:SI 1 %edx)
(asm_operands ("") ("=d") 1[
(reg:DI 1 %edx)
]
[
(asm_input:DI ("A"))
] ("xfs_os_defs.h") 72))
] ) -1 (insn_list 524 (nil))
(nil))
The compiler line is:
gcc -D__KERNEL__ -I/home/magallon/proj/xfs/kernel/include -Wall
-Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -fschedule-insns2
-mwide-multiply -fexpensive-optimizations -fno-strict-aliasing -g3 -Wno-unused
-Wno-parentheses -Wno-uninitialized -I./linux -I./pseudo-inc -I. -D_KERNEL
-funsigned-char -Wno-unknown-pragmas -DDEBUG -DXFSDEBUG -c -o xfs_bmap.o
xfs_bmap.c
Adding -fno-cse-skip-blocks allows the compilation to finish. Is some
specific version of gcc needed to compile this? At home I run debian
which includes at highly patched version of gcc (2.95.2 + CVS updates)
but I've never ran into trouble using that to compile 2.4.x kernels, but
I don't really know what SuSE includes...
Perhaps someone here who knows his way arround gcc internals can shed
some light into this? The part in question seems to be:
static inline __u32 xfs_do_div(void *a, __u32 b, int n)
{
__u32 mod;
switch (n) {
case 4:
mod = *(__u32 *)a % b;
*(__u32 *)a = *(__u32 *)a / b;
return mod;
case 8:
mod = do_div(*(__u64 *)a, b);
return mod;
}
/* NOTREACHED */
return 0;
}
line 72 is the second "mod =".
TIA,
Marcelo
|