我想以LLVM IR格式插入一个添加指令,类似于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
。
如何定义全局变量并设置其值?
答案 0 :(得分:1)
全局变量总是指针 - 在您的情况下,其类型将是i32*
。您需要先load
才能add
之前使用store
。然后,您必须使用全局变量作为存储地址alloca
新值。
与局部变量相同,顺便说一下 - {{1}}值总是指针。