This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[m32c] IRA reload failures in libstdc++
- From: DJ Delorie <dj at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 20 Apr 2009 22:24:44 -0400
- Subject: [m32c] IRA reload failures in libstdc++
This is typical of the types of failures m32c got before IRA, too. I
had a good build on Feb 19th, but if I try to reproduce it, it fails
too.
Fails with -O2, works with -Os. Note: you might need -fno-ivopts to
get around the recent m32c/IV problems.
Any ideas? Any thoughts on why gcc has so many problems with this
chip?
dj@greed pts/9 ~/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/src
$ make CXXFLAGS="-g -O2 -dap" wstring-inst.o
/greed/dj/m32c/gcc/m32c-elf/./gcc/xgcc -shared-libgcc -B/greed/dj/m32c/gcc/m32c-elf/./gcc -nostdinc++ -L/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/src -L/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/src/.libs -B/greed/dj/m32c/install/m32c-elf/bin/ -B/greed/dj/m32c/install/m32c-elf/lib/ -isystem /greed/dj/m32c/install/m32c-elf/include -isystem /greed/dj/m32c/install/m32c-elf/sys-include -mcpu=m32cm -DHAVE_CONFIG_H -I. -I../../../../../gcc/libstdc++-v3/src -I.. -I/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/m32c-elf -I/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include -I/greed/dj/m32c/gcc/gcc/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -g -O2 -dap -std=gnu++0x -c ../../../../../gcc/libstdc++-v3/src/wstring-inst.cc
In file included from /greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/string:53,
from ../../../../../gcc/libstdc++-v3/src/string-inst.cc:33,
from ../../../../../gcc/libstdc++-v3/src/wstring-inst.cc:34:
/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/bits/basic_string.h: In member function 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::assign(std::initializer_list<_CharT>) [with _CharT = wchar_t, _Traits = std::char_traits<wchar_t>, _Alloc = std::allocator<wchar_t>]':
/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/bits/basic_string.h:1007: error: unable to find a register to spill in class 'A_REGS'
/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/bits/basic_string.h:1007: error: this is the insn:
(insn 18 17 19 2 /greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/bits/basic_string.h:1475 (parallel [
(set (reg:HI 0 r0 [39])
(ashift:HI (mem/s:HI (plus:PSI (subreg:PSI (reg/f:SI 25 [ __i1$_M_current ]) 0)
(const_int -6 [0xfffffffa])) [3 <variable>.D.12386._M_length+0 S2 A8])
(const_int 2 [0x2])))
(clobber (scratch:HI))
]) 224 {ashlhi3_i} (nil))
/greed/dj/m32c/gcc/m32c-elf/m32c-elf/m32cm/libstdc++-v3/include/bits/basic_string.h:1007: internal compiler error: in spill_failure, at reload1.c:2094
[wstring-inst.cc.175r.ira]
Spilling for insn 18.
reload failure for reload 0
Reloads for insn # 18
Reload 0: reload_in (SI) = (reg/f:SI 25 [ __i1$_M_current ])
A_REGS, RELOAD_FOR_OTHER_ADDRESS (opnum = 0)
reload_in_reg: (reg/f:SI 25 [ __i1$_M_current ])
Reload 1: reload_in (HI) = (mem/s:HI (plus:PSI (subreg:PSI (reg/f:SI 25 [ __i1$_M_current ]) 0)
(const_int -6 [0xfffffffa])) [3 <variable>.D.12386._M_length+0 S2 A8])
reload_out (HI) = (reg:HI 0 r0 [39])
A_HI_MEM_REGS, RELOAD_OTHER (opnum = 0)
reload_in_reg: (mem/s:HI (plus:PSI (subreg:PSI (reg/f:SI 25 [ __i1$_M_current ]) 0)
(const_int -6 [0xfffffffa])) [3 <variable>.D.12386._M_length+0 S2 A8])
reload_out_reg: (reg:HI 0 r0 [39])
reload_reg_rtx: (reg:HI 0 r0 [39])