public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/19357] New: ICE when long double argument arrives in general register
@ 2005-01-10 11:46 jbeulich at novell dot com
  2005-01-10 11:46 ` [Bug target/19357] " jbeulich at novell dot com
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: jbeulich at novell dot com @ 2005-01-10 11:46 UTC (permalink / raw)
  To: gcc-bugs

struct f {
	float f[8];
};

void ftest(struct f arg1, long double arg2) {
}

causes

movxf.c: In function `ftest':
movxf.c:5: error: insn does not satisfy its constraints:
(insn 46 34 66 0 (set (reg:XF 134 f6)
        (reg:XF 116 r36 [ arg2 ])) 26 {*movxf_internal} (nil)
    (expr_list:REG_DEAD (reg:XF 116 r36 [ arg2 ])
        (nil)))
movxf.c:5: internal compiler error: in final_scan_insn, at final.c:2359


This is appearantly due to only the fr->gr case being handled in the movxf expander.

-- 
           Summary: ICE when long double argument arrives in general
                    register
           Product: gcc
           Version: 3.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jbeulich at novell dot com
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: ia64-*-*
  GCC host triplet: ia64-*-*
GCC target triplet: ia64-*-*


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
@ 2005-01-10 11:46 ` jbeulich at novell dot com
  2005-01-10 15:31 ` pinskia at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: jbeulich at novell dot com @ 2005-01-10 11:46 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |3.3.3 3.4.3 4.0.0


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
  2005-01-10 11:46 ` [Bug target/19357] " jbeulich at novell dot com
@ 2005-01-10 15:31 ` pinskia at gcc dot gnu dot org
  2005-01-14  4:03 ` wilson at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-01-10 15:31 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-01-10 15:31 -------
Confirmed.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
  GCC build triplet|ia64-*-*                    |
   GCC host triplet|ia64-*-*                    |
           Keywords|                            |ice-on-valid-code
   Last reconfirmed|0000-00-00 00:00:00         |2005-01-10 15:31:09
               date|                            |


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
  2005-01-10 11:46 ` [Bug target/19357] " jbeulich at novell dot com
  2005-01-10 15:31 ` pinskia at gcc dot gnu dot org
@ 2005-01-14  4:03 ` wilson at gcc dot gnu dot org
  2005-01-14  8:58 ` jbeulich at novell dot com
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: wilson at gcc dot gnu dot org @ 2005-01-14  4:03 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From wilson at gcc dot gnu dot org  2005-01-14 04:02 -------
The given testcase fails only without optimization.  It fails because we end up
with an unhandled XFmode move from a general reg to a MEM.  A little more
interesting testcase is to modify testf to return the long double.  This fails
with and without optimization.  Without optimization is the same as before. 
With optimization, we have an unhandled XFmode from a general reg to a pseudo,
which is later allocated to the FP return value register.
                                                                                
So the movxf expander needs to handle a general register source when the
destination can be either a mem or a pseudo.
                                                                                
I attached my modified testcase, and a patch that works for both the optimized
and unoptimized cases.
                                                                                
This is as yet untested, as my IA-64 machine is busy running tests for other PRs.


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |wilson at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2005-01-10 15:31:09         |2005-01-14 04:02:58
               date|                            |


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
                   ` (2 preceding siblings ...)
  2005-01-14  4:03 ` wilson at gcc dot gnu dot org
@ 2005-01-14  8:58 ` jbeulich at novell dot com
  2005-01-14 21:52 ` wilson at tuliptree dot org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: jbeulich at novell dot com @ 2005-01-14  8:58 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From jbeulich at novell dot com  2005-01-14 08:58 -------
Isn't the MEM case moving things in the wrong direction? If so, and since I
tried to fix this myself before submitting the bug, simply swapping the operands
of emit_move_insn doesn't seem to work (made the compiler die when optimizing
for me).

-- 


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
                   ` (3 preceding siblings ...)
  2005-01-14  8:58 ` jbeulich at novell dot com
@ 2005-01-14 21:52 ` wilson at tuliptree dot org
  2005-01-17  8:06 ` jbeulich at novell dot com
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: wilson at tuliptree dot org @ 2005-01-14 21:52 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From wilson at tuliptree dot org  2005-01-14 21:51 -------
Subject: Re:  ICE when long double argument arrives in
	general register

On Fri, 2005-01-14 at 00:58, jbeulich at novell dot com wrote:
> ------- Additional Comments From jbeulich at novell dot com  2005-01-14 08:58 -------
> Isn't the MEM case moving things in the wrong direction? If so, and since I
> tried to fix this myself before submitting the bug, simply swapping the operands
> of emit_move_insn doesn't seem to work (made the compiler die when optimizing
> for me).

Yes.  Stupid mistake on my part.  I switched the operands and everything
seems OK.

What exactly was the problem you saw?  I don't see a problem with my
fixed patch, with or without optimization, with my testcase.  Was the
problem with your own patch?  Maybe there was some other problem with
your patch.  If the problem is with my patch, then I need to know how to
reproduce it in order to fix it.



-- 


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
                   ` (4 preceding siblings ...)
  2005-01-14 21:52 ` wilson at tuliptree dot org
@ 2005-01-17  8:06 ` jbeulich at novell dot com
  2005-01-18  3:51 ` cvs-commit at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: jbeulich at novell dot com @ 2005-01-17  8:06 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From jbeulich at novell dot com  2005-01-17 08:06 -------
No, it was with my attempt to fix this. As I further thought about it, maybe the
whole difference was that I didn't do the TImode conversion prior to the spill...

-- 


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
                   ` (5 preceding siblings ...)
  2005-01-17  8:06 ` jbeulich at novell dot com
@ 2005-01-18  3:51 ` cvs-commit at gcc dot gnu dot org
  2005-01-18  4:20 ` wilson at gcc dot gnu dot org
  2005-04-20  2:01 ` pinskia at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-01-18  3:51 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-01-18 03:51 -------
Subject: Bug 19357

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	wilson@gcc.gnu.org	2005-01-18 03:51:06

Modified files:
	gcc            : ChangeLog 
	gcc/config/ia64: ia64.md 
	gcc/testsuite  : ChangeLog 
Added files:
	gcc/testsuite/gcc.c-torture/compile: pr19357.c 

Log message:
	Fix ICE with long double after float HFA.
	PR target/19357
	* config/ia64/ia64.md (movxf): Handle general register source.  Adjust
	comment to document why.
	* gcc.c-torture/compile/pr19357.c: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.7162&r2=2.7163
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/ia64.md.diff?cvsroot=gcc&r1=1.142&r2=1.143
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4898&r2=1.4899
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/pr19357.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
                   ` (6 preceding siblings ...)
  2005-01-18  3:51 ` cvs-commit at gcc dot gnu dot org
@ 2005-01-18  4:20 ` wilson at gcc dot gnu dot org
  2005-04-20  2:01 ` pinskia at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: wilson at gcc dot gnu dot org @ 2005-01-18  4:20 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From wilson at gcc dot gnu dot org  2005-01-18 04:20 -------
Fixed on mainline, testcase added.

This fails in gcc-3.0, and presumably also all other releases, and hence is not
a regression, and thus not eligible for the gcc-3.3 and gcc-3.4 branches, so I
am closing as fixed.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
      Known to fail|3.3.3 3.4.3 4.0.0           |3.3.3 3.4.3
      Known to work|                            |4.0.0
         Resolution|                            |FIXED


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


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

* [Bug target/19357] ICE when long double argument arrives in general register
  2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
                   ` (7 preceding siblings ...)
  2005-01-18  4:20 ` wilson at gcc dot gnu dot org
@ 2005-04-20  2:01 ` pinskia at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-04-20  2:01 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.0.0


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


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

end of thread, other threads:[~2005-04-20  2:01 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-01-10 11:46 [Bug target/19357] New: ICE when long double argument arrives in general register jbeulich at novell dot com
2005-01-10 11:46 ` [Bug target/19357] " jbeulich at novell dot com
2005-01-10 15:31 ` pinskia at gcc dot gnu dot org
2005-01-14  4:03 ` wilson at gcc dot gnu dot org
2005-01-14  8:58 ` jbeulich at novell dot com
2005-01-14 21:52 ` wilson at tuliptree dot org
2005-01-17  8:06 ` jbeulich at novell dot com
2005-01-18  3:51 ` cvs-commit at gcc dot gnu dot org
2005-01-18  4:20 ` wilson at gcc dot gnu dot org
2005-04-20  2:01 ` 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).