如何在IR文件llvm中插入add指令?

如何在IR文件llvm中插入add指令?,llvm,Llvm,我想插入LLVM IR格式的add指令,类似于x=x+1,其中x是全局变量。我试过这个: GlobalVariable* x = new GlobalVariable(mod,Type::getInt32Ty(Context),false,GlobalValue::CommonLinkage,0,"xCounter"); Value one = ConstantInt::get(Type::getInt32Ty(Context),1); newInst = BinaryOperator::C

我想插入LLVM IR格式的add指令,类似于
x=x+1
,其中x是全局变量。我试过这个:

GlobalVariable* x = new GlobalVariable(mod,Type::getInt32Ty(Context),false,GlobalValue::CommonLinkage,0,"xCounter");

Value one =  ConstantInt::get(Type::getInt32Ty(Context),1);
newInst = BinaryOperator::Create(Instruction::Add, , one ,"counter", insertPos);
但出现错误时,它不接受类型
GlobalVariable


如何定义全局变量并设置其值?

全局变量始终是指针-在您的情况下,其类型将是
i32*
。您需要先从它
加载
,然后才能
添加任何内容。然后,您必须使用全局变量作为存储地址来存储新值


局部变量也是一样,顺便说一句-
alloca
值始终是指针。

最后一行-如何打印-实际上是它自己的问题。我从这个问题中删除了它,你应该单独问。为什么我需要在使用它之前从内存中加载全局变量,在我的情况下,初始值是常量零,我如何在add指令中使用它?@user3411138当你有一个指针时-正如我所写的,全局变量始终是指针-然后需要先从它们加载值,然后才能使用它。