gpt4 book ai didi

types - 在 LLVM 中定义新类型

转载 作者:行者123 更新时间:2023-12-01 12:46:09 29 4
gpt4 key购买 nike

在一个非常简单的 LLVM IR 程序中,我可以做到

%MyStruct = type { i32 }
%MyInt = type i32

declare void @main(%MyStruct, %MyInt)

但是,我不知道如何产生相同的 %MyStruct = type { i32 }%MyInt = type i32使用 LLVM C++ API 的语句。过去几天我一直在搜索文档,我发现唯一接近我想要的东西是手动定义这里提到的新类型: http://llvm.org/docs/ExtendingLLVM.html#adding-a-new-type

但是,我想要一种使用 LLVM C++ API 定义和使用新类型的方法,就像我可以使用函数等一样。

我能想到的唯一另一种方法是单独记录我的自定义类型和它们的 LLVM 原始基类型,并在声明函数时使用原始基类型;但是如果 LLVM 本身内置了一种更快的方法(正如我通过查看一些 LLVM IR 示例并生成上面的代码所发现的那样),我不想开始这样做。

编辑:我做了更多的环顾四周,我发现了一个对函数的引用,它似乎正是我需要的函数 addTypeNamehttp://llvm.org/docs/ProgrammersManual.html还有 http://llvm.org/doxygen/Module_8h-source.html ,但是这似乎就是全部,因为我看不到任何对 addTypeName 的引用。在实际文档中,我无法使用 addTypeName 编译程序因为它声称该方法不存在。

最佳答案

对您来说最简单的方法是使用 cpp 后端 (llc -march=cpp) - 给定 IR,它将生成重现 IR 所需的 C++ API 调用序列。

关于types - 在 LLVM 中定义新类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745857/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com