我是 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中提供地址位置。任何帮助将不胜感激。
答案 0 :(得分:1)
您不能以这种方式初始化数组。代码的问题是数组大小。 AllocaInst
期望数组大小为llvm::Value*
,即大小必须存在于IR中。要获得常数4,必须使用ConstantInt::get
在IR中创建一个常量整数值。 ConstantInt*
可以提供给AllocaInst构造函数。