gpt4 book ai didi

compiler-construction - 在 LLVM 中查找基本 block 的后继列表

转载 作者:行者123 更新时间:2023-12-04 08:37:56 24 4
gpt4 key购买 nike

在 LLVM 中,BasicBlock 具有属性 getSinglePredecessor() 和 getSingleSuccessor(),但我需要获取基本块的后继和前驱的完整列表。我怎样才能在 llvm 中实现这一点?

我的代码是

        virtual bool runOnFunction(Function &F) {

for (Function::iterator b = F.begin(), be = F.end(); b != be; ++b) {
//Here I need to get the predecessor and successsor of the basic block b
}
}

最佳答案

我同意 BasicBlock 没有直接属性。相反,您可以 get the terminator instruction 基本块,然后遍历其 successors

或者,基于将 source code 读取到 BasicBlock 类,您可以从 BasicBlock 实例创建 pred_iterator 和 succ_iterator。例如:

for (Function::iterator b = F.begin(), be = F.end(); b != be; ++b)
{
BasicBlock* bb = dyn_cast<BasicBlock>(&*b);
for (pred_iterator pit = pred_begin(bb), pet = pred_end(bb); pit != pet; ++pit)

关于compiler-construction - 在 LLVM 中查找基本 block 的后继列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34773528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com