c++ - GetElementPtr 和 C++ API 之间的混淆

标签 c++ llvm llvm-ir

查看GetElementPtr的文档:

http://llvm.org/docs/GetElementPtr.html

示例依赖于多个索引:第一个用于结构成员,第二个用于数组中的元素。据推测,这会返回基指针的偏移量

我正在尝试找出使用 C++ API 创建给定 GetElementPtr 指令的正确方法。不幸的是,CreateXXXGEP 指令有多种变体,其中一个参数“val”我认为是索引之一。它的任何版本似乎都没有像文档中那样使用两个索引:http://llvm.org/docs/doxygen/html/classllvm_1_1IRBuilder.html

甚至 CreateStructGEP 也使用单个 idx 参数!

我想做一件很简单的事;我想取一个字符缓冲区:

Value* vB = llvm::ConstantDataArray::GetString(...)

并使用指向数组的指针将其传递给另一个需要 i8*

的函数

最佳答案

您可能正在寻找采用 Value * 数组的变体。构造 ConstantInts 并将它们放入 std::vector 中并传入。

关于c++ - GetElementPtr 和 C++ API 之间的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425359/

相关文章:

c++ - g++ 编译器中的 “Uninitialized use” 警告

由单独源文件中的全局变量引起的 C++ 段错误

c - 使用Clang编译器通过Make构建LLVM项目时出现怪异标志

ios - PGO:为什么 XCode 会生成空的 .profdata 文件?

c++ - 是否可以在 llvm 中为用户定义的传递添加参数

c++ - 模板中定义的复制赋值运算符被编译器删除

c++ - 需要将多个 header 请求附加到 QNetworkRequest

LLVM 万花筒教程在本地 extern 上失败

c++ - 从我的 llvm pass 发出 llvm-ir 字节码

python - 执行从 Rust/Python 源代码生成的 LLVM IR 代码