创建矢量 LLVM 时出现问题
Issue Creating Vector LLVM
我正在尝试创建一个向量并使用llvm将其作为值返回。这是我的代码的样子:
Value *ArrayAST::codeGen() {
Type *dType = Type::getDoubleTy(mContext);
Type *vectorType = VectorType::get(dType, 4);
Value *emptyVector = UndefValue::get(vectorType);
Constant *index0 = Constant::getIntegerValue(dType, llvm::APInt(32, 0));
Value *numberValue = numbers[0] -> codeGen(); // double 1.000000e+00
Value *fullVector = InsertElementInst::Create(emptyVector, numberValue, index0);
return fullVector;
}
这将生成以下 IR 代码:
define <4 x double> @x() {
entry:
ret <4 x double> <badref>
}
但是,正如您在上面看到的,有一个问题:<badref>
.当我尝试运行它时,它无法构建:
llvm-as: out.ll:3:21: error: expected type
ret <4 x double> <badref>
我是LLVM的新手,我不太确定解决此问题的最佳方法是什么。
编辑
如果有帮助,所有代码都在 GitHub 上。
编辑 2
如果我没记错的话(我完全可以(,IR 代码应该看起来像这样:
define <4 x double> @x() {
entry:
%tmp4 = insertelement <4 x double> undef, double 1.000000e+01, i32 0
ret <4 x double> %tmp4
}
问题是我没有将向量添加到我的构建器中。以下为我做了诀窍:
Builder.Insert(fullVector);
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 编译 llvm 插件时出现问题:llvm/Config/llvm-config.h:没有这样的文件或目录
- 构建LLVM 10 C++工具链的问题
- LLVM 万花筒教程 JIT 编译问题
- 通过命令行参数获取llvm ir文件时面临问题
- LLVM 传递链接问题:未定义的符号
- 创建矢量 LLVM 时出现问题
- 使用 LLVM 从 const void * 转换为模板类型时出现问题
- 具有类型比较的 LLVM 测试示例问题
- 使用 LLVM 在 OSX 上将问题与 boost::p rogram_options 链接
- 使用 llvm-gcc 4.x 安装 srilm 1.6.0 时出现问题
- LLVM设置函数传递的问题-命名空间问题