Tag allocations which might refer to more than one object as 'vague', and use the same logic writing to them as writing to an object set (i.e. as a maybe-write).

Note that local allocas are treated more generously, as it is clearer when we are certainly talking about the only currently live version of such an object.

Previously this led to bugs like

while(...) {

	x = malloc(...);

}

*x = 5;
print *x // Yields 5!

When though these are certainly the same x, generally we cannot be sure.