Structure aliasing in GCC
Abstract
GCC has a well known deficiency in the ability to detect and optimize structure accesses (a.b) and pointer-to structure accesses (a - >b). We present a structure overlap determination algorithm and a structure access disambiguation algorithm for the SSA middle-end of GCC. We also present an algorithm for field sensitive points-to analysis. This paper also describes the changes necessary to make this information available to the tree optimizations. These algorithms can be applied both intrapro-cedurally and interprocedurally. They are efficient enough to be applied to whole programs. With these algorithms implemented, the GCC tree-SSA optimizers automatically take advantage of the new information and produce significantly better code when faced with structure accesses, and pointer to structure accesses, which are heavily used in both C and C++.