[Bug target/24661] unable to find a register to spill in class NO_REGS on ia64

2005-11-09 Thread matz at suse dot de


--- 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

2005-11-09 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-09 Thread matz at suse dot de


--- 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

2005-11-09 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-03 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-03 Thread vapier at gentoo dot org


--- 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

2005-11-03 Thread vapier at gentoo dot org


--- 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

2005-11-03 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-03 Thread vapier at gentoo dot org


--- 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

2005-11-03 Thread vapier at gentoo dot org


--- 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