This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] change handling of convetion C pointer on IVMS


Manually tested on IVMS
Tested on i686-linux, committed on trunk.

This patch affects OpenVMS 64-bit ports. The problem is that the
HP C compiler can use either 32 or 64 bit pointers depending on
compiler options. This means that Convention C in GNAT must decide
on which to choose. An analysis shows that 32-bits is a better
default with respect to legacy compatibility. An explicit size
clause can be used to force 64-bits.

Also some clean up in handling of front-end layout on e.g. GNAAMP target.

2006-10-31  Robert Dewar  <dewar@adacore.com>

        * layout.adb (Layout_Record_Type): Deal with non-static subtypes of
        variant records
        (Layout_Variant_Record): Retrieve the discriminants from the entity
	rather than from the type definition, because in the case of a full
	type for a private type we need to take the discriminants from the
	partial view.
        (Layout_Component_List): When applying the Max operator to variants with
        a nonstatic size, check whether either operand is static and scale that
        operand from bits to storage units before applying Max.
	(Layout_Type): In VMS, if a C-convention access type has no explicit
	size clause (and does not inherit one in the case of a derived type),
	then the size is reset to 32 from 64.

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]