首页 > 解决方案 > LLVM 中是否存在 MachineFunction CFG 和 IR Function CFG 的一对一映射?

问题描述

您可以在 LLVM IRFunction级别和 CodeGenMachineFunction级别拥有 CFG。这是一对一的映射吗?我的意思是,在那些具有相似控制流的 CFG 中是否有相同数量的(Machine)BasicBlocks?我知道指令的数量可能会因为明显的原因而有所不同,但我很想知道结构是否保持不变。

标签: compiler-constructionllvmllvm-ircodegencontrol-flow-graph

解决方案


这是一对一的映射吗?我的意思是,在那些具有相似控制流的 CFG 中是否有相同数量的(机器)基本块?

不,基本块级别没有一对一的映射。原因之一是“PHI”节点不可能完全替换。“SELECT”和“SELECT_CC”节点的生成重构了机器基本块表示。


推荐阅读