Comment 3 for bug 807573

Revision history for this message
Michael Hope (michaelh1) wrote :

Thank you for the bug report. I've confirmed this with gcc-linaro-4.6-2011.06-0 on ARM:

michaelh@ursa2:~/linaro/bugs$ /tools/toolchains/arch/armv7l/gcc-linaro-4.6-2011.06-0-armv7l-maverick-cbuild130-ursa3-cortexa9r1/bin/g++ -O2 -c ValueRecords.ii
../../../src/share/native/sun/font/layout/ValueRecords.cpp: In member function 'void ValueRecord::adjustPosition(ValueFormat, const char*, GlyphIterator&, const LEFontInstance*) const':
../../../src/share/native/sun/font/layout/ValueRecords.cpp:162:1: error: could not find a spill register
(insn 210 212 214 13 (set (subreg:SI (reg:HI 463) 0)
        (fix:SI (fix:SF (reg:SF 0 r0)))) ../../../src/share/native/sun/font/layout/ValueRecords.cpp:112 668 {*truncsisf2_vfp}
     (expr_list:REG_DEAD (reg:SF 0 r0)
        (nil)))
../../../src/share/native/sun/font/layout/ValueRecords.cpp:162:1: internal compiler error: in failed_reload, at reload1.c:6011

This is a VFP specific fault. One work-around is to compile with -mfloat-abi=soft. The fault does not exist in gcc-linaro-4.5-2011.06-0, gcc-4.5.3, gcc-4.6.1, or GCC trunk.

The fault was exposed by r106753. The fault existed in trunk from at least r172224 until r174044 but was gone by r174684.

I've set it to high priority as it is a ftbfs, occurs at all optimisation levels, and is in a significant package.