From 257baf5ab9693cded2273f32293fdc925aea35c0 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Wed, 3 Jun 2020 10:30:09 +0200 Subject: [PATCH] [Ada] Small addition and tweaks in documentation on freezing gcc/ada/ * einfo.ads (Delayed Freezing and Elaboration): Minor tweaks. Document the discrepancy between the aspect and the non-aspect cases for alignment settings in object declarations. --- gcc/ada/einfo.ads | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index abb7cba..f3a042a 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -266,28 +266,30 @@ package Einfo is -- The flag Has_Delayed_Freeze indicates that an entity carries an explicit -- freeze node, which appears later in the expanded tree. --- a) The flag is used by the front-end to trigger expansion actions which +-- a) The flag is used by the front end to trigger expansion activities which -- include the generation of that freeze node. Typically this happens at the -- end of the current compilation unit, or before the first subprogram body is --- encountered in the current unit. See files freeze and exp_ch13 for details +-- encountered in the current unit. See units Freeze and Exp_Ch13 for details -- on the actions triggered by a freeze node, which include the construction -- of initialization procedures and dispatch tables. --- b) The presence of a freeze node on an entity is used by the backend to +-- b) The presence of a freeze node on an entity is used by the back end to -- defer elaboration of the entity until its freeze node is seen. In the -- absence of an explicit freeze node, an entity is frozen (and elaborated) -- at the point of declaration. -- For object declarations, the flag is set when an address clause for the -- object is encountered. Legality checks on the address expression only take --- place at the freeze point of the object. +-- place at the freeze point of the object. In Ada 2012, the flag is also set +-- when an address or an alignment aspect for the object is encountered (note +-- the discrepancy with the non-aspect case). -- Most types have an explicit freeze node, because they cannot be elaborated -- until all representation and operational items that apply to them have been -- analyzed. Private types and incomplete types have the flag set as well, as -- do task and protected types. --- Implicit base types created for type derivations, as well as classwide +-- Implicit base types created for type derivations, as well as class-wide -- types created for all tagged types, have the flag set. -- If a subprogram has an access parameter whose designated type is incomplete -- 2.7.4