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

时间:2014-03-12 14:34:23

标签: llvm

我想以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

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

1 个答案:

答案 0 :(得分:1)

全局变量总是指针 - 在您的情况下,其类型将是i32*。您需要先load才能add之前使用store。然后,您必须使用全局变量作为存储地址alloca新值。

与局部变量相同,顺便说一下 - {{1}}值总是指针。