http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49695
--- Comment #3 from revital.eres at linaro dot org 2011-07-10 13:41:07 UTC --- > > the memory location we write to. > hmmm... after reading Sebastian Pop's paper from the last summit ("Improving > GCC’s auto-vectorization with if-conversion and loop > flattening for AMD’s Bulldozer processors") it's seems that we need to grantee > that point1->arr[i].val is writable when the condition is false which we can > not prove in this case. So that's not a bug, I apologize for the noise. Continuing reading the paper I see that under the 'If-conversion without restrictions' section there is a technique that allows to apply if-conversion in the above case by writing to artificial object that has been created by the compiler when the condition is false. I assume this method is not implemented in trunk yet.