Compiler optimization phase ordering is a fundamental, pervasive, and long-standing problem for optimizing compilers. This problem is caused by interacting optimization phases producing different codes when applied in different orders. Producing the best phase ordering code is very important in performance-oriented and cost-constrained domains, such as embedded systems. In this work, we analyze the causes of the phase ordering problem in our compiler, Very Portable Optimizer (VPO), and report our observations. We devise new techniques to eliminate, what we call, false phase interactions in our compiler. We find that reducing such false phase interactions significantly prunes the phase order search space. We also develop and study algorithms to find the best average performance that can be delivered by a single phase sequence over our benchmark set and discuss the challenges in resolving this important problem. Our results show that there is no single sequence in VPO that can achieve the optimal phase ordering performance across all functions.ANALYZING FALSE INTERACTIONS DURING OPTIMIZATION PHASE ORDERING 645 set. Therefore, in this work, we also explore this problem of automatically finding the best average performance that can be achieved by any single compiler phase sequence in our compiler and discuss the challenges in addressing this issue. Our study empirically shows the non-existence of a single phase sequence that can achieve optimal code for all functions.Although phase ordering is a pervasive issue across all or most compilers, we must necessarily restrict this study to a single compiler. The presence of an exhaustive framework for phase ordering research, along with our intimate knowledge of its internal organization, made VPO the best choice for us to conduct this research. However, we believe that our motivation and methodology for exploring and addressing phase interaction issues should be more generally applicable to other compilers. Most of all, we believe that even though different compilers may have different optimization phases, implementations, and phase interactions, this study shows the potential and benefit of understanding such interactions to guide future implementation decisions that minimize the phase ordering problem and generate higher-quality code in compilers. The major contributions of this research work are as follows:ANALYZING FALSE INTERACTIONS DURING OPTIMIZATION PHASE ORDERING 647 § In theory, compiler optimizations can undo changes made by preceding phases and introduce back-edges in the directed graph. However, for our set of 244 benchmark functions, the exhaustive search algorithm only produced 'acyclic' graphs (no back-edges), and so we call them DAGs in this paper. The acyclic nature of the graphs is not a requirement for the exhaustive search algorithm. ANALYZING FALSE INTERACTIONS DURING OPTIMIZATION PHASE ORDERING 651 ** Applying conservative copy propagation explicitly as a distinct reorderable increases the size of the search space by over 77%, on average, and reduces...