unrecognizable insn ICE in latticemico32 (lm32-elf) when building Linux kernel

Philip Pemberton philpem@gmail.com
Tue May 25 05:07:00 GMT 2010

Hi guys,
About a month ago I opened a bug on Bugzilla:

This relates to gcc crashing out with an Internal Compiler Error when 
doing a build of Linux kernel 2.6.34-rc4. Basically, as soon as the 
build hits fs/timerfd.c, an ICE is thrown:

fs/timerfd.c: In function ‘timerfd_poll’:
fs/timerfd.c:105:1: error: unrecognizable insn:
(insn 44 43 45 5 fs/timerfd.c:94 (set (reg:SI 68)
         (subreg:SI (mem/s:DI (plus:SI (reg/v/f:SI 39 [ ctx ])
                     (const_int 64 [0x40])) [0 S8 A64]) 4)) -1 (nil))
fs/timerfd.c:105:1: internal compiler error: in extract_insn, at 
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

Compiling without -O2 allows the build to get a little further, but it 
falls over on mm/filemap.c:

mm/filemap.c: In function ‘do_generic_file_read’:
mm/filemap.c:1171:1: error: unrecognizable insn:
(insn 402 401 403 20 mm/filemap.c:1029 (set (reg:SI 389)
         (subreg:SI (mem/c/i:DI (plus:SI (reg/f:SI 33 virtual-stack-vars)
                     (const_int -52 [0xffffffffffffffcc])) [0 isize+0 S8 
4)) -1 (nil))
mm/filemap.c:1171:1: internal compiler error: in extract_insn, at 

The full details are in the bug report, along with the compiler command 
line, .i file and preprocessed source. Seeing as it's been over a month 
and nothing seems to have happened with the bug, I'd like to have a go 
at fixing it myself...

I have a couple of questions:

1) Who's the current maintainer for the lm32 port? Jon Beniston?
I can't see anything on the gcc website that says definitively "target X 
is maintained by $PERSON", and I really don't want to step on his/her 
toes and start a flame war, turf war or any other kind of war here...

2) What are these error messages telling me? Is there a "decoding ICE 
Error Messages HOWTO" for aspiring GCC developers?

3) I've established that the bug has been present in the lm32 port since 
it was merged into the mainline GCC source. What part of the gcc source 
should I start digging into first?

I guess ultimately I'm just asking for a few starting points from the 
gurus here... :)


More information about the Gcc mailing list