我有以下情况。
我需要在我的代码中插入某些CallInst。
我的功能原型是
void __llvmFooBar(int data, int loc);
参数loc由pass生成。我不需要任何外部数据来生成它。
但是,参数数据基本上是通过使用我的C代码中声明的一些变量来计算的。
//test.c
int main()
{
int k = 0;
happyEnding(k);
}
void happyEnding(int k)
{
int __data = seed(time()) + k%2;
//callInst to be inserted here, it should be
//__llvmFooBar(__data, 23);
myAlgorithim();
}
//pass.cpp
......
std::vector<Value *> args(2);
args[0] = ??? //need help here
args[1] = ConstantInt::get(IntegerTy, getLoc());
m_builder->CreateCall(hook, args);
从一般意义上讲,如何使用特定的命名约定(例如以__开头)使所有变量可用于llvm传递?