我是llvm的新手,在GEP指令中想知道指定的第一个类型的目的是什么。如果将其更改为与MyType
不同的任何其他类型,则会收到以下错误消息。那么为什么我需要完全明确地指定它,它的目的是什么?
error: explicit pointee type doesn't match operand's pointee type
getelementptr %MyType, %MyType* %7, i64 0, i32 0
答案 0 :(得分:0)
有一个最终删除第二种类型的总体计划,使“指针”成为唯一的指针类型。 LLVM当前包含一些过渡机制,这些机制仅在该过渡的情况下才有意义。
此转换完成时(今年?下一年?谁知道),GEP的结果类型将取决于其第一个参数。在此过渡期间,GEP会检查第一和第二自变量是否暗示不同的结果类型。