LLVM Pass:更改函数调用的参数值

时间:2019-07-08 02:17:13

标签: c++ llvm llvm-ir llvm-c++-api

在我的项目的

部分中,基于一些分析,我必须更改函数调用的参数。我在llvm-ir级别上执行此操作。像这样的东西

doWork(“ work”,functionBefore)

基于我的结果,我的llvm-pass应该能够像这样传递传递给函数调用的函数指针

doWork(“ work”,functionAfter)

假设functionBefore和functionAfter具有相同的返回类型。

1。是否可以使用llvm pass更改参数?

2。还是我应该删除指令并重新创建所需的指令?

请提供一些建议或指导,以实现此目的?

调用该函数的llvm可能是这样的-

调用void @ _Z7processNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPFvS4_E(%“ class.std :: __ cxx11 :: basic_string” * nonnull%1,void(%“ class.std :: __ cxx11cc_11_cic_c_11_cn_char_Est_char_Est_char_Best_char) )           标记%7展开标签%13

0 个答案:

没有答案