目前,我在生成的IR中使用 i8* 来表示 void 指针,但这使得很难区分 void* 和 char*。有没有常见的解决方法?我已经搜索了很多,但没有找到。
对于其他类型对,我能够直接使用 llvm::Type* 来区分类型,所以如果不能再为 void 指针特例这样做,它将增加很多复杂性。
一种想法可能是使用包含 i8 的命名结构作为 void 类型(例如,%void = type { i8 } ),并取代指向那个的指针,但是当你给它一个 void 指针类型时,clang 生成的 IR 使用 i8* ,因此我不确定每种方法的优缺点。