DA does not check that types match during analysis. Bitcasts can result in a wide access overlapping a narrower access, but because the pointer values are different, DA considers them independent.
Make sure that alignment matches store size.
Change Summary:
- Updated description of depends() to be descriptive instead of prescriptive
- Optimization: exit early if no common loops AND don't care about loop independent dependencies
- Check that alignment matches store size
- Renamed PossiblyLoopIndependent to PossiblyIntraIteration to be more clear with intent of code
Maybe we should rename PossiblyLoopIndependent to something else. I don't see how "LoopIndependent" makes a statement about non-loop dependences.