gpt4 book ai didi

llvm - 在llvm ir中表示void指针类型

转载 作者:行者123 更新时间:2023-12-04 04:10:22 27 4
gpt4 key购买 nike

目前,我在生成的 IR 中使用 i8* 来表示 void 指针,但这使得很难区分 void* 和 char*,例如。有没有什么通用的方法来解决这个问题?我已经搜索了很多但没有运气。

对于其他每一对类型,我都可以直接使用 llvm::Type* 来区分类型,因此如果我不能再仅针对 void 指针的特殊情况这样做,则会增加很多复杂性。

一种想法可能是使用包含 i8 的命名结构作为 void 类型(例如, %void = type { i8 } )并获取指向它的指针,但是当您给它一个 void 指针类型时,clang 生成的 IR 使用 i8*,所以我不确定每个人的优点/缺点是什么。

最佳答案

通常类型属于编译器的前端。幸运的是,LLVM 类型系统可能与您的类似,并且可以从您的下方自由更改(例如:opaque pointer types 即将推出)。不需要在 LLVM 级别区分类型——试图在类型系统和 LLVM 类型系统之间强制进行 1:1 的对应可能是错误的。

关于llvm - 在llvm ir中表示void指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36724399/

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