public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/44632]  New: [4.4/4.5/4.6 regression] wrong code for complex division
@ 2010-06-22 13:58 doko at ubuntu dot com
  2010-06-22 14:30 ` [Bug target/44632] " rguenth at gcc dot gnu dot org
                   ` (23 more replies)
  0 siblings, 24 replies; 25+ messages in thread
From: doko at ubuntu dot com @ 2010-06-22 13:58 UTC (permalink / raw)
  To: gcc-bugs

[forwarded from http://bugs.debian.org/585925]

seen with current 4.5 and 4.5 branches, and trunk

g++-4.4 miscompiles complex division:

(sid)jwilk@paer:~$ cat test.cxx 
#include <complex>
#include <iostream>

void f(std::complex<double> x)
{
     std::cout << x << std::endl;
     x = 1.0 / x;
     std::cout << x << std::endl;
}

int main()
{
     f(2.0);
}

(sid)jwilk@paer:~$ g++-4.3 -Wall test.cxx && ./a.out
(2,0)
(0.5,0)

(sid)jwilk@paer:~$ g++-4.4 -Wall test.cxx && ./a.out
(2,0)
(1,0)


-- 
           Summary: [4.4/4.5/4.6 regression] wrong code for complex division
           Product: gcc
           Version: 4.4.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: doko at ubuntu dot com
GCC target triplet: hppa-linux-gnu


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


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

* [Bug target/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
@ 2010-06-22 14:30 ` rguenth at gcc dot gnu dot org
  2010-06-24 22:03 ` rguenth at gcc dot gnu dot org
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-06-22 14:30 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

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


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


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

* [Bug target/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
  2010-06-22 14:30 ` [Bug target/44632] " rguenth at gcc dot gnu dot org
@ 2010-06-24 22:03 ` rguenth at gcc dot gnu dot org
  2010-08-07 19:14 ` danglin at gcc dot gnu dot org
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-06-24 22:03 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4


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


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

* [Bug target/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
  2010-06-22 14:30 ` [Bug target/44632] " rguenth at gcc dot gnu dot org
  2010-06-24 22:03 ` rguenth at gcc dot gnu dot org
@ 2010-08-07 19:14 ` danglin at gcc dot gnu dot org
  2010-08-07 19:33 ` danglin at gcc dot gnu dot org
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-07 19:14 UTC (permalink / raw)
  To: gcc-bugs



-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-08-07 19:13:51
               date|                            |


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


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

* [Bug target/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (2 preceding siblings ...)
  2010-08-07 19:14 ` danglin at gcc dot gnu dot org
@ 2010-08-07 19:33 ` danglin at gcc dot gnu dot org
  2010-08-07 19:52 ` [Bug tree-optimization/44632] " danglin at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-07 19:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from danglin at gcc dot gnu dot org  2010-08-07 19:32 -------
Starting program: /home/dave/gnu/gcc-4.6/objdir/gcc/testsuite/g++/test 
(2,0)

Breakpoint 2, 0x000109f8 in f (x=...) at test.cxx:12
12           x = 1.0 / x;
(gdb) step
std::operator/<double> (__x=@0xc0246388, __y=...)
    at /home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/complex:429
429           complex<_Tp> __r = __x;
(gdb) p &__y
$15 = (const std::complex<double> *) 0xc0246390
(gdb) p &__r
$16 = (std::complex<double> *) 0xc0246390
(gdb) p __y
$17 = (const std::complex<double> &) @0xc0246390: {_M_value = 2 + 0 * I}
(gdb) p __r
$18 = {_M_value = 2 + 0 * I}
(gdb) step
std::complex<double>::complex (this=0xc0246390, __r=1, __i=0)
    at /home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/complex:1172
1172            __real__ _M_value = __r;
(gdb) 
1173            __imag__ _M_value = __i;
(gdb) 
1174          }
(gdb) 
std::operator/<double> (__x=@0xc0246388, __y=...)
    at /home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/complex:430
430           __r /= __y;
(gdb) p __y
$19 = (const std::complex<double> &) @0xc0246390: {_M_value = 1 + 0 * I}
(gdb) p __r
$20 = {_M_value = 1 + 0 * I}

The problem is __r and __y share the same location.


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (3 preceding siblings ...)
  2010-08-07 19:33 ` danglin at gcc dot gnu dot org
@ 2010-08-07 19:52 ` danglin at gcc dot gnu dot org
  2010-08-07 19:58 ` danglin at gcc dot gnu dot org
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-07 19:52 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from danglin at gcc dot gnu dot org  2010-08-07 19:52 -------
With slightly modified test,

#include <complex>
#include <iostream>

void g(std::complex<double> x)
{
     std::cout << x << std::endl;
}

void f(std::complex<double> x)
{
     g (x);
     x = 1.0 / x;
     g (x);
}

int main()
{
     f(2.0);
}

it appears RTL is wrong at expansion:

;; x.1 = std::operator/<double> (&D.24646, &x.1); [return slot optimization]

(insn 18 17 19 (set (reg:SI 102)
        (plus:SI (reg/f:SI 90 virtual-stack-vars)
            (const_int 8 [0x8]))) test.cxx:12 -1
     (nil))
(insn 19 18 20 (set (reg:SI 103)
        (plus:SI (reg/f:SI 90 virtual-stack-vars)
            (const_int 8 [0x8]))) test.cxx:12 -1
     (nil))

(insn 20 19 21 (set (reg:SI 28 %r28)
        (reg:SI 103)) test.cxx:12 -1
     (nil))

(insn 21 20 22 (set (reg:SI 26 %r26)
        (reg/f:SI 90 virtual-stack-vars)) test.cxx:12 -1
     (nil))

(insn 22 21 23 (set (reg:SI 25 %r25)
        (reg:SI 102)) test.cxx:12 -1
     (nil))

(call_insn 23 22 0 (parallel [
            (call (mem:SI (symbol_ref/v/i:SI
("@_ZStdvIdESt7complexIT_ERKS1_RKS2_") [flags 0x1]  <function_decl 0x40f5d600
operator/>) [0 S4 A32])
                (const_int 16 [0x10]))
            (clobber (reg:SI 1 %r1))
            (clobber (reg:SI 2 %r2))
            (use (const_int 0 [0]))
        ]) test.cxx:12 -1
     (nil)
    (expr_list:REG_DEP_TRUE (use (reg:SI 25 %r25))
        (expr_list:REG_DEP_TRUE (use (reg:SI 26 %r26))
            (expr_list:REG_DEP_TRUE (use (reg:SI 28 %r28))
                (nil)))))


-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |tree-optimization


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (4 preceding siblings ...)
  2010-08-07 19:52 ` [Bug tree-optimization/44632] " danglin at gcc dot gnu dot org
@ 2010-08-07 19:58 ` danglin at gcc dot gnu dot org
  2010-08-07 19:59 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-07 19:58 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from danglin at gcc dot gnu dot org  2010-08-07 19:58 -------
Richard do you know what's wrong?  I think the issue is the return slot
optimization.


-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu dot
                   |                            |org


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (5 preceding siblings ...)
  2010-08-07 19:58 ` danglin at gcc dot gnu dot org
@ 2010-08-07 19:59 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-07 20:37 ` rguenth at gcc dot gnu dot org
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-07 19:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-07 19:59 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong
        code for complex division

Attached .ii.


------- Comment #5 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-07 19:59 -------
Created an attachment (id=21432)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21432&action=view)


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (6 preceding siblings ...)
  2010-08-07 19:59 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-07 20:37 ` rguenth at gcc dot gnu dot org
  2010-08-07 20:39 ` rguenth at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-07 20:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from rguenth at gcc dot gnu dot org  2010-08-07 20:36 -------
The argument should have prevented return slot optimization here.

;; x.1 = std::operator/<double> (&D.24646, &x.1); [return slot optimization]

Isn't this fixed on trunk since

2010-07-26  Richard Guenther  <rguenther@suse.de>

        PR tree-optimization/43784
        * tree-nrv.c (dest_safe_for_nrv_p): It's not safe to NRV
        if the destination is used by the call.

?  Well, I'll have a look.


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (7 preceding siblings ...)
  2010-08-07 20:37 ` rguenth at gcc dot gnu dot org
@ 2010-08-07 20:39 ` rguenth at gcc dot gnu dot org
  2010-08-07 20:40 ` rguenth at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-07 20:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from rguenth at gcc dot gnu dot org  2010-08-07 20:39 -------
Btw, does this only happen at -O0?  If you adjust the testcase like

#include <complex>
#include <iostream>

void __attribute__((noinline))
g(std::complex<double> x)
{
  std::cout << x << std::endl;
}

void __attribute__((noinline))
f(std::complex<double> x)
{
  g (x);
  x = 1.0 / x;
  g (x);
}

int main()
{
  f(2.0);
}


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (8 preceding siblings ...)
  2010-08-07 20:39 ` rguenth at gcc dot gnu dot org
@ 2010-08-07 20:40 ` rguenth at gcc dot gnu dot org
  2010-08-07 20:57 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-07 20:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from rguenth at gcc dot gnu dot org  2010-08-07 20:40 -------
On i?86-linux I see

<bb 2>:
  g (x);
  D.24518 = 1.0e+0;
  x = std::operator/<double> (&D.24518, &x);
  g (x);

so no return-slot optimization.  So I guess it has something to do with
the callee-copy thing of the x argument to this function.  Building a cross ...


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (9 preceding siblings ...)
  2010-08-07 20:40 ` rguenth at gcc dot gnu dot org
@ 2010-08-07 20:57 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-07 21:00 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-07 20:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-07 20:57 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong code for complex division

> ;; x.1 = std::operator/<double> (&D.24646, &x.1); [return slot optimization]
> 
> Isn't this fixed on trunk since
> 
> 2010-07-26  Richard Guenther  <rguenther@suse.de>
> 
>         PR tree-optimization/43784
>         * tree-nrv.c (dest_safe_for_nrv_p): It's not safe to NRV
>         if the destination is used by the call.

Still present on trunk today.


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (10 preceding siblings ...)
  2010-08-07 20:57 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-07 21:00 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-07 21:04 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-07 21:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-07 21:00 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong code for complex division

> Btw, does this only happen at -O0?  If you adjust the testcase like

No, it also fails at -O2 where the entire computation is inline.

Dave


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (11 preceding siblings ...)
  2010-08-07 21:00 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-07 21:04 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-07 21:16 ` rguenth at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-07 21:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-07 21:04 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong code for complex division

> On i?86-linux I see
> 
> <bb 2>:
>   g (x);
>   D.24518 = 1.0e+0;
>   x = std::operator/<double> (&D.24518, &x);
>   g (x);
> 
> so no return-slot optimization.  So I guess it has something to do with
> the callee-copy thing of the x argument to this function.  Building a cross ...

On hppa-linux, I see at -O0

  x.1 = x;
  g (x.1);
  D.24646 = 1.0e+0;
  x.1 = std::operator/<double> (&D.24646, &x.1); [return slot optimization]
  g (x.1);


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (12 preceding siblings ...)
  2010-08-07 21:04 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-07 21:16 ` rguenth at gcc dot gnu dot org
  2010-08-07 21:36 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-07 21:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from rguenth at gcc dot gnu dot org  2010-08-07 21:16 -------
Ok, I see when gimplifying the call that we mark it for NRV because while
x doesn't have it's address taken it's value-expr has and we didn't replace
it at that point but we check

4262                  else if (!is_gimple_non_addressable (*to_p))
4271                    use_target = true;

so I think this is a bug that it doesn't mark the original parameter
decl as address-taken which happens here (function.c:gimplify_parameters):

                  /* If PARM was addressable, move that flag over
                     to the local copy, as its address will be taken,
                     not the PARMs.  */
                  if (TREE_ADDRESSABLE (parm))
                    {
                      TREE_ADDRESSABLE (parm) = 0;
                      TREE_ADDRESSABLE (local) = 1;
                    }

We should defer clearing the param addressable flag to update_address_taken.

So the following should fix this.  Can you bootstrap/test this?

Index: gcc/function.c
===================================================================
--- gcc/function.c      (revision 162781)
+++ gcc/function.c      (working copy)
@@ -3423,12 +3423,10 @@ gimplify_parameters (void)
                  DECL_IGNORED_P (local) = 0;
                  /* If PARM was addressable, move that flag over
                     to the local copy, as its address will be taken,
-                    not the PARMs.  */
+                    not the PARMs.  Keep the parms address taken
+                    as we'll query that flag during gimplification.  */
                  if (TREE_ADDRESSABLE (parm))
-                   {
-                     TREE_ADDRESSABLE (parm) = 0;
-                     TREE_ADDRESSABLE (local) = 1;
-                   }
+                   TREE_ADDRESSABLE (local) = 1;
                }
              else
                {

(patch to the 4.5 branch, but should apply to the trunk as well).


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (13 preceding siblings ...)
  2010-08-07 21:16 ` rguenth at gcc dot gnu dot org
@ 2010-08-07 21:36 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-09 11:35 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-07 21:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-07 21:36 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong code for complex division

> So the following should fix this.  Can you bootstrap/test this?

Testing.


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (14 preceding siblings ...)
  2010-08-07 21:36 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-09 11:35 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-09 11:37 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-09 11:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-09 11:35 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong
        code for complex division

On Sat, 07 Aug 2010, rguenth at gcc dot gnu dot org wrote:

> So the following should fix this.  Can you bootstrap/test this?

Test results are here:
http://gcc.gnu.org/ml/gcc-testresults/2010-08/msg00900.html

The following might be a regression:
Executing on host: /home/dave/gnu/gcc/objdir/./gcc/g++ -shared-libgcc
-B/home/dave/gnu/gcc/objdir/./gcc -nostdinc++
-L/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/src
-L/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/src/.libs
-B/home/dave/opt/gnu/gcc/gcc-4.6.0/hppa-linux/bin/
-B/home/dave/opt/gnu/gcc/gcc-4.6.0/hppa-linux/lib/ -isystem
/home/dave/opt/gnu/gcc/gcc-4.6.0/hppa-linux/include -isystem
/home/dave/opt/gnu/gcc/gcc-4.6.0/hppa-linux/sys-include
-B/home/dave/gnu/gcc/objdir/hppa-linux/./libstdc++-v3/src/.libs -g -O2
-D_GLIBCXX_ASSERT -fmessage-length=0 -ffunction-sections -fdata-sections -g -O2
-D_GNU_SOURCE -g -O2 -D_GNU_SOURCE -DLOCALEDIR="." -nostdinc++
-I/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/hppa-linux
-I/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include
-I/home/dave/gnu/gcc/gcc/libstdc++-v3/libsupc++
-I/home/dave/gnu/gcc/gcc/libstdc++-v3/include/backward
-I/home/dave/gnu/gcc/gcc/libstdc++-v3/testsuite/util
/home/dave/gnu/gcc/gcc/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
   -include bits/stdc++.h ./libtestc++.a -Wl,--gc-sections  -lm   -o
./check_nan.exe    (timeout = 600)
In file included from
/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/tr1/cmath:95:0,      
          from
/home/dave/gnu/gcc/gcc/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc:25:/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/tr1/poly_laguerre.tcc:
In function '_Tp std::tr1::__detail::__poly_laguerre_large_n(unsigned int,
_Tpa, _Tp) [with _Tpa = unsigned int, _Tp =
float]':/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/tr1/poly_laguerre.tcc:106:5:
internal compiler error: in simplify_subreg, at simplify-rtx.c:5129


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (15 preceding siblings ...)
  2010-08-09 11:35 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-09 11:37 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-09 11:44 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-09 11:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-09 11:37 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong

> 
> On Sat, 07 Aug 2010, rguenth at gcc dot gnu dot org wrote:
> 
> > So the following should fix this.  Can you bootstrap/test this?

Oh, I forgot to say test.cxx testcase is fixed.


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (16 preceding siblings ...)
  2010-08-09 11:37 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-09 11:44 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-08-09 11:51 ` rguenther at suse dot de
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-08-09 11:44 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-09 11:44 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong

> The following might be a regression:
> Executing on host: /home/dave/gnu/gcc/objdir/./gcc/g++ -shared-libgcc -B/ho=
> me/dave/gnu/gcc/objdir/./gcc -nostdinc++ -L/home/dave/gnu/gcc/objdir/hppa-l=
> inux/libstdc++-v3/src -L/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/s=
> rc/.libs -B/home/dave/opt/gnu/gcc/gcc-4.6.0/hppa-linux/bin/ -B/home/dave/op=
> t/gnu/gcc/gcc-4.6.0/hppa-linux/lib/ -isystem /home/dave/opt/gnu/gcc/gcc-4.6=
> =2E0/hppa-linux/include -isystem /home/dave/opt/gnu/gcc/gcc-4.6.0/hppa-linu=
> x/sys-include -B/home/dave/gnu/gcc/objdir/hppa-linux/./libstdc++-v3/src/.li=
> bs -g -O2 -D_GLIBCXX_ASSERT -fmessage-length=3D0 -ffunction-sections -fdata=
> -sections -g -O2 -D_GNU_SOURCE -g -O2 -D_GNU_SOURCE -DLOCALEDIR=3D"." -nost=
> dinc++ -I/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/hppa-lin=
> ux -I/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include -I/home/dave=
> /gnu/gcc/gcc/libstdc++-v3/libsupc++ -I/home/dave/gnu/gcc/gcc/libstdc++-v3/i=
> nclude/backward -I/home/dave/gnu/gcc/gcc/libstdc++-v3/testsuite/util /home/=
> dave/gnu/gcc/gcc/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_=
> functions/01_assoc_laguerre/check_nan.cc    -include bits/stdc++.h ./libtes=
> tc++.a -Wl,--gc-sections  -lm   -o ./check_nan.exe    (timeout =3D 600)
> In file included from /home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/inc=
> lude/tr1/cmath:95:0,                 from /home/dave/gnu/gcc/gcc/libstdc++-=
> v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre=
> /check_nan.cc:25:/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/=
> tr1/poly_laguerre.tcc: In function '_Tp std::tr1::__detail::__poly_laguerre=
> _large_n(unsigned int, _Tpa, _Tp) [with _Tpa =3D unsigned int, _Tp =3D floa=
> t]':/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/tr1/poly_lagu=
> erre.tcc:106:5: internal compiler error: in simplify_subreg, at simplify-rt=
> x.c:5129

No, it is present without change.

Should the fix be backported?


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (17 preceding siblings ...)
  2010-08-09 11:44 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-08-09 11:51 ` rguenther at suse dot de
  2010-08-09 13:18 ` rguenth at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenther at suse dot de @ 2010-08-09 11:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from rguenther at suse dot de  2010-08-09 11:51 -------
Subject: Re:  [4.4/4.5/4.6 regression] wrong
 code for complex division

On Mon, 9 Aug 2010, dave at hiauly1 dot hia dot nrc dot ca wrote:

> ------- Comment #16 from dave at hiauly1 dot hia dot nrc dot ca  2010-08-09 11:44 -------
> Subject: Re:  [4.4/4.5/4.6 regression] wrong
> 
> > t]':/home/dave/gnu/gcc/objdir/hppa-linux/libstdc++-v3/include/tr1/poly_lagu=
> > erre.tcc:106:5: internal compiler error: in simplify_subreg, at simplify-rt=
> > x.c:5129
> 
> No, it is present without change.
> 
> Should the fix be backported?

Probably yes.  I'm testing the fix on x86_64-linux now together with
a testcase and will apply it to trunk.  If you can do a bootstrap
and regtest on the 4.4 branch as well that would be nice.

Thx.


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5/4.6 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (18 preceding siblings ...)
  2010-08-09 11:51 ` rguenther at suse dot de
@ 2010-08-09 13:18 ` rguenth at gcc dot gnu dot org
  2010-08-09 13:31 ` [Bug tree-optimization/44632] [4.4/4.5 " rguenth at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-09 13:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from rguenth at gcc dot gnu dot org  2010-08-09 13:18 -------
Subject: Bug 44632

Author: rguenth
Date: Mon Aug  9 13:18:08 2010
New Revision: 163031

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163031
Log:
2010-08-09  Richard Guenther  <rguenther@suse.de>

        PR middle-end/44632
        * function.c (gimplify_parameters): Do not clear addressable
        bit of the original parameter.

        * g++.dg/opt/nrv17.C: New testcase.

Added:
    trunk/gcc/testsuite/g++.dg/opt/nrv17.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/function.c
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (19 preceding siblings ...)
  2010-08-09 13:18 ` rguenth at gcc dot gnu dot org
@ 2010-08-09 13:31 ` rguenth at gcc dot gnu dot org
  2010-08-16 20:18 ` danglin at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 25+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-08-09 13:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from rguenth at gcc dot gnu dot org  2010-08-09 13:31 -------
Backports are pre-approved if they pass bootstrap & testing.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|4.4.4 4.5.0 4.6.0           |4.4.4 4.5.0
      Known to work|4.3.5                       |4.3.5 4.6.0
            Summary|[4.4/4.5/4.6 regression]    |[4.4/4.5 regression] wrong
                   |wrong code for complex      |code for complex division
                   |division                    |


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


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

* [Bug tree-optimization/44632] [4.4/4.5 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (20 preceding siblings ...)
  2010-08-09 13:31 ` [Bug tree-optimization/44632] [4.4/4.5 " rguenth at gcc dot gnu dot org
@ 2010-08-16 20:18 ` danglin at gcc dot gnu dot org
  2010-08-16 20:25 ` danglin at gcc dot gnu dot org
  2010-08-16 20:27 ` danglin at gcc dot gnu dot org
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-16 20:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from danglin at gcc dot gnu dot org  2010-08-16 20:18 -------
Subject: Bug 44632

Author: danglin
Date: Mon Aug 16 20:18:08 2010
New Revision: 163284

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163284
Log:
        Backport from mainline:
        2010-08-09  Richard Guenther  <rguenther@suse.de>

        PR middle-end/44632
        * function.c (gimplify_parameters): Do not clear addressable
        bit of the original parameter.


Modified:
    branches/gcc-4_5-branch/gcc/ChangeLog
    branches/gcc-4_5-branch/gcc/function.c


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (21 preceding siblings ...)
  2010-08-16 20:18 ` danglin at gcc dot gnu dot org
@ 2010-08-16 20:25 ` danglin at gcc dot gnu dot org
  2010-08-16 20:27 ` danglin at gcc dot gnu dot org
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-16 20:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from danglin at gcc dot gnu dot org  2010-08-16 20:25 -------
Subject: Bug 44632

Author: danglin
Date: Mon Aug 16 20:24:54 2010
New Revision: 163285

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163285
Log:
        Backport from mainline:
        2010-08-09  Richard Guenther  <rguenther@suse.de>

        PR middle-end/44632
        * function.c (gimplify_parameters): Do not clear addressable
        bit of the original parameter.


Modified:
    branches/gcc-4_4-branch/gcc/ChangeLog
    branches/gcc-4_4-branch/gcc/function.c


-- 


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


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

* [Bug tree-optimization/44632] [4.4/4.5 regression] wrong code for complex division
  2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
                   ` (22 preceding siblings ...)
  2010-08-16 20:25 ` danglin at gcc dot gnu dot org
@ 2010-08-16 20:27 ` danglin at gcc dot gnu dot org
  23 siblings, 0 replies; 25+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-08-16 20:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #22 from danglin at gcc dot gnu dot org  2010-08-16 20:27 -------
Fixed.


-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


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


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

end of thread, other threads:[~2010-08-16 20:27 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-22 13:58 [Bug target/44632] New: [4.4/4.5/4.6 regression] wrong code for complex division doko at ubuntu dot com
2010-06-22 14:30 ` [Bug target/44632] " rguenth at gcc dot gnu dot org
2010-06-24 22:03 ` rguenth at gcc dot gnu dot org
2010-08-07 19:14 ` danglin at gcc dot gnu dot org
2010-08-07 19:33 ` danglin at gcc dot gnu dot org
2010-08-07 19:52 ` [Bug tree-optimization/44632] " danglin at gcc dot gnu dot org
2010-08-07 19:58 ` danglin at gcc dot gnu dot org
2010-08-07 19:59 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-07 20:37 ` rguenth at gcc dot gnu dot org
2010-08-07 20:39 ` rguenth at gcc dot gnu dot org
2010-08-07 20:40 ` rguenth at gcc dot gnu dot org
2010-08-07 20:57 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-07 21:00 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-07 21:04 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-07 21:16 ` rguenth at gcc dot gnu dot org
2010-08-07 21:36 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-09 11:35 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-09 11:37 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-09 11:44 ` dave at hiauly1 dot hia dot nrc dot ca
2010-08-09 11:51 ` rguenther at suse dot de
2010-08-09 13:18 ` rguenth at gcc dot gnu dot org
2010-08-09 13:31 ` [Bug tree-optimization/44632] [4.4/4.5 " rguenth at gcc dot gnu dot org
2010-08-16 20:18 ` danglin at gcc dot gnu dot org
2010-08-16 20:25 ` danglin at gcc dot gnu dot org
2010-08-16 20:27 ` danglin 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).