[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #9 from matz at suse dot de 2005-11-09 14:49 --- A shorter testcase (which at least breaks on SuSEs 3.3-hammer compiler) is: --- typedef union value { long double d; } Value; double ld2d(Value v) { return v.d; } --- The problem seems to be that the register containing the union is TImode, which gets converted to TFmode via subreg, which in turn is truncated to DFmode via float_truncate, which somehow confuses gcc. -- matz at suse dot de changed: What|Removed |Added CC||matz at suse dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #10 from pinskia at gcc dot gnu dot org 2005-11-09 15:23 --- Hmm, do we have an ABI change in 4.1: We get in 4.1.0: ld2d: .prologue .body fnorm.d f8 = f8 br.ret.sptk.many b0 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #11 from matz at suse dot de 2005-11-09 15:32 --- You mean ABI change, because the input register seems to be f8, instead of in0 (as would be need for this union)? I'm not sure, but it looks fishy at least. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #12 from pinskia at gcc dot gnu dot org 2005-11-09 15:57 --- (In reply to comment #11) You mean ABI change, because the input register seems to be f8, instead of in0 (as would be need for this union)? I'm not sure, but it looks fishy at least. Actually it is not an ABI change as the 3.4's RTL looks like: (insn 3 2 4 (set (reg/v:TI 340 [ v ]) (reg:TI 136 f8 [ v ])) -1 (nil) (nil)) so it comes in as f8. Note 4.0.3 20051105 fails the same way as your 4.0.3 does So closing as fixed as this is not a regression. Note gcc 4.1 produces the RTL as: (insn 6 11 7 0 (set (reg:XF 340) (reg:XF 136 f8 [ v ])) -1 (nil) (nil)) Which is in the correct mode right away. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Known to fail|3.3.2 3.3.6 3.4.4 4.0.2 |3.3.2 3.3.6 3.4.4 4.0.2 ||4.0.3 Known to work||4.1.0 Resolution||FIXED Target Milestone|--- |4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #3 from pinskia at gcc dot gnu dot org 2005-11-04 00:07 --- I cannot reproduce this on the mainline. Are you sure that this is not due to a modification that gentoo has done? -- pinskia at gcc dot gnu dot org changed: What|Removed |Added CC||pinskia at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #4 from vapier at gentoo dot org 2005-11-04 00:12 --- i had a SuSE guy report the samething, but i'll go ahead and rebuild a vanilla 4.0.2 to be sure -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #5 from vapier at gentoo dot org 2005-11-04 00:55 --- ok, gcc-4.0.2 on Gentoo with no Gentoo patches fails same way i'll see about creating a Debian chroot to doubly verify -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #6 from pinskia at gcc dot gnu dot org 2005-11-04 01:06 --- Then maybe this has been fixed in 4.1.0 already. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #7 from vapier at gentoo dot org 2005-11-04 01:46 --- if that's the case, since this doesnt seem to be a regression (unless it worked in like 3.2.x or older), does that mean i'm sol with 3.4.x/4.0.x ? :) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661
[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
--- Comment #8 from vapier at gentoo dot org 2005-11-04 02:09 --- yes, debian 3.3.6-10 (3.3.6) and 3.4.4-9 (3.4.5 20051015) both fail in the same way ... debian's 4.0.3 (4.0.3 20051023) however fails in a different way: sym.c: In function 'vtoa': sym.c:28: internal compiler error: in find_valid_class, at reload.c:719 Please submit a full bug report, i'll see about installing gcc-4.1 on my Gentoo box -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661