------- Comment #6 from ubizjak at gmail dot com  2007-06-30 15:39 -------
Hm, in the dump (gcc-4.1.3), preceeding ifcvt, we have:

<L4>:;
  D.985_28 = iftmp.5_4 + D.964_27;
  M.2_29 = (int4) D.985_28;
  if (M.2_29 > 1) goto <L7>; else goto <L9>;

<L7>:;
  if (M.2_29 > 20) goto <L10>; else goto <L9>;

  # M.2_61 = PHI <M.2_29(4), 1(3)>;                  <<<<<<---- here
<L9>:;
  pretmp.98_1 = (real8) M.2_61;

  # prephitmp.99_39 = PHI <2.0e+1(4), pretmp.98_1(5)>;
  # M.2_3 = PHI <20(4), M.2_61(5)>;
<L10>:;

Isn't marked statement unreachable?

Comparing _.ssa dumps between 4.1 (wrong result) and 4.3 (correct result), we
have:

(4.1)
--cut here--

<L5>:;
  M.1_36 = D.966_29;
  goto <bb 8> (<L7>);

<L6>:;
  M.1_35 = 1;

  # M.1_2 = PHI <M.1_36(6), M.1_35(7)>;              <<<< here (4.1)
<L7>:;
  if (M.1_2 > 20) goto <L8>; else goto <L9>;

<L8>:;
  M.2_34 = 20;
  goto <bb 11> (<L10>);
--cut here--

versus

(4.3)
--cut here--
<bb 8>:
  M.1_17 = D.1365_16;
  goto <bb 10>;

<bb 9>:
  M.1_18 = 1;

<bb 10>:
  # M.1_1 = PHI <M.1_17(8), M.1_18(9)>               <<<< here (4.3)
  if (20 < M.1_1)
    goto <bb 11>;
  else
    goto <bb 12>;

<bb 11>:
  M.2_19 = 20;
  goto <bb 13>;
---cut here---


-- 

ubizjak at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ubizjak at gmail dot com


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

Reply via email to