On 03/23/2015 03:33 PM, Eric Botcazou wrote:
FWIW, you have to be very careful depending on REG_POINTER. I believe
Ada can still set REG_POINTER on things that are not pointers (via
virtual origins) and cross jumping can cause problems too where one arm
has x + y with X as the pointer and the other arm has x + y with Y as
the pointer.
Can you elaborate a bit about Ada here? Front-ends don't fiddle directly with
RTL for years so I'm a little at a loss here.
It's been years since I looked at this, but my recollection was that the
Ada front end could set REG_POINTER for virtual origins. From a
correctness standpoint it only matters on a few obscure targets and only
causes a failure when the flag is set on a pseudo with a value on a
different, unmapped, page than the full effective address.
Jeff