如何在llvm中获取由allocaInstr分配的地址?

时间:2014-07-01 09:27:47

标签: memory-management llvm alloca

我正在尝试对ll文件执行一些检测。我想要实现的任务之一是:

每当我遇到AllocaInstr时:

%1 = alloca i32

我想按照以下方式设置一个函数call __save_addr()

%1 = alloca i32

call __save_addr(i32* %1)

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

  1. Iterate over all the instructions in the function。对于每一个,

  2. check是否为AllocaInst。如果是,

  3. Create a new CallInst调用您的函数*,并将AllocaInst实例作为第一个参数传递。

  4. *如果您的功能已在模块中,您可以通过Module::getFunction找到它;如果它在另一个模块中,你必须为它创建一个声明。