"Marcelo E. Magallon" wrote:
That compiler has known problems compiling XFS,
there is also problems with the correctness of the code that
is generated.
At this time XFS should be compiled with egcs 2.91.66.
> 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
--
Russell Cattelan
cattelan@xxxxxxxxxxx
|