Hello, I have one more question regarding the comment in tree-ssa-ccp.c file -
/* Note that for propagation purposes, we are only interested in visiting statements that load the exact same memory reference stored here. Those statements will have the exact same list of virtual uses, so it is enough to set the output of this statement to be its first virtual definition. */ *output_p = first_vdef (stmt); I wonder if this comment is true also if the vuses are not immediate as in stmt no. 1 in the following example: 1) arr[i].x = tmp1; ... 2) arr[i].y = tmp2; ... 3) reg1 = arr[i].x; ... 4) arr[i].z = tmp2; ... 5) reg2 = arr[i].x; Is it because we are looking for the exact same memory reference (although not immediate) it is enough to look at only first_vdef of every store we encounter in our walk through the virtual def-use chain; or by looking only at the first vdef we could miss vuses that could have been reached by vdefs other than the first one? Thanks again, Revital