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:
-
use_count
andexpr
inSSAVarEntry
-
block_trace
inMuFunctionVersion
-
exception_blocks
inFunctionContent
-
control_flow
inBlock
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.