我编写了一个函数传递,它初始化一个全局变量,然后将一个函数插入到 IR 中。我想将函数调用的结果设置为全局变量,但不确定如何将 CallInst 类型转换为 GlobalVariable 类型。这是我为全局变量声明编写的代码:
GlobalVariable *virtAddr = new GlobalVariable(*F.getParent(),
Type::getInt8PtrTy(F.getContext(),8),
false,
GlobalValue::ExternalLinkage,
0,
"virt_addr");
virtAddr->setAlignment(4);
然后我尝试在这一行设置全局变量:
virtAddr = builder.CreateCall(mmap,putsArgs,"mmap");
当我尝试编译时,我收到此错误:
error: assigning to 'llvm::GlobalVariable *' from incompatible type
'llvm::CallInst *'
谢谢你的帮助!