This issue supersedes RFE 1147138.
Currently compiler phases may call phases within themselves. Compiler phases are also wrapped in optimizations plan elements which is beneficial in creating composite elements (in particular for producing high-level compiler phase timing information). This wrapping and calling of phases makes it confusing as to where certain properties of IR hold. It means also that we may recompute side data structures for the IR, such as dominator information, when there is no need. We should create a scheme where we can organize compiler phases and have phases inserted into compiler plans when we know we require certain side data structures to be present. Examples of properties that can be conditions are:
- SSA flavor
- register lists