我在LLVM中编写函数传递,需要调用方法Module :: getOrInsertFunction。我需要访问当前函数的模块。我怎么得到它?
答案 0 :(得分:3)
您可以使用getParent()函数:http://llvm.org/docs/doxygen/html/classllvm_1_1GlobalValue.html#a9e1fc23a17e97d2d1732e753ae9251ac
答案 1 :(得分:1)
请参阅:http://llvm.org/docs/WritingAnLLVMPass.html 根据此处的文档, 明确地说,FunctionPass子类不允许: 1.检查或修改当前正在处理的功能以外的其他功能。 2。从当前模块添加或删除功能。 3.从当前模块添加或删除全局变量。 4.维护runOnFunction调用之间的状态(包括全局数据)。
因此,您不能从FunctionPass内部调用getOrInsertFunction。您将需要一个ModulePass