[llvm-dev] Why are GEPs type based?

Nikita Popov via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 13 13:08:09 PDT 2020


Hi,

I've been wondering why LLVMs GEP instructions are based on types, rather
than encoding the raw address calculation as a base pointer plus some
scaled offsets (still in the form of a GEP, to retain provenance).

The type information does not seem particularly useful (shouldn't be used
as an optimization base, because struct layouts lie), but increases the
non-canonical IR space (there are many ways to encode the same GEP) and
increases compile-time (optimizations need to constantly decompose GEPs,
e.g. to get constant offsets).

What am I missing here?

Nikita,
Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200713/28789b73/attachment.html>


More information about the llvm-dev mailing list