public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
@ 2005-11-03 23:51 ` vapier at gentoo dot org
  2005-11-03 23:52 ` vapier at gentoo dot org
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-03 23:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from vapier at gentoo dot org  2005-11-03 23:51 -------
Created an attachment (id=10138)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10138&action=view)
reduced test case, sym.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c/24661]  New: unable to find a register to spill in class NO_REGS on ia64
@ 2005-11-03 23:51 vapier at gentoo dot org
  2005-11-03 23:51 ` [Bug c/24661] " vapier at gentoo dot org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-03 23:51 UTC (permalink / raw)
  To: gcc-bugs

trying to build quake3 on ia64 ... reduced test case looks like this:

$ gcc -O2 -c sym.c
sym.c: In function `vtoa':
sym.c:28: error: unable to find a register to spill in class `FR_REGS'
sym.c:28: error: this is the insn:
(insn 12 3 13 0 (set (reg:DF 134 f6 [343])
        (float_truncate:DF (subreg:XF (reg/v:TI 112 in0 [orig:340 v ] [340])
0))) 39 {truncxfdf2} (insn_list 3 (nil))
    (expr_list:REG_DEAD (reg/v:TI 112 in0 [orig:340 v ] [340])
        (nil)))
sym.c:28: confused by earlier errors, bailing out

tested Gentoo 3.3.2 / 3.3.6 / 3.4.4 / 4.0.2, all fail same way


-- 
           Summary: unable to find a register to spill in class NO_REGS on
                    ia64
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: vapier at gentoo dot org
  GCC host triplet: ia64-linux-gnu
GCC target triplet: ia64-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
  2005-11-03 23:51 ` [Bug c/24661] " vapier at gentoo dot org
@ 2005-11-03 23:52 ` vapier at gentoo dot org
  2005-11-04  0:07 ` [Bug target/24661] " pinskia at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-03 23:52 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from vapier at gentoo dot org  2005-11-03 23:52 -------
Created an attachment (id=10139)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10139&action=view)
full test case from quake3 source quake3-register-spill-insn.tar.bz2


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24661


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
  2005-11-03 23:51 ` [Bug c/24661] " vapier at gentoo dot org
  2005-11-03 23:52 ` vapier at gentoo dot org
@ 2005-11-04  0:07 ` pinskia at gcc dot gnu dot org
  2005-11-04  0:12 ` vapier at gentoo dot org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-11-04  0:07 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (2 preceding siblings ...)
  2005-11-04  0:07 ` [Bug target/24661] " pinskia at gcc dot gnu dot org
@ 2005-11-04  0:12 ` vapier at gentoo dot org
  2005-11-04  0:56 ` vapier at gentoo dot org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-04  0:12 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (3 preceding siblings ...)
  2005-11-04  0:12 ` vapier at gentoo dot org
@ 2005-11-04  0:56 ` vapier at gentoo dot org
  2005-11-04  1:07 ` pinskia at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-04  0:56 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (4 preceding siblings ...)
  2005-11-04  0:56 ` vapier at gentoo dot org
@ 2005-11-04  1:07 ` pinskia at gcc dot gnu dot org
  2005-11-04  1:46 ` vapier at gentoo dot org
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-11-04  1:07 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (5 preceding siblings ...)
  2005-11-04  1:07 ` pinskia at gcc dot gnu dot org
@ 2005-11-04  1:46 ` vapier at gentoo dot org
  2005-11-04  2:09 ` vapier at gentoo dot org
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-04  1:46 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (6 preceding siblings ...)
  2005-11-04  1:46 ` vapier at gentoo dot org
@ 2005-11-04  2:09 ` vapier at gentoo dot org
  2005-11-09 14:49 ` matz at suse dot de
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: vapier at gentoo dot org @ 2005-11-04  2:09 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (7 preceding siblings ...)
  2005-11-04  2:09 ` vapier at gentoo dot org
@ 2005-11-09 14:49 ` matz at suse dot de
  2005-11-09 15:23 ` pinskia at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: matz at suse dot de @ 2005-11-09 14:49 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (8 preceding siblings ...)
  2005-11-09 14:49 ` matz at suse dot de
@ 2005-11-09 15:23 ` pinskia at gcc dot gnu dot org
  2005-11-09 15:32 ` matz at suse dot de
  2005-11-09 15:57 ` pinskia at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-11-09 15:23 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (9 preceding siblings ...)
  2005-11-09 15:23 ` pinskia at gcc dot gnu dot org
@ 2005-11-09 15:32 ` matz at suse dot de
  2005-11-09 15:57 ` pinskia at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: matz at suse dot de @ 2005-11-09 15:32 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/24661] unable to find a register to spill in class NO_REGS on ia64
  2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
                   ` (10 preceding siblings ...)
  2005-11-09 15:32 ` matz at suse dot de
@ 2005-11-09 15:57 ` pinskia at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-11-09 15:57 UTC (permalink / raw)
  To: gcc-bugs



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


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2005-11-09 15:57 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-11-03 23:51 [Bug c/24661] New: unable to find a register to spill in class NO_REGS on ia64 vapier at gentoo dot org
2005-11-03 23:51 ` [Bug c/24661] " vapier at gentoo dot org
2005-11-03 23:52 ` vapier at gentoo dot org
2005-11-04  0:07 ` [Bug target/24661] " pinskia at gcc dot gnu dot org
2005-11-04  0:12 ` vapier at gentoo dot org
2005-11-04  0:56 ` vapier at gentoo dot org
2005-11-04  1:07 ` pinskia at gcc dot gnu dot org
2005-11-04  1:46 ` vapier at gentoo dot org
2005-11-04  2:09 ` vapier at gentoo dot org
2005-11-09 14:49 ` matz at suse dot de
2005-11-09 15:23 ` pinskia at gcc dot gnu dot org
2005-11-09 15:32 ` matz at suse dot de
2005-11-09 15:57 ` pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).