[Top] [All Lists]

Problem compiling xfs (SuSE, gcc 2.95.2-98)

To: linux-xfs@xxxxxxxxxxx
Subject: Problem compiling xfs (SuSE, gcc 2.95.2-98)
From: "Marcelo E. Magallon" <marcelo.magallon@xxxxxxxxxxx>
Date: Tue, 19 Sep 2000 14:51:08 +0200
Sender: owner-linux-xfs@xxxxxxxxxxx
User-agent: Mutt/1.1.14i

 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))

 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 

 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 =".



<Prev in Thread] Current Thread [Next in Thread>