public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/43722]  New: ICE when passing NEON registers using const refrences
@ 2010-04-12  3:10 liranuna at gmail dot com
  2010-04-12  3:24 ` [Bug target/43722] " liranuna at gmail dot com
                   ` (10 more replies)
  0 siblings, 11 replies; 13+ messages in thread
From: liranuna at gmail dot com @ 2010-04-12  3:10 UTC (permalink / raw)
  To: gcc-bugs

Giving GCC 4.4.3 the following code with the arguments "-O1 -mcpu=cortex-a8
-mfpu=neon -mfloat-abi=softfp": 

############################################################

#include <stdio.h>
#include <arm_neon.h>

void printv_f32(const float32x4_t &v)
{
        printf("%f\n", vgetq_lane_f32(v, 0));
}

int main()
{
        float32x4_t v = {0.0, 1.0f, 2.0f, 3.0f};

        printv_f32(v);

        return 0;
}

############################################################

Results into an ICE:

/home/liranuna/Projects/mathlib_md/source/main.cpp: In function 'int main()':
/home/liranuna/Projects/mathlib_md/source/main.cpp:21: error: insn does not
satisfy its constraints:
(insn 25 5 7 2 /home/liranuna/Projects/mathlib_md/source/main.cpp:11 (set
(mem/c/i:V4SF (pre_dec:SI (reg/f:SI 0 r0 [134])) [0 v+0 S16 A64])
        (reg:V4SF 95 d16)) 710 {*neon_movv4sf} (expr_list:REG_INC (reg/f:SI 0
r0 [134])
        (nil)))
/home/liranuna/Projects/mathlib_md/source/main.cpp:21: internal compiler error:
in reload_cse_simplify_operands, at postreload.c:396
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


-- 
           Summary: ICE when passing NEON registers using const refrences
           Product: gcc
           Version: 4.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: liranuna at gmail dot com
  GCC host triplet: x86_64-linux-gnu
GCC target triplet: arm-linux-gnueabi


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
@ 2010-04-12  3:24 ` liranuna at gmail dot com
  2010-04-12  8:48 ` mikpe at it dot uu dot se
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: liranuna at gmail dot com @ 2010-04-12  3:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from liranuna at gmail dot com  2010-04-12 03:24 -------
I would like to add that changing

    void printv_f32(const float32x4_t &v)

into:

    void printv_f32(float32x4_t v)

makes the problem go away, but the generated code is suboptimal.


-- 


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
  2010-04-12  3:24 ` [Bug target/43722] " liranuna at gmail dot com
@ 2010-04-12  8:48 ` mikpe at it dot uu dot se
  2010-04-12 10:31 ` mikpe at it dot uu dot se
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-12  8:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from mikpe at it dot uu dot se  2010-04-12 08:48 -------
The equivalent C version of this test case ICEs with 4.4.4 but works with 4.3.5
and 4.5.0-RC-20100406.


-- 

mikpe at it dot uu dot se changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mikpe at it dot uu dot se


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
  2010-04-12  3:24 ` [Bug target/43722] " liranuna at gmail dot com
  2010-04-12  8:48 ` mikpe at it dot uu dot se
@ 2010-04-12 10:31 ` mikpe at it dot uu dot se
  2010-04-12 14:18 ` mikpe at it dot uu dot se
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-12 10:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from mikpe at it dot uu dot se  2010-04-12 10:31 -------
gcc-4.5-20090514 (r147545): ICE
gcc-4.5-20090521 (r147778): no ICE

Continuing to investigate.


-- 


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (2 preceding siblings ...)
  2010-04-12 10:31 ` mikpe at it dot uu dot se
@ 2010-04-12 14:18 ` mikpe at it dot uu dot se
  2010-04-12 20:35 ` mikpe at it dot uu dot se
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-12 14:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from mikpe at it dot uu dot se  2010-04-12 14:18 -------
Appears to have been "fixed" for 4.5 by r147566, see
<http://gcc.gnu.org/ml/gcc-patches/2009-05/msg00812.html>. But that patch
doesn't change any ARM code so the issue may be still be latent in 4.5 unless
some other patch fixed it properly.


-- 


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (3 preceding siblings ...)
  2010-04-12 14:18 ` mikpe at it dot uu dot se
@ 2010-04-12 20:35 ` mikpe at it dot uu dot se
  2010-04-12 21:38 ` mikpe at it dot uu dot se
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-12 20:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from mikpe at it dot uu dot se  2010-04-12 20:35 -------
Created an attachment (id=20372)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20372&action=view)
reduced test case in plain C

Reduced test case.  This one ICEs both 4.4 and 4.3 but not 4.5.

Using the reduced test case a new bisection of trunk identified r147577 as the
fix for this bug.  r147577 added support for PRE_DEC in NEON memory operands,
which makes sense given the pre_dec in the insn that gcc complains about.

r147577 applies easily to 4.4 and eliminates the ICE.  I'll start a full
bootstrap and regression test on this combo in a few minutes.


-- 


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (4 preceding siblings ...)
  2010-04-12 20:35 ` mikpe at it dot uu dot se
@ 2010-04-12 21:38 ` mikpe at it dot uu dot se
  2010-04-13  7:43 ` liranuna at gmail dot com
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-12 21:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from mikpe at it dot uu dot se  2010-04-12 21:38 -------
Created an attachment (id=20373)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20373&action=view)
proposed 4.4 fix for PR43722

Turns out r147577 contains a few redundant changes wrt this bug.  The attached
patch backports just those bits needed to fix the bug.


-- 


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


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

* [Bug target/43722] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (5 preceding siblings ...)
  2010-04-12 21:38 ` mikpe at it dot uu dot se
@ 2010-04-13  7:43 ` liranuna at gmail dot com
  2010-04-15  9:39 ` [Bug target/43722] [4.4 only] " ramana at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: liranuna at gmail dot com @ 2010-04-13  7:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from liranuna at gmail dot com  2010-04-13 07:43 -------
Mikael's patch seems to do that trick as well as producing very nice assembly.


-- 


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


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

* [Bug target/43722] [4.4 only] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (6 preceding siblings ...)
  2010-04-13  7:43 ` liranuna at gmail dot com
@ 2010-04-15  9:39 ` ramana at gcc dot gnu dot org
  2010-04-15 13:38 ` mikpe at it dot uu dot se
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: ramana at gcc dot gnu dot org @ 2010-04-15  9:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from ramana at gcc dot gnu dot org  2010-04-15 09:39 -------
Could you submit the patch to gcc-patches@ ? If you need some help in testing
this patch let me know and I can do it for you.


-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |ice-on-valid-code
      Known to fail|                            |4.4.3
   Last reconfirmed|0000-00-00 00:00:00         |2010-04-15 09:39:24
               date|                            |
            Summary|ICE when passing NEON       |[4.4 only] ICE when passing
                   |registers using const       |NEON registers using const
                   |refrences                   |refrences
   Target Milestone|---                         |4.4.4


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


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

* [Bug target/43722] [4.4 only] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (7 preceding siblings ...)
  2010-04-15  9:39 ` [Bug target/43722] [4.4 only] " ramana at gcc dot gnu dot org
@ 2010-04-15 13:38 ` mikpe at it dot uu dot se
  2010-04-15 13:41 ` mikpe at it dot uu dot se
  2010-04-30  8:58 ` jakub at gcc dot gnu dot org
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-15 13:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from mikpe at it dot uu dot se  2010-04-15 13:37 -------
Created an attachment (id=20388)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20388&action=view)
proposed 4.3 fix for PR43722


-- 


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


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

* [Bug target/43722] [4.4 only] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (8 preceding siblings ...)
  2010-04-15 13:38 ` mikpe at it dot uu dot se
@ 2010-04-15 13:41 ` mikpe at it dot uu dot se
  2010-04-30  8:58 ` jakub at gcc dot gnu dot org
  10 siblings, 0 replies; 13+ messages in thread
From: mikpe at it dot uu dot se @ 2010-04-15 13:41 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from mikpe at it dot uu dot se  2010-04-15 13:40 -------
The proposed 4.4 patch has been posted here:
http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00885.html

Both the 4.4 and 4.3 patches have been bootstrapped and regtested on armv5tel,
but due to lack of NEON HW no NEON runtime tests have been done.


-- 


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


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

* [Bug target/43722] [4.4 only] ICE when passing NEON registers using const refrences
  2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
                   ` (9 preceding siblings ...)
  2010-04-15 13:41 ` mikpe at it dot uu dot se
@ 2010-04-30  8:58 ` jakub at gcc dot gnu dot org
  10 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu dot org @ 2010-04-30  8:58 UTC (permalink / raw)
  To: gcc-bugs



-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.4.4                       |4.4.5


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


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

* [Bug target/43722] [4.4 only] ICE when passing NEON registers using const refrences
       [not found] <bug-43722-4@http.gcc.gnu.org/bugzilla/>
@ 2010-10-01 12:09 ` jakub at gcc dot gnu.org
  0 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2010-10-01 12:09 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.4.5                       |4.4.6


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

end of thread, other threads:[~2010-10-01 12:09 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-12  3:10 [Bug target/43722] New: ICE when passing NEON registers using const refrences liranuna at gmail dot com
2010-04-12  3:24 ` [Bug target/43722] " liranuna at gmail dot com
2010-04-12  8:48 ` mikpe at it dot uu dot se
2010-04-12 10:31 ` mikpe at it dot uu dot se
2010-04-12 14:18 ` mikpe at it dot uu dot se
2010-04-12 20:35 ` mikpe at it dot uu dot se
2010-04-12 21:38 ` mikpe at it dot uu dot se
2010-04-13  7:43 ` liranuna at gmail dot com
2010-04-15  9:39 ` [Bug target/43722] [4.4 only] " ramana at gcc dot gnu dot org
2010-04-15 13:38 ` mikpe at it dot uu dot se
2010-04-15 13:41 ` mikpe at it dot uu dot se
2010-04-30  8:58 ` jakub at gcc dot gnu dot org
     [not found] <bug-43722-4@http.gcc.gnu.org/bugzilla/>
2010-10-01 12:09 ` jakub at gcc dot gnu.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).