This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/35039] New: ICE in Linux-2.6.23 (fs/nfs/nfs4proc.c) when cross-compile with gcc-4.0.0


Hello,

 I'd like to report that there is the ICE happened when the linux-2.6.23 NFS
code is compiled using gcc-4.0.0:

CC fs/nfs/nfs4proc.o
fs/nfs/nfs4proc.c: In function 'nfs4_proc_readdir':
fs/nfs/nfs4proc.c:2237: error: unrecognizable insn:
(insn:HI 205 202 207 12 (set (reg:SI 126 [ D.22481 ])
(mem/s/f/j:SI (subreg:SI (reg:DI 190) 4) [0 <variable>.vm_mm+0
S4 A32])) -1 (nil)
(expr_list:REG_EQUAL (mem/s/j:SI (const_int 0 [0x0]) [0
<variable>.vm_mm+0 S4 A32])
(nil)))
fs/nfs/nfs4proc.c:2237: internal compiler error: in extract_insn, at 
recog.c:2020
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

 Some observations: 

(a) if I make the _nfs4_proc_readdir() function (or the nfs4_setup_readdir()
one which is called from it) in fs/nfs/nfs4proc.c as "noinline" then gcc-4.0.0
compiles the nfs4proc.c file without problems;

(b) there are no problems for gcc-4.0.0 to compile fs/nfs/nfs4proc.c from the
2.6.24 kernel (some changes were made to this file since 2.6.23, but these are
not concerned to the function which produces the ICE);

(c) gcc-4.2.2 successfully compiles the 2.6.23 kernel, i.e. there's no this ICE
happened with this compiler.

 I guess, the problem is concerned with the following RTX:

 mem/s/f/j:SI (subreg:SI (reg:DI 190) 4)

 I've dumped the results of compiler's RTL passes for all the kernel files
(including fs/nfs/nfs4proc.c) in the cases of  using both gcc-4.0.0  and
gcc-4.2.2, and found that:

- gcc-4.0.0 produces similar RTXs in the nfs4proc.c case only;

- gcc-4.2.2 never produces similar RTXs through all the Linux kernel files (in
the RTX, which produces the error, the gcc-4.2.2 compiler keeps the expression
"reg:SI XXX" instead of "subreg:SI (reg:DI YYY) 4" through all the RTL
iterations).

 The Linux kernel I compiled is the "DENX-v2.6.23-stable" branch of the
git://www.denx.de/git/linux-2.6-denx.git tree. The gcc-4.0.0 compiler is the
part of ELDK 4.1. The target system is stx_gp3ssa.

# git-checkout DENX-v2.6.23-stable
# make ARCH=ppc CROSS_COMPILE=ppc_85xx- stx_gp3ssa_defconfig
# make ARCH=ppc CROSS_COMPILE=ppc_85xx- uImage

 Regards, Yuri

-- 
Yuri Tikhonov, Senior Software Engineer
Emcraft Systems, www.emcraft.com


-- 
           Summary: ICE in Linux-2.6.23 (fs/nfs/nfs4proc.c) when cross-
                    compile with gcc-4.0.0
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: yur at emcraft dot com
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: ppc_85xx-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35039


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]