> I think there are 3 aliasing possibilities here:
> 1. known to alias
> 2. known to not alias
> 3. may alias
Actually there is only 2, it may alias or not.
Actually, he's right (and both you and Richard are wrong).
The standard taxonomy of classifications for two memory accesses is:
Must-alias
May-Alias
Don't alias (or some variant name).
This is what you will find in literature, not "conflicts" or anything else.
Proving two accesses must-alias can be as useful as proving they don't alias.
In languages like C, type based aliasing information is generally less
*useful* to an optimization than pointer analysis based aliasing
information.
There have been studies on what type of analysis is helpful.
See, e.g. http://portal.acm.org/citation.cfm?id=378806&coll=portal&dl=ACM
(Search google for pdfs of this paper)
The most important disambiguation technique generally ends up being
things you can tell directly from looking at objects, and not from
anything else.
Everything else is just wildly variant depending on the test case
(though some are consistenly more effective than others).