summaryrefslogtreecommitdiffstats
path: root/gcc/ada/gnat_rm.texi
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/gnat_rm.texi')
-rw-r--r--gcc/ada/gnat_rm.texi21
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
OpenPOWER on IntegriCloud