从另一个文件定义的插入函数调用



我想在某个指令之前插入一个函数,但函数调用是在另一个文件中定义的。我试着

IRBuilder<> Builder(pi);
CallInst *callOne = Builder.CreateCall(func_ins, "foo");

,其中func_insFunction*(一般为Value*), foo为指定的调用函数的变量名前缀。由于这个函数是在另一个文件中定义的,我不知道指针func_ins应该指向哪里,所以我只是将其设置为NULL,但它不起作用。

谁能给我一些提示如何解决这个问题?

还有一个问题是,我可以使用WriteBitcodeToFile来转储有外部函数调用文件的仪表代码,因为我想知道它可能会报告Referencing function in another moduleBroken Module,同时执行模块检查?

只能从同一个Module调用一个函数,不能使用NULL作为被调用方。

如果函数在另一个模块中定义,你需要首先在你想要调用的模块中声明它,然后使用声明进行调用。

要声明它,在新模块中创建一个相同的函数(通过function:: create),只是不给它分配一个主体。

最新更新