Separating compilation information from IR data structures
It is poorly designed that the data structures for IR also contains information that is gradually generated during compilation, such as:
They are initially not available, and are generated during compilation. They can be safely destroyed after the compilation. These compilation information should be stored separately from the IR.