SelectionDAGBuilder遍历LLVM IR中的每一个basic block,生成SelectionDAG。在这个过程中,某些指令,如call和ret已经需要目标相关信息。比如如何传递调用参数,如何从函数返回。
为了解决这个问题,TargetLowering类中的算法会在这里被首次使用。不同目标的backend要实现TargetLowering抽象接口。只有一小部分节点会在这里转成目标相关节点,大部分节点都在instruction selection中在pattern match后被替换成机器指令。