As discussed on the ML, here is a draft patch that implements some BasicAA improvements to struct GEPs.
It's very naive, but does the trick. I don't think it can reuse much of the GEP decomposition machinery, so it just checks indices manually.
How does it sound?
Hidden behind a flag to ease pre-commit testing; on the few added testcases, we go from:
5 no alias responses (4.9%)
to
25 no alias responses (24.7%)
Also, I obviously added Chandler's counterexample, thanks again ;)
Why do we need a flag here? If we discover bugs, we can just revert to green.