llvm ir跳到另一个功能中的基本块



我已经通过我的通行证生成了一个IR,在此IR中的一个函数中,我想跳回呼叫者函数的基本挡块,内部呼叫器函数ext_callee函数被这样调用:

%4 = call i1 @ext_callee(i32 32, i32 %3, i32 -4, i8* blockaddress(@tobecalled, %5), i8* blockaddress(@tobecalled, %7)).

最后两个参数是我想跳到此ext_callee函数内的基本框架地址。我尝试使用indirectbr指令与一个封锁参数之一,但是当我运行IR时,它会提示段故障。我搜索了LLVM文档,但没有找到如何跳到另一个功能的基本块。有人有线索吗?非常感谢!

您无法执行此操作。

每http://llvm.org/docs/langref.html#i-indirectbr:

控制转移到地址参数中指定的块。所有可能的目标块必须在标签列表中列出,否则该指令具有不确定的行为。这意味着跳到其他功能中定义的标签也具有不确定的行为。

最新更新