http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49695
--- Comment #2 from revital.eres at linaro dot org 2011-07-10 12:50:31 UTC --- (In reply to comment #0) > for (i = 0; i < point1->len; i++) > { > if (point1->arr[i].val) > { > point1->arr[i].val ^= (unsigned long long) res; > } > } > For the above loop if-conversion is not been done in the tree level (compiled > with trunk -r176116). Seemingly this case is similar to the one in PR27313. > When using -ftree-loop-if-convert-stores I get 'tree could trap...' message > although I'm not sure why as there is a read in every iteration of the loop to > 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.