diff options
Diffstat (limited to 'gcc/ada/gnat_rm.texi')
-rw-r--r-- | gcc/ada/gnat_rm.texi | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 17daf356721..c3753d19cd7 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -2224,6 +2224,13 @@ users guide) in conjunction with pragma @code{Initialize_Scalars} provides a powerful new tool to assist in the detection of problems caused by uninitialized variables. +Note: the use of @code{Initialize_Scalars} has a fairly extensive +effect on the generated code. This may cause your code to be +substantially larger. It may also cause an increase in the amount +of stack required, so it is probably a good idea to turn on stack +checking (see description of stack checking in the GNAT users guide) +when using this pragma. + @node Pragma Inline_Always @unnumberedsec Pragma Inline_Always @findex Inline_Always @@ -9442,15 +9449,19 @@ thus the same lack of restriction applies. For example, if you declare: then a component clause for a component of type R may start on any specified bit boundary, and may specify a value of 49 bits or greater. +Packed bit arrays that are longer than 64 bits must always be placed +on a storage unit (byte) boundary. Any component clause that does not +meet this requirement will be rejected. + The rules for other types are different for GNAT 3 and GNAT 5 versions (based on GCC 2 and GCC 3 respectively). In GNAT 5, larger components +(other than packed arrays) may also be placed on arbitrary boundaries, so for example, the following is permitted: @smallexample @c ada - type R is array (1 .. 79) of Boolean; - pragma Pack (R); - for R'Size use 79; + type R is array (1 .. 10) of Boolean; + for R'Size use 80; type Q is record G, H : Boolean; @@ -9460,8 +9471,8 @@ is permitted: for Q use record G at 0 range 0 .. 0; H at 0 range 1 .. 1; - L at 0 range 2 .. 80; - R at 0 range 81 .. 159; + L at 0 range 2 .. 81; + R at 0 range 82 .. 161; end record; @end smallexample |