Opaque pointers and GEP

I was experimenting on godbolt with opaque pointers and I noticed that
while GEP with an opaque pointer type seems to work exactly as I would
expect, it returns a non-opaque pointer type.

Would it not make sense for GEP to return `ptr` when its basis pointer
is a `ptr`, at least when thinking about how a migration would work?

Here's an example: Compiler Explorer - the left compiler
is happy with a `bitcast` but the right one is angry without.

I think that makes sense, that’s just something that hasn’t been visited yet. Feel free to send out a patch if you’d like, else I’ll get around to it at some point.