我尝试使用AllocaInst并将其插入给定BB的末尾,如下所示:
if(StringUtils.isNullOrWhiteSpace(myString)){...}
我成功地链接并创建了我的LLVMBasicBlock.so文件。但是,当我运行它来转换样本.bc文件时,它正在处理%数据时出现分段错误。
答案 0 :(得分:0)
LLVM指令的构造函数包括插入位置的参数。此参数的默认值为NULL,您在代码示例中使用了该参数。对于AllocaInst,其构造函数之一采用基本块来插入:
AllocaInst (Type *Ty, Value *ArraySize, const Twine &Name, BasicBlock *InsertAtEnd)
我的第一个建议是使用为插入说明而提供的功能。
其次,AllocaInst采用Value* ArraySize
,你提供的是0. 0可能被强制转换为NULL *。您可能想要创建相应数字的ConstantInt。 ConstantInt继承自Value,因此LLVM将安全地强制它。