[armel / 4.6 regression] could not find a spill register

Bug #807573 reported by Matthias Klose
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Linaro GCC
Fix Released
High
Unassigned
gcc-4.6 (Ubuntu)
Fix Released
High
Unassigned
libkdcraw (Ubuntu)
Fix Released
Undecided
Scott Kitterman

Bug Description

seen with gcc-4.6 4.6.1-2ubuntu1 (merged from Linaro 20110704), works with 4.5

$ g++ -O[123] -fPIC -g -c ValueRecords.ii
../../../src/share/native/sun/font/layout/ValueRecords.cpp: In member function 'void ValueRecord::adjustPosition(le_int16, ValueFormat, const char*, GlyphIterator&, const LEFontInstance*) const':
../../../src/share/native/sun/font/layout/ValueRecords.cpp:266:1: error: could not find a spill register
(insn 210 209 212 13 (set (subreg:SI (reg:HI 309) 0)
        (fix:SI (fix:SF (reg:SF 0 r0)))) ../../../src/share/native/sun/font/layout/ValueRecords.cpp:216 670 {*truncsisf2_vfp}
     (expr_list:REG_DEAD (reg:SF 0 r0)
        (nil)))
../../../src/share/native/sun/font/layout/ValueRecords.cpp:266:1: internal compiler error: in failed_reload, at reload1.c:6018
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.

Tags: armel

Related branches

Revision history for this message
Matthias Klose (doko) wrote :
Changed in gcc-4.6 (Ubuntu):
importance: Undecided → High
status: New → Confirmed
Revision history for this message
Matthias Klose (doko) wrote :

builds successfully in Debian unstable, so either Linaro or armv7/thumb related?

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.

Changed in gcc-linaro:
importance: Undecided → High
status: New → Triaged
Revision history for this message
Scott Kitterman (kitterman) wrote :
Revision history for this message
Chung-Lin Tang (cltang) wrote :

This looks similar to PR48808/48792, which was fixed by rsandiford in upstream...

Revision history for this message
Scott Kitterman (kitterman) wrote :

The workaround did produce a buildable libkdcraw package:

https://launchpad.net/ubuntu/+source/libkdcraw/4:4.6.90+repack1-0ubuntu2

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gcc-4.6 - 4.6.1-4ubuntu1

---------------
gcc-4.6 (4.6.1-4ubuntu1) oneiric; urgency=low

  * Merge with Debian.

gcc-4.6 (4.6.1-4) unstable; urgency=low

  * Update to SVN 20110714 (r176280) from the gcc-4_6-branch.
    - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672,
      PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296,
      PR target/49487, PR tree-optimization/49651, PR ada/48711.

  [ Matthias Klose ]
  * Build Go on alpha for gcc-snapshot builds.
  * For multicore ARM, clear both caches, not just the dcache (proposed
    patch by Andrew Haley).
  * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk.
    LP: #807573.
  * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit
    off function pointers (Richard Sandiford). LP: #721531.

  [ Marcin Juszkiewicz ]
  * Define DEB_TARGET_MULTIARCH macro.
  * debian/rules2: Macro and configuration consolidation.

gcc-4.6 (4.6.1-3) unstable; urgency=medium

  * Update to SVN 20110709 (r176108) from the gcc-4_6-branch.
    - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598,
      PR fortran/49479, PR target/49621, PR target/46779, PR target/49660,
      PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640,
      PR c++/48157, PR c/49644, PR fortran/48926.
    - Apparently fixes a boost issue. Closes: #632938.
  * Apply proposed patch for PR fortran/49690. Closes: #631204.

  * README.Debian: New section 'Former and/or inactive maintainers'.
 -- Matthias Klose <email address hidden> Thu, 14 Jul 2011 20:18:27 +0200

Changed in gcc-4.6 (Ubuntu):
status: Confirmed → Fix Released
Revision history for this message
Matthias Klose (doko) wrote :

the work around can be removed

Changed in libkdcraw (Ubuntu):
assignee: nobody → SpecialK (scottk)
status: New → Confirmed
assignee: SpecialK (scottk) → Scott Kitterman (kitterman)
Michael Hope (michaelh1)
Changed in gcc-linaro:
status: Triaged → Fix Committed
milestone: none → 4.6-2011.07
Michael Hope (michaelh1)
Changed in gcc-linaro:
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package libkdcraw - 4:4.6.90+repack1-0ubuntu3

---------------
libkdcraw (4:4.6.90+repack1-0ubuntu3) oneiric; urgency=low

  * Drop work around for LP: #807573 now that it's fixed
 -- Scott Kitterman <email address hidden> Fri, 22 Jul 2011 10:04:50 -0400

Changed in libkdcraw (Ubuntu):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.