Efficient and precise array access analysis (ACM transactions on programming languages and systems)