Why do we need dependencies analysis?
Dependencies analysis is the foundation for instruction scheduling and data-cached optimization. It detects and analyzes the conflict relation on resources, control, data, etc, such that other transform can reorder the instruction/BasicBlock to chase better performance.
Here, we mainly focus on the instruction dependencies.