LLVM IR:具有可变 BasicBlock 目标的分支指令?

Posted

技术标签:

【中文标题】LLVM IR:具有可变 BasicBlock 目标的分支指令?【英文标题】:LLVM IR: Branch instruction with variable BasicBlock target? 【发布时间】:2017-02-11 12:54:39 【问题描述】:

LLVM 是否支持带有变量 BasicBlock 目标的分支指令?

更具体地说,假设我将所有无条件的br 指令转换为对某个函数f 的函数调用。那么是否可以将目标标签作为参数提供给f,然后在f 内的无条件分支中使用此标签?

或者是唯一的解决方案是在f中创建一个switch,将所有BB映射到唯一ID,然后用目标BB对应的ID调用f

【问题讨论】:

【参考方案1】:

据我所知,标签的非本地间接分支是不可能的。

http://blog.llvm.org/2010/01/address-of-label-and-indirect-branches.html?m=1

【讨论】:

你确定吗?据我所知,作者选择不讨论这个话题,还是?

以上是关于LLVM IR:具有可变 BasicBlock 目标的分支指令?的主要内容,如果未能解决你的问题,请参考以下文章

LLVM 基本块通行证

LLVM 之 IR 篇:零基础快速入门 LLVM IR

LLVM 之 IR 篇:如何使用 LLVM IR 优化器

LLVM 之 IR 篇:如何编写生成 LLVM IR 的工具

LLVM 之 IR 篇:如何扩展 LLVM IR 优化器

LLVM 之 IR 篇:如何基于传统 Pass 框架扩展 LLVM IR 优化器