使用AllocaInst的例子:LLVM

时间:2017-08-21 14:41:12

标签: c++ llvm llvm-clang llvm-ir

我是 LLVM 的新手,我想通过示例了解AllocaInst的正确用法。我尝试在线搜索,甚至llvm网页也没有正确的例子。 下面是我试图执行的代码补丁。

string temp =(dyn_cast<ConstantInt>operand0))->getValue()).toString(10,true);
Type* A = IntegerType::getInt32Ty(F.getContext());
string name = "t"+to_string(++counter);
AllocaInst* variable = new AllocaInst(A,NULL,4,name,&*inst);

当我运行时,我会收到错误:

  

错误:没有匹配函数来调用'llvm :: AllocaInst :: AllocaInst(llvm :: Type *&amp;,NULL,int,std :: string&amp;,llvm :: Instruction *)'        AllocaInst * variable = new AllocaInst(A,NULL,4,name,&amp; * inst);

我想知道如何在AllcaInst中提供地址位置。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您不能以这种方式初始化数组。代码的问题是数组大小。 AllocaInst期望数组大小为llvm::Value*,即大小必须存在于IR中。要获得常数4,必须使用ConstantInt::get在IR中创建一个常量整数值。 ConstantInt*可以提供给AllocaInst构造函数。