public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "dave at hiauly1 dot hia dot nrc dot ca" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/43959] [4.6 Regression] FAIL: gcc.dg/torture/builtin-cproj-1.c  -O1  (test for excess errors)
Date: Sat, 18 Sep 2010 22:14:00 -0000	[thread overview]
Message-ID: <20100918221422.12670.qmail@sourceware.org> (raw)
In-Reply-To: <bug-43959-276@http.gcc.gnu.org/bugzilla/>



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


  parent reply	other threads:[~2010-09-18 22:14 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-02  0:23 [Bug middle-end/43959] New: " danglin at gcc dot gnu dot org
2010-05-02 15:26 ` [Bug testsuite/43959] [4.6 Regression] " rguenth at gcc dot gnu dot org
2010-09-02 10:46 ` rguenth at gcc dot gnu dot org
2010-09-02 15:25 ` ghazi at gcc dot gnu dot org
2010-09-02 16:28 ` dave at hiauly1 dot hia dot nrc dot ca
2010-09-07 23:23 ` danglin at gcc dot gnu dot org
2010-09-07 23:44 ` ghazi at gcc dot gnu dot org
2010-09-08  0:16 ` dave at hiauly1 dot hia dot nrc dot ca
2010-09-08  0:25 ` danglin at gcc dot gnu dot org
2010-09-12 15:38 ` dave at hiauly1 dot hia dot nrc dot ca
2010-09-18 18:10 ` [Bug tree-optimization/43959] " 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 [this message]
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
     [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
2010-10-01  0:47 ` danglin at gcc dot gnu.org
2010-10-01  0:52 ` danglin at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100918221422.12670.qmail@sourceware.org \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).