public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
       [not found] <bug-43959-4@http.gcc.gnu.org/bugzilla/>
@ 2010-09-30 12:25 ` rguenth at gcc dot gnu.org
  2010-09-30 17:50 ` dave at hiauly1 dot hia.nrc.ca
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu.org @ 2010-09-30 12:25 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #19 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-09-30 11:19:52 UTC ---
(In reply to comment #18)
> Subject: Re:  [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1 
> (test for excess errors)
> 
> > Ah.  The following fixes it for me on a cross.  Can you bootstrap & regtest and
> > install it?  It's pre-approved if it works for you.
> 
> Will test and install if successful.

Ping?


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
       [not found] <bug-43959-4@http.gcc.gnu.org/bugzilla/>
  2010-09-30 12:25 ` [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c -O1 (test for excess errors) rguenth at gcc dot gnu.org
@ 2010-09-30 17:50 ` dave at hiauly1 dot hia.nrc.ca
  2010-10-01  0:47 ` danglin at gcc dot gnu.org
  2010-10-01  0:52 ` danglin at gcc dot gnu.org
  3 siblings, 0 replies; 10+ messages in thread
From: dave at hiauly1 dot hia.nrc.ca @ 2010-09-30 17:50 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #20 from dave at hiauly1 dot hia.nrc.ca 2010-09-30 13:13:05 UTC ---
> > > Ah.  The following fixes it for me on a cross.  Can you bootstrap & regtest and
> > > install it?  It's pre-approved if it works for you.
> > 
> > Will test and install if successful.
> 
> Ping?

It works.  Tested on hppa2.0w-hp-hpux11.11 and hppa64-hp-hpux11.11.
I was going to install it  when I get a chance, but I got side tracked
on other problems.

Dave


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
       [not found] <bug-43959-4@http.gcc.gnu.org/bugzilla/>
  2010-09-30 12:25 ` [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c -O1 (test for excess errors) rguenth at gcc dot gnu.org
  2010-09-30 17:50 ` dave at hiauly1 dot hia.nrc.ca
@ 2010-10-01  0:47 ` danglin at gcc dot gnu.org
  2010-10-01  0:52 ` danglin at gcc dot gnu.org
  3 siblings, 0 replies; 10+ messages in thread
From: danglin at gcc dot gnu.org @ 2010-10-01  0:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #21 from John David Anglin <danglin at gcc dot gnu.org> 2010-10-01 00:47:13 UTC ---
Author: danglin
Date: Fri Oct  1 00:47:09 2010
New Revision: 164824

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164824
Log:
    PR tree-optimization/43959
    * function.c (gimplify_parameters): Use create_tmp_reg instead of
    create_tmp_var.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/function.c


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
       [not found] <bug-43959-4@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2010-10-01  0:47 ` danglin at gcc dot gnu.org
@ 2010-10-01  0:52 ` danglin at gcc dot gnu.org
  3 siblings, 0 replies; 10+ messages in thread
From: danglin at gcc dot gnu.org @ 2010-10-01  0:52 UTC (permalink / raw)
  To: gcc-bugs

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

John David Anglin <danglin at gcc dot gnu.org> changed:

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

--- Comment #22 from John David Anglin <danglin at gcc dot gnu.org> 2010-10-01 00:52:00 UTC ---
Fixed.


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
  2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2010-09-19 11:10 ` rguenth at gcc dot gnu dot org
@ 2010-09-19 14:53 ` dave at hiauly1 dot hia dot nrc dot ca
  5 siblings, 0 replies; 10+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-09-19 14:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from dave at hiauly1 dot hia dot nrc dot ca  2010-09-19 14:53 -------
Subject: Re:  [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1 
(test for excess errors)

> Ah.  The following fixes it for me on a cross.  Can you bootstrap & regtest and
> install it?  It's pre-approved if it works for you.

Will test and install if successful.

Dave


-- 


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


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
  2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2010-09-18 22:14 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-09-19 11:10 ` rguenth at gcc dot gnu dot org
  2010-09-19 14:53 ` dave at hiauly1 dot hia dot nrc dot ca
  5 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-09-19 11:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from rguenth at gcc dot gnu dot org  2010-09-19 11:10 -------
Ah.  The following fixes it for me on a cross.  Can you bootstrap & regtest and
install it?  It's pre-approved if it works for you.

Thanks.

Index: gcc/function.c
===================================================================
--- gcc/function.c      (revision 164396)
+++ gcc/function.c      (working copy)
@@ -3578,7 +3578,7 @@ gimplify_parameters (void)
                       && compare_tree_int (DECL_SIZE_UNIT (parm),
                                            STACK_CHECK_MAX_VAR_SIZE) > 0))
                {
-                 local = create_tmp_var (type, get_name (parm));
+                 local = create_tmp_reg (type, get_name (parm));
                  DECL_IGNORED_P (local) = 0;
                  /* If PARM was addressable, move that flag over
                     to the local copy, as its address will be taken,
@@ -3592,7 +3592,7 @@ gimplify_parameters (void)
                  tree ptr_type, addr;

                  ptr_type = build_pointer_type (type);
-                 addr = create_tmp_var (ptr_type, get_name (parm));
+                 addr = create_tmp_reg (ptr_type, get_name (parm));
                  DECL_IGNORED_P (addr) = 0;
                  local = build_fold_indirect_ref (addr);



-- 


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


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
  2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2010-09-18 18:59 ` dave at hiauly1 dot hia dot nrc dot ca
@ 2010-09-18 22:14 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-09-19 11:10 ` rguenth at gcc dot gnu dot org
  2010-09-19 14:53 ` dave at hiauly1 dot hia dot nrc dot ca
  5 siblings, 0 replies; 10+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-09-18 22:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from dave at hiauly1 dot hia dot nrc dot ca  2010-09-18 22:14 -------
Subject: Re:  [4.6 Regression] FAIL:
        gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)

On Sat, 18 Sep 2010, rguenth at gcc dot gnu dot org wrote:

> ------- Comment #14 from rguenth at gcc dot gnu dot org  2010-09-18 18:25 -------
> You have way more non-SSA variables - possibly due to callee-copy of args
> (again).

I think you are correct about this being a callee-copy problem.  Complex
float is passed by value, so a copy is not made.  In the 087t.dce2 pass,
the float code is simplified to

  if (x_32(D) != 0)
    goto <bb 4>;
  else
    goto <bb 3>;

<bb 3>:

<bb 4>:
Invalid sum of incoming frequencies 10000, should be 5000
  # cf$imag_13 = PHI <4.0e+0(2), 5.0e+0(3)>
  cf_36 = COMPLEX_EXPR < Inf, cf$imag_13>;  D.2130_37 = __builtin_cprojf
(cf_36);
  D.2133_152 = IMAGPART_EXPR <D.2130_37>;
  D.2134_41 = __builtin_copysignf (1.0e+0, D.2133_152);
  if (D.2134_41 != 1.0e+0)
    goto <bb 5>;
  else
    goto <bb 6>;

<bb 5>:
Invalid sum of incoming frequencies 2500, should be 6450
  link_error (160);

whereas for double we still have

<bb 6>:
Invalid sum of incoming frequencies 8950, should be 10000
  REALPART_EXPR <cd.1> =  Inf;
  if (x_32(D) != 0)
    goto <bb 8>;
  else
    goto <bb 7>;

<bb 7>:

<bb 8>:
  # iftmp.4_14 = PHI <4.0e+0(6), 5.0e+0(7)>
  D.2321_122 = REALPART_EXPR <cd.1>;
  cd.5_44 = COMPLEX_EXPR <D.2321_122, iftmp.4_14>;
  D.2142_45 = __builtin_cproj (cd.5_44); [return slot optimization]
  CR.26_84 = REALPART_EXPR <D.2142_45>;
  D.2145_85 = IMAGPART_EXPR <D.2142_45>;
  D.2325_75 = CR.26_84 >
1.79769313486231570814527423731704356798070567526e+308;
  D.2326_76 = !D.2325_75;
  D.2327_67 = D.2145_85 != 0.0;
  D.2328_60 = D.2327_67 || D.2326_76;
  if (D.2328_60 == 1)
    goto <bb 10>;
  else
    goto <bb 9>;

<bb 9>:
  D.2146_49 = (float) D.2145_85;
  D.2147_50 = __builtin_copysignf (1.0e+0, D.2146_49);
  if (D.2147_50 != 1.0e+0)
    goto <bb 10>;
  else
    goto <bb 11>;

<bb 10>:
  link_error (160);

In the previous 086t.reassoc1 pass, we still had the non SSA stuff:

<bb 2>:
  cld$real_188 = REALPART_EXPR <cld_25(D)>;
  cld$imag_189 = IMAGPART_EXPR <cld_25(D)>;
  cd$real_177 = REALPART_EXPR <cd_26(D)>;
  cd$imag_178 = IMAGPART_EXPR <cd_26(D)>;
  cf$real_167 = REALPART_EXPR <cf_29(D)>;
  cf$imag_158 = IMAGPART_EXPR <cf_29(D)>;
  REALPART_EXPR <cld.0> = cld$real_188;
  IMAGPART_EXPR <cld.0> = cld$imag_189;
  REALPART_EXPR <cd.1> = cd$real_177;
  IMAGPART_EXPR <cd.1> = cd$imag_178;
  if (x_32(D) != 0)
    goto <bb 4>;
  else
    goto <bb 3>;

-fno-tree-sra didn't help.

080t.cplxlower makes these partial defintions:

  REALPART_EXPR <cld.0> = cld$real_188;    
  IMAGPART_EXPR <cld.0> = cld$imag_189;
  REALPART_EXPR <cd.1> = cd$real_177;
  IMAGPART_EXPR <cd.1> = cd$imag_178;  

# grep real_188 builtin-cproj-1.c.*
builtin-cproj-1.c.080t.cplxlower:  cld$real_188 = REALPART_EXPR <cld_25(D)>;
builtin-cproj-1.c.080t.cplxlower:  REALPART_EXPR <cld.0> = cld$real_188;
builtin-cproj-1.c.082t.copyrename3:  cld$real_188 = REALPART_EXPR <cld_25(D)>;
builtin-cproj-1.c.082t.copyrename3:  REALPART_EXPR <cld.0> = cld$real_188;
builtin-cproj-1.c.083t.dom1:  cld$real_188 = REALPART_EXPR <cld_25(D)>;
builtin-cproj-1.c.083t.dom1:  REALPART_EXPR <cld.0> = cld$real_188;
builtin-cproj-1.c.084t.phicprop1:  cld$real_188 = REALPART_EXPR <cld_25(D)>;
builtin-cproj-1.c.084t.phicprop1:  REALPART_EXPR <cld.0> = cld$real_188;
builtin-cproj-1.c.085t.dse1:  cld$real_188 = REALPART_EXPR <cld_25(D)>;
builtin-cproj-1.c.085t.dse1:  REALPART_EXPR <cld.0> = cld$real_188;
builtin-cproj-1.c.086t.reassoc1:  cld$real_188 = REALPART_EXPR <cld_25(D)>;
builtin-cproj-1.c.086t.reassoc1:  REALPART_EXPR <cld.0> = cld$real_188;

004t.gimple makes 

  REALPART_EXPR <cd.1> =  Inf;

# grep "REALPART_EXPR <cd.1>" builtin-cproj-1.c.*
builtin-cproj-1.c.004t.gimple:  REALPART_EXPR <cd.1> =  Inf;
builtin-cproj-1.c.004t.gimple:  REALPART_EXPR <cd.1> =  -Inf;
builtin-cproj-1.c.004t.gimple:    REALPART_EXPR <cd.1> =  Inf;
builtin-cproj-1.c.004t.gimple:    REALPART_EXPR <cd.1> =  -Inf;
builtin-cproj-1.c.009t.omplower:  REALPART_EXPR <cd.1> =  Inf;
builtin-cproj-1.c.009t.omplower:  REALPART_EXPR <cd.1> =  -Inf;
builtin-cproj-1.c.009t.omplower:    REALPART_EXPR <cd.1> =  Inf;
builtin-cproj-1.c.009t.omplower:    REALPART_EXPR <cd.1> =  -Inf;
...


-- 


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


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
  2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
  2010-09-18 18:10 ` [Bug tree-optimization/43959] [4.6 Regression] " danglin at gcc dot gnu dot org
  2010-09-18 18:25 ` rguenth at gcc dot gnu dot org
@ 2010-09-18 18:59 ` dave at hiauly1 dot hia dot nrc dot ca
  2010-09-18 22:14 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: dave at hiauly1 dot hia dot nrc dot ca @ 2010-09-18 18:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from dave at hiauly1 dot hia dot nrc dot ca  2010-09-18 18:59 -------
Subject: Re:  [4.6 Regression] FAIL:
        gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)

On Sat, 18 Sep 2010, rguenth at gcc dot gnu dot org wrote:

> 
> 
> ------- Comment #14 from rguenth at gcc dot gnu dot org  2010-09-18 18:25 -------
> You have way more non-SSA variables - possibly due to callee-copy of args
> (again).
> 
> I suppose some optimizations end up being disabled for some reason by that,
> but likely nobody will be interested to fixup missed optimizations for
> this target :/
> 
> So - if you are interested (heh ...) I'd start comparing dumps to i?86 dumps
> and see where they start to diverge badly.  Also try and see why you end up
> with

I already did compare dumps with i?86.  cplxlower is where major differences
started to appear, although there are some differences before that.

>   complex double cd.1;
>   complex long double cld.0;
> 
> not in SSA form:
> 
>   REALPART_EXPR <cld.0> = cld$real_19;
>   IMAGPART_EXPR <cld.0> = cld$imag_20;
>   REALPART_EXPR <cd.1> = cd$real_10;
>   IMAGPART_EXPR <cd.1> = cd$imag_11;
>   REALPART_EXPR <cd.1> =  Inf;

The problem has something to do with precision.  The problem doesn't occur
for complex float.  For example, this code doesn't appear for float:

CR.11_40 = REALPART_EXPR <D.1935_9>;
CI.12_41 = IMAGPART_EXPR <D.1935_9>;
D.1966_42 = CR.11_40 > 1.79769313486231570814527423731704356798070567526e+308;
D.1967_43 = !D.1966_42;
D.1968_44 = CI.12_41 != 0.0;
D.1969_45 = D.1967_43 || D.1968_44;
if (D.1969_45 == 1)
  goto <bb 6>;
else
goto <bb 5>;

> on i?86 I never even start having partial definitions of these on the lhs ...
> (but I also do not have the callee-copy, so you might check if SRA makes
> those partial defs from them by trying with -fno-tree-sra).

Thanks for the suggestion.  I'll give it a try.

> If you're not interested I suggest to XFAIL the testcase for the failing
> platforms.

It's really a question of time.  I only have some evenings and weekends
to investigate GCC bugs.

Dave


-- 


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


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
  2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
  2010-09-18 18:10 ` [Bug tree-optimization/43959] [4.6 Regression] " danglin at gcc dot gnu dot org
@ 2010-09-18 18:25 ` rguenth at gcc dot gnu dot org
  2010-09-18 18:59 ` dave at hiauly1 dot hia dot nrc dot ca
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-09-18 18:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from rguenth at gcc dot gnu dot org  2010-09-18 18:25 -------
You have way more non-SSA variables - possibly due to callee-copy of args
(again).

I suppose some optimizations end up being disabled for some reason by that,
but likely nobody will be interested to fixup missed optimizations for
this target :/

So - if you are interested (heh ...) I'd start comparing dumps to i?86 dumps
and see where they start to diverge badly.  Also try and see why you end up
with

  complex double cd.1;
  complex long double cld.0;

not in SSA form:

  REALPART_EXPR <cld.0> = cld$real_19;
  IMAGPART_EXPR <cld.0> = cld$imag_20;
  REALPART_EXPR <cd.1> = cd$real_10;
  IMAGPART_EXPR <cd.1> = cd$imag_11;
  REALPART_EXPR <cd.1> =  Inf;

on i?86 I never even start having partial definitions of these on the lhs ...
(but I also do not have the callee-copy, so you might check if SRA makes
those partial defs from them by trying with -fno-tree-sra).

If you're not interested I suggest to XFAIL the testcase for the failing
platforms.


-- 

rguenth 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=43959


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

* [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
  2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
@ 2010-09-18 18:10 ` danglin at gcc dot gnu dot org
  2010-09-18 18:25 ` rguenth at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: danglin at gcc dot gnu dot org @ 2010-09-18 18:10 UTC (permalink / raw)
  To: gcc-bugs



-- 

danglin at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW
          Component|testsuite                   |tree-optimization
   Last reconfirmed|2010-05-02 15:26:05         |2010-09-18 18:10:02
               date|                            |


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


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

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

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-43959-4@http.gcc.gnu.org/bugzilla/>
2010-09-30 12:25 ` [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c -O1 (test for excess errors) rguenth at gcc dot gnu.org
2010-09-30 17:50 ` dave at hiauly1 dot hia.nrc.ca
2010-10-01  0:47 ` danglin at gcc dot gnu.org
2010-10-01  0:52 ` danglin at gcc dot gnu.org
2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
2010-09-18 18:10 ` [Bug tree-optimization/43959] [4.6 Regression] " danglin at gcc dot gnu dot org
2010-09-18 18:25 ` rguenth at gcc dot gnu dot org
2010-09-18 18:59 ` dave at hiauly1 dot hia dot nrc dot ca
2010-09-18 22:14 ` dave at hiauly1 dot hia dot nrc dot ca
2010-09-19 11:10 ` rguenth at gcc dot gnu dot org
2010-09-19 14:53 ` dave at hiauly1 dot hia dot nrc dot ca

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