On Wed, Sep 30, 2015 at 11:23 AM, Mikael Pettersson <mikpeli...@gmail.com> wrote: > Does gcc allow backends to have a say in how pointers are represented > (bits beyond the address), what happens in conversions between pointer > types, and what happens in conversions between pointers and uintptr_t? > > The target in question has: > - one pointer format and set of load/store instructions for pointers to > int/long > - another format and set of load/store instructions for pointers to char > - pointers to short use a third format in general, but can use the int/long > format IF you know which half of the word you're going to access > > What mechanisms, if any, are present in gcc to deal with this?
Basically none. The only thing I could imagine you could use is have the pointer formats be different address-spaces. The target controls how to convert pointers from/to different address-spaces. I am not aware of specialities for pointer-to-int or int-to-pointer conversion though - IIRC they simply use bit-identical conversions (thus subregs if the modes differ). But who would design this kind of weird architecture and think he could get away with that easily? Richard.