This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/35802] New: MIPS64: Unable to find a register to spill in class ‘V1_REG’
- From: "aurelien at aurel32 dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 Apr 2008 14:10:51 -0000
- Subject: [Bug c/35802] New: MIPS64: Unable to find a register to spill in class ‘V1_REG’
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
I am getting a very strange ICE on a mips system when building with -mabi=n32
or -mabi=64:
testcase.i: In function ‘_IO_vfscanf_internal’:
testcase.i:2857: error: unable to find a register to spill in class
‘V1_REG’
testcase.i:2857: error: this is the insn:
(insn 1286 1241 1243 106 testcase.i:577 (set (reg:SI 19 $19 [3464])
(unspec:SI [
(const_int 0 [0x0])
] 28)) 460 {tls_get_tp_si} (expr_list:REG_EQUIV (unspec:SI [
(const_int 0 [0x0])
] 28)
(nil)))
testcase.i:2857: confused by earlier errors, bailing out
This is when trying to build glibc 2.7, file vfscanf.c. The strange part appear
when trying to reduce the testcase. I noticed that removing struct declarations
that are not use elsewhere in the file make the problem disappear. That's why
the reduced testcase is still big.
I'll attach two testcase, one unreduced, and one reduced.
With the unreduced testcase, it is possible to trigger the bug with -mabi=n32
or -mabi=64 with -O2 or -O3.
On reduce testcase, the bug is triggered exclusively with -mabi=n32 and -O2.
This is the command I used to build the file:
/usr/bin/gcc-4.3 -c -O2 -fgnu89-inline -std=gnu99 -mabi=n32 testcase-min.i
--
Summary: MIPS64: Unable to find a register to spill in class
‘V1_REG’
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: aurelien at aurel32 dot net
GCC build triplet: mips64el-unknown-linux-gnu
GCC host triplet: mips64el-unknown-linux-gnu
GCC target triplet: mips64el-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35802