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