全部
我想知道 llvm 如何传递从输入源定义的输出常量 char 数组。这是我想做的一个例子。
测试输入源
char* msg = "hello, world\n";
void msg_out(char * in) {
printf("msg: %s \n", in);
}
main () {
...
msg_out(msg);
...
}
llvm 通行证片段
...
const CallInst* ci = dyn_cast<CallInst>(val);
const Function* func = ci->getCalledFunction();
if (func->getName() == "msg_out") {
errs() << ci->getOperand(0);
}
...
使用源代码,上面的 llvm pass 将打印以下输出。
输出
i8* getelementptr inbounds ([8 x i8]* @10, i32 0, i32 0)
但是,我想要实现的是
- 确定第一个参数是一个常量字符数组
- 如果是这样,打印出“你好,世界\n”
谁能让我知道如何实现这个?
非常感谢您提前提供的帮助!/康国