------- Comment #3 from rguenth at gcc dot gnu dot org 2009-09-28 11:45 ------- The remaining cases should be
*p = a_1; ... if (...) *p = b_2; where sinking the first store is possible and profitable (it's partially dead) ... if (...) *p = b_2; else *p = a_1; which is then recognized as a conditional store, if-converted as tmp = ... ? b_2 : a_1; *p = tmp; the first part is supposed to be done already by tree-ssa-sink.c, the second part should be done by if-conversion in tree-ssa-phiopt.c. Of course tree-ssa-sink.c is likely nor working for the first case. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41486