Hi, On Wed, 16 Nov 2011, Jeff Law wrote:
> Right. In theory, path isolation would make this optimizable. Make a > copy of the block containing a[x] = 2 and make it the target when x != > 100. At the source level it'd look something like this: > > int x; > extern void f(void); > > void g(int *a) > { > a[x] = 1; > if (x == 100) { > f(); > a[x] = 2; > } else { > a[x] = 2; > } > } > > > The problem then becomes identification of the load from "x" as > redundant on the else path, which we're currently not capable of doing. Also in this variant the first store to a[x] may-clobbers x itself. The function call doesn't enter the picture. Ciao, Michael.