+2014-07-29 Robert Dewar <dewar@adacore.com>
+
+ * types.ads (Mechanism_Type): Change range back to -18 .. Int'Last with
+ documentation that explains the need for this extended range
+ (use by C_Pass_By_Copy).
+
2014-07-29 Robert Dewar <dewar@adacore.com>
* gnat_rm.texi, sem_prag.adb: Minor reformatting.
-- mechanism. See specification of Sem_Mech for full details. The following
-- subtype is used to represent values of this type:
- subtype Mechanism_Type is Int range -18 .. 0;
+ subtype Mechanism_Type is Int range -18 .. Int'Last;
-- Type used to represent a mechanism value. This is a subtype rather than
-- a type to avoid some annoying processing problems with certain routines
- -- in Einfo (processing them to create the corresponding C).
+ -- in Einfo (processing them to create the corresponding C). The values in
+ -- the range -18 .. 0 are used to represent mechanism types declared as
+ -- named constants in the spec of Sem_Mech. Positive values are used for
+ -- the case of a pragma C_Pass_By_Copy that sets a threshold value for the
+ -- mechanism to be used. For example if pragma C_Pass_By_Copy (32) is given
+ -- then Default_C_Record_Mechanism is set to 32, and the meaning is to use
+ -- By_Reference if the size is greater than 32, and By_Copy otherwise.
------------------------------
-- Run-Time Exception Codes --