Reorganization, global code motion, backward dataflow, loop tree construction, dom tree improvements, collapse region chains in CCP
- Reorganized repo into hercules_ir, hercules_opt, and hercules_codegen
- Implemented global code motion, as described in Click's thesis (nodes are placed as loop invariant, and then as control dependent as possible)
- Generalized dataflow core code to work with backward dataflow, created backward dataflow helper
- Construct loop tree from dom tree - identify loop back edges, identify natural loops, and identify tree structure
- Various enhancements to dom tree (common ancestor, lowest amongst, chain iterator)
- Collapse region chains during CCP
- Various improvements to other parts of compiler, such as subgraph