------- Comment #9 from ian at airs dot com 2006-01-15 06:27 ------- Upon further reflection, I don't think this is amenable to a good fix using conditional moves. func2 doesn't read from a. Using conditional moves will require adding reads from a. It's not obvious that that is a good tradeoff.
When I look at the code generated for i686 at -O2, the only problem I see is that for some reason gcc doesn't recognize that a[0] and a[1] can not alias each other, and it reloads a[0] after writing to a[1]. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10050