+++ title = "Benefits of explicit basic blocks for scheduling" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["3c3d"] forwardlinks = ["3c3f", "3c3e1"] zettelid = "3c3e" +++ Explicit basic blocks for scheduling means that there is a much more structured approach to the scheduling algorithm. But it also means that the intermediate languages cannot be directly translated to RTL again, as that language is unaware of basic blocks. The benefit of having support of parallel execution in the target language is that the scheduling can be much more powerful as well, as it can express the parallel execution of instructions directly. This means that any back end that can take advantage of these parallel instructions can directly use their parallel nature, without having to do that in a post-scheduling step. In the worst case, this can then be translated back into a sequential language anyways, if the goal was just to schedule instructions for a sequential processor, which would have gotten rid of any inefficiencies due to a back end specific scheduling algorithm. This would mean that the back end can be taken advantage of for all the following back ends that compcert has.