------- Comment #29 from ubizjak at gmail dot com  2008-02-10 12:27 -------
The problem is in forwprop4 pass:

When testcase from #28 is compiled with "-O2 -DINLINE", forwprop4 pass
transforms:

--cut here--
;; Function do_test (do_test)

do_test (r)
{
  long long unsigned int shifttmp.49;
  long long unsigned int D.1576;
  ...

<bb 6>:
  # i_19 = PHI <0(2), i_4(5)>
  D.1576_13 = *r_3(D);
  shifttmp.49_16 = D.1576_13 & 0x08000000000000000;
  if (shifttmp.49_16 != 0)
    goto <bb 5>;
  else
    goto <bb 3>;

...
}
--cut here--

to 

--cut here--
;; Function do_test (do_test)

  Replaced 'shifttmp.49_16 != 0' with '0'                (-> !!!!!!!)
do_test (r)
{
  long long unsigned int D.1576;
  ...

<bb 6>:
  # i_19 = PHI <0(2), i_4(5)>
  D.1576_13 = *r_3(D);
  goto <bb 3>;

  ...
}
--cut here--

The replacement is wrong.


-- 


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

Reply via email to