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

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-02-25 
10:37:40 UTC ---
PRE makes that better and we have

<bb 4>:
  # i_39 = PHI <i_47(7), 0(3)>
  D.2691_6 = (long unsigned int) i_39;
  D.2692_7 = D.2691_6 * 4;
  D.2693_9 = arr_8(D) + D.2692_7;
  or_10 = MEM[(float *)D.2693_9];
  if (or_10 > 5.2359879016876220703125e-1)
    goto <bb 5>;
  else
    goto <bb 6>;

<bb 5>:
  orig_14 = or_10 * 3.333333432674407958984375e-1;
  sqr_15 = __builtin_powf (orig_14, 2.0e+0);
  D.2699_19 = sqr_15 * 2.742018523349543102085590362548828125e-6;
  D.2700_20 = D.2699_19 + -1.98410343728028237819671630859375e-4;
  D.2701_21 = D.2700_20 * sqr_15;
  D.2702_22 = D.2701_21 + 8.333332836627960205078125e-3;
  D.2703_23 = D.2702_22 * sqr_15;
  D.2704_24 = D.2703_23 + -1.6666667163372039794921875e-1;
  D.2705_25 = D.2704_24 * sqr_15;
  D.2706_26 = D.2705_25 + 1.0e+0;
  D.2707_27 = D.2706_26 * orig_14;
  D.2731_72 = __builtin_powf (D.2707_27, 2.0e+0);
  pretmp.11_75 = D.2731_72 * 4.0e+0;
  pretmp.11_77 = 2.0e+0 - pretmp.11_75;
  pretmp.11_81 = pretmp.11_77 + 1.0e+0;
  pretmp.11_83 = D.2707_27 * pretmp.11_81;

<bb 6>:
  # prephitmp.12_84 = PHI <pretmp.11_83(5), 0.0(4)>
  MEM[(float *)D.2693_9] = prephitmp.12_84;
  i_47 = i_39 + 1;
  if (len_5(D) > i_47)
    goto <bb 7>;
  else
    goto <bb 8>;


if-conversion does not handle

  sqr_15 = __builtin_powf (orig_14, 2.0e+0);

which we produce as canonicalization of x * x with -funsafe-math-optimizations.

Reply via email to