> is having Address be an integer useful any more?  Nowadays it should be
> possible to declare Address to be an access type with no associated storage
> pool.  Even nicer might be to have it be turned into void* when lowering to
> GCC types. After all, Address is really used much like void*; see how GNAT
> declares malloc for example.  Both of these possibilities would probably
> play better with GCC's middle end type system, which considers integers to
> be different to pointers.

The polymorphism pointer/address indeed proves to be problematic in certain 
circumstances (e.g. it breaks on m68k, see PR ada/48835).  My understanding is 
that using pointers in Ada is heavyweight, hence the choice of an integer for 
System.Address; and I'm reluctant to enter the type morphing business in gigi.

But we could investigate changing System.Memory to use an access type instead 
of System.Address.  It's a compiler unit so the impact should be limited, and 
at least this would solve the m68k problem.

-- 
Eric Botcazou

Reply via email to