public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations
@ 2005-03-23 21:00 fredrik dot huss at home dot se
  2005-03-23 21:11 ` [Bug middle-end/20610] " pinskia at gcc dot gnu dot org
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: fredrik dot huss at home dot se @ 2005-03-23 21:00 UTC (permalink / raw)
  To: gcc-bugs

When doing real by complex multiplications in C++ using std::complex<double>, 
the multiplication is transformed to a complex by complex multiplication, even 
though the imaginary part is zero for one of the arguments.  
  
This is similar to TR 19953, however there is still a problem even though it is 
supposed to be fixed.  
  
Here is a small test program:  
  
#include <complex>  
  
std::complex<double> a, b;  
double c;  
  
void f()  
{  
 a = b * c;  
}  
  
When compiled with "g++ -O3 -march=pentium4 -mfpmath=sse -S -c test.C", the 
following is produced (from test.s):  
  
_Z1fv:  
.LFB1857:  
 pushl %ebp  
.LCFI0:  
 movl %esp, %ebp  
.LCFI1:  
 movsd b+8, %xmm3  
 movsd b, %xmm2  
 movsd c, %xmm4  
 pxor %xmm5, %xmm5  
 movapd %xmm2, %xmm0  
 mulsd %xmm5, %xmm0  
 movapd %xmm4, %xmm1  
 mulsd %xmm3, %xmm1  
 addsd %xmm1, %xmm0  
 movsd %xmm0, a+8  
 mulsd %xmm4, %xmm2  
 mulsd %xmm5, %xmm3  
 subsd %xmm3, %xmm2  
 movsd %xmm2, a  
 popl %ebp  
 ret  
  
I.e, the real value c is still converted to a complex value and a full 
multiplication is done.  
  
I'm using the following version of gcc:  
  
Using built-in specs.  
Target: i686-pc-linux-gnu  
Configured with: ../gcc-4.0-20050312/configure --prefix=/home/fredrik/gcc  
--enable-languages=c,c++  
Thread model: posix  
gcc version 4.0.0 20050312 (prerelease)

-- 
           Summary: Real by complex multiplications perform unnecessary
                    operations
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: fredrik dot huss at home dot se
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
@ 2005-03-23 21:11 ` pinskia at gcc dot gnu dot org
  2005-03-24  0:19 ` pcarlini at suse dot de
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-03-23 21:11 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-23 21:11 -------
Because C99 is different from C++.

-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
  2005-03-23 21:11 ` [Bug middle-end/20610] " pinskia at gcc dot gnu dot org
@ 2005-03-24  0:19 ` pcarlini at suse dot de
  2005-03-24  0:26 ` pcarlini at suse dot de
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24  0:19 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 00:19 -------
But, isn't 19953 about -ffast-math? Or you really want the same code *without*
that switch?!? We are talking about completely different issues, IMHO.

-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
  2005-03-23 21:11 ` [Bug middle-end/20610] " pinskia at gcc dot gnu dot org
  2005-03-24  0:19 ` pcarlini at suse dot de
@ 2005-03-24  0:26 ` pcarlini at suse dot de
  2005-03-24  1:11 ` pcarlini at suse dot de
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24  0:26 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 00:26 -------
For concreteness, this is what I get (with 4.0.0 20050321) if I add
-ffast-math to your switches, seems not so bad, first blush:

_Z1fv:
.LFB1939:
        pushl   %ebp
.LCFI0:
        movl    %esp, %ebp
.LCFI1:
        movsd   c, %xmm0
        movsd   b, %xmm1
        mulsd   %xmm0, %xmm1
        mulsd   b+8, %xmm0
        movsd   %xmm0, a+8
        movsd   %xmm1, a
        popl    %ebp
        ret

-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (2 preceding siblings ...)
  2005-03-24  0:26 ` pcarlini at suse dot de
@ 2005-03-24  1:11 ` pcarlini at suse dot de
  2005-03-24  9:21 ` fredrik dot huss at home dot se
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24  1:11 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pcarlini at suse dot de


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (3 preceding siblings ...)
  2005-03-24  1:11 ` pcarlini at suse dot de
@ 2005-03-24  9:21 ` fredrik dot huss at home dot se
  2005-03-24  9:28 ` pcarlini at suse dot de
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: fredrik dot huss at home dot se @ 2005-03-24  9:21 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From fredrik dot huss at home dot se  2005-03-24 09:21 -------
Thanks for looking into this!

Yes, I was meaning when -ffast-math is NOT used, so maybe this is completely 
unrelated. But I was thinking that even without -ffast-math, this should not 
require a full complex multiplication.

I looked in the C++ library, and the multiplication is implemented as

  template<typename _Tp>
    inline complex<_Tp>
    operator*(const complex<_Tp>& __x, const _Tp& __y)
    {
      complex<_Tp> __r = __x;
      __r *= __y;
      return __r;
    }

where operator*=() is implemented as

  inline complex<double>&
  complex<double>::operator*=(double __d)
  {
    _M_value *= __d;
    return *this;
  }

The typedef _M_value is defined as __complex__ double. So it seems that the 
multiplication is converted to a full complex multiplication within the 
compiler.

For comparison, here is the generic version of operator*()

  // 26.2.5/5
  template<typename _Tp>
    complex<_Tp>&
    complex<_Tp>::operator*=(const _Tp& __t)
    {
      _M_real *= __t;
      _M_imag *= __t;
      return *this;
    }

Here, the multiplication is performed separately for the real and imaginary 
parts.

It would be nice if the multiplication worked like this also for 
complex<double>, even without -ffast-math. Or, is there something in the 
standard which would disallow this?


-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (4 preceding siblings ...)
  2005-03-24  9:21 ` fredrik dot huss at home dot se
@ 2005-03-24  9:28 ` pcarlini at suse dot de
  2005-03-24  9:34 ` pcarlini at suse dot de
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24  9:28 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 09:28 -------
> It would be nice if the multiplication worked like this also for 
> complex<double>, even without -ffast-math. Or, is there something in the 
> standard which would disallow this?

I don't think there is. But, AFAIK, this must be fixed in the compiler, not
in the library: i.e., if you try changing operator*(const complex<_Tp>&,
const _Tp&) to perform explicitly two separate real multiplications, nothing
really changes because the right member is converted anyway to a complex.
Therefore, the middle-end categorization is correct.

-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (5 preceding siblings ...)
  2005-03-24  9:28 ` pcarlini at suse dot de
@ 2005-03-24  9:34 ` pcarlini at suse dot de
  2005-03-24  9:55 ` pcarlini at suse dot de
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24  9:34 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 09:33 -------
Side note: here we are talking about the specializations for real/double/long
double, therefore no _M_real but __real__ _M_value and so on. In this case we
rely on the compiler to expand the operations using to builtin support for
complex types.

-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (6 preceding siblings ...)
  2005-03-24  9:34 ` pcarlini at suse dot de
@ 2005-03-24  9:55 ` pcarlini at suse dot de
  2005-03-24 11:08 ` [Bug libstdc++/20610] " pcarlini at suse dot de
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24  9:55 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 09:55 -------
Argh! No, I was totally wrong: I tried fixing this problem some time ago and
did something wrong. We can fix it in the library. Sorry.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pcarlini at suse dot de
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2005-03-24 09:55:01
               date|                            |


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


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

* [Bug libstdc++/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (7 preceding siblings ...)
  2005-03-24  9:55 ` pcarlini at suse dot de
@ 2005-03-24 11:08 ` pcarlini at suse dot de
  2005-03-24 11:39 ` pcarlini at suse dot de
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24 11:08 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 11:08 -------
Richard, can you possibly have a look? Why fold_complex_mult_parts doesn't
optimize well complex * real also when no-fast-math?

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


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


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

* [Bug libstdc++/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (8 preceding siblings ...)
  2005-03-24 11:08 ` [Bug libstdc++/20610] " pcarlini at suse dot de
@ 2005-03-24 11:39 ` pcarlini at suse dot de
  2005-03-24 15:52 ` [Bug middle-end/20610] " pcarlini at suse dot de
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24 11:39 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 11:39 -------
The middle-end problem seems that, when no-fast-math, c99-conforming method, we 
are not implementing systematically the special cases in G.5.1/2 (and /3 for the
division).

-- 


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (9 preceding siblings ...)
  2005-03-24 11:39 ` pcarlini at suse dot de
@ 2005-03-24 15:52 ` pcarlini at suse dot de
  2005-06-02 21:48 ` rth at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pcarlini at suse dot de @ 2005-03-24 15:52 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2005-03-24 15:52 -------
I'm recategorizing back to middle-end: really this should be properly fixed
in the middle-end.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |gdr at integrable-solutions
                   |                            |dot net
         AssignedTo|pcarlini at suse dot de     |unassigned at gcc dot gnu
                   |                            |dot org
             Status|ASSIGNED                    |NEW
          Component|libstdc++                   |middle-end


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


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

* [Bug middle-end/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (10 preceding siblings ...)
  2005-03-24 15:52 ` [Bug middle-end/20610] " pcarlini at suse dot de
@ 2005-06-02 21:48 ` rth at gcc dot gnu dot org
  2005-06-09  7:44 ` [Bug tree-optimization/20610] " cvs-commit at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rth at gcc dot gnu dot org @ 2005-06-02 21:48 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |rth at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2005-03-24 09:55:01         |2005-06-02 21:48:21
               date|                            |


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


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

* [Bug tree-optimization/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (11 preceding siblings ...)
  2005-06-02 21:48 ` rth at gcc dot gnu dot org
@ 2005-06-09  7:44 ` cvs-commit at gcc dot gnu dot org
  2005-06-09  8:14 ` rth at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-06-09  7:44 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-06-09 07:44 -------
Subject: Bug 20610

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rth@gcc.gnu.org	2005-06-09 07:43:47

Modified files:
	gcc            : ChangeLog gimplify.c integrate.c tree-complex.c 
	                 tree-gimple.c tree-optimize.c tree-pass.h 
	                 tree.h 

Log message:
	PR tree-opt/20610
	* tree.h (DECL_COMPLEX_GIMPLE_REG_P): New.
	(struct tree_decl): Add gimple_reg_flag.
	* integrate.c (copy_decl_for_inlining): Copy it.
	* gimplify.c (internal_get_tmp_var): Set it.
	(gimplify_bind_expr): Likewise.
	(gimplify_function_tree): Likewise.
	(gimplify_modify_expr_complex_part): New.
	(gimplify_modify_expr): Use it.
	* tree-gimple.c (is_gimple_reg_type): Allow complex.
	(is_gimple_reg): Allow complex with DECL_COMPLEX_GIMPLE_REG_P set.
	
	* tree-complex.c (complex_lattice_t): New.
	(complex_lattice_values, complex_variable_components): New.
	(some_nonzerop, find_lattice_value, is_complex_reg,
	init_parameter_lattice_values, init_dont_simulate_again,
	complex_visit_stmt, complex_visit_phi, create_components,
	update_complex_components, update_parameter_components,
	update_phi_components, update_all_vops, expand_complex_move): New.
	(extract_component): Handle INDIRECT_REF, COMPONENT_REF, ARRAY_REF,
	SSA_NAME.
	(update_complex_assignment): Use update_complex_components;
	handle updates of return_expr properly.
	(expand_complex_addition): Use complex lattice values.
	(expand_complex_multiplication): Likewise.
	(expand_complex_division): Likewise.
	(expand_complex_libcall): Use update_complex_components.
	(expand_complex_comparison): Use update_stmt.
	(expand_complex_operations_1): Use expand_complex_move, retrieve
	lattice values.
	(tree_lower_complex): Compute lattice values.
	(tree_lower_complex_O0): Duplicate from tree_lower_complex.
	(pass_lower_complex_O0): Rename from pass_lower_complex.
	(pass_lower_complex, gate_no_optimization): New.
	* tree-optimize.c (init_tree_optimization_passes): Update for
	complex pass changes.
	* tree-pass.h (pass_lower_complex_O0): Declare.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9100&r2=2.9101
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/gimplify.c.diff?cvsroot=gcc&r1=2.135&r2=2.136
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/integrate.c.diff?cvsroot=gcc&r1=1.279&r2=1.280
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-complex.c.diff?cvsroot=gcc&r1=2.26&r2=2.27
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-gimple.c.diff?cvsroot=gcc&r1=2.38&r2=2.39
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&r1=2.105&r2=2.106
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pass.h.diff?cvsroot=gcc&r1=2.40&r2=2.41
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree.h.diff?cvsroot=gcc&r1=1.735&r2=1.736



-- 


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


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

* [Bug tree-optimization/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (12 preceding siblings ...)
  2005-06-09  7:44 ` [Bug tree-optimization/20610] " cvs-commit at gcc dot gnu dot org
@ 2005-06-09  8:14 ` rth at gcc dot gnu dot org
  2005-06-10 14:17 ` schwab at suse dot de
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rth at gcc dot gnu dot org @ 2005-06-09  8:14 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rth at gcc dot gnu dot org  2005-06-09 08:14 -------
Fixed.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.1.0


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


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

* [Bug tree-optimization/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (13 preceding siblings ...)
  2005-06-09  8:14 ` rth at gcc dot gnu dot org
@ 2005-06-10 14:17 ` schwab at suse dot de
  2005-06-10 14:20 ` pinskia at gcc dot gnu dot org
  2005-06-23  7:52 ` fengwang at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: schwab at suse dot de @ 2005-06-10 14:17 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From schwab at suse dot de  2005-06-10 14:17 -------
Breaks Ada on ia64. 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |schwab at suse dot de
OtherBugsDependingO|                            |21994
              nThis|                            |
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |


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


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

* [Bug tree-optimization/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (14 preceding siblings ...)
  2005-06-10 14:17 ` schwab at suse dot de
@ 2005-06-10 14:20 ` pinskia at gcc dot gnu dot org
  2005-06-23  7:52 ` fengwang at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-06-10 14:20 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-06-10 14:20 -------
Yes it might break Ada, but since this is still fixed, I am going to keep this as fixed unless it is reverted.

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


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


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

* [Bug tree-optimization/20610] Real by complex multiplications perform unnecessary operations
  2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
                   ` (15 preceding siblings ...)
  2005-06-10 14:20 ` pinskia at gcc dot gnu dot org
@ 2005-06-23  7:52 ` fengwang at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: fengwang at gcc dot gnu dot org @ 2005-06-23  7:52 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From fengwang at gcc dot gnu dot org  2005-06-23 07:52 -------
And in extract_component() in tree-complex.c file, I need handle 
VIEW_CONVER_EXPR.
On gfortran front end, I need treat other type data as complex. So I build 
VIEW_CONVER_EXPR tree node and failed at extract_component(). Can you fix 
this, Richard?

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wf_cs at yahoo dot com


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


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

end of thread, other threads:[~2005-06-23  7:52 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-23 21:00 [Bug middle-end/20610] New: Real by complex multiplications perform unnecessary operations fredrik dot huss at home dot se
2005-03-23 21:11 ` [Bug middle-end/20610] " pinskia at gcc dot gnu dot org
2005-03-24  0:19 ` pcarlini at suse dot de
2005-03-24  0:26 ` pcarlini at suse dot de
2005-03-24  1:11 ` pcarlini at suse dot de
2005-03-24  9:21 ` fredrik dot huss at home dot se
2005-03-24  9:28 ` pcarlini at suse dot de
2005-03-24  9:34 ` pcarlini at suse dot de
2005-03-24  9:55 ` pcarlini at suse dot de
2005-03-24 11:08 ` [Bug libstdc++/20610] " pcarlini at suse dot de
2005-03-24 11:39 ` pcarlini at suse dot de
2005-03-24 15:52 ` [Bug middle-end/20610] " pcarlini at suse dot de
2005-06-02 21:48 ` rth at gcc dot gnu dot org
2005-06-09  7:44 ` [Bug tree-optimization/20610] " cvs-commit at gcc dot gnu dot org
2005-06-09  8:14 ` rth at gcc dot gnu dot org
2005-06-10 14:17 ` schwab at suse dot de
2005-06-10 14:20 ` pinskia at gcc dot gnu dot org
2005-06-23  7:52 ` fengwang 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).