[multiple changes]
2012-10-02 Eric Botcazou <ebotcazou@adacore.com> * types.h (N_Return_Statement): Delete. * gcc-interface/trans.c (gnat_to_gnu): Replace N_Return_Statement with N_Simple_Return_Statement. 2012-10-02 Ed Schonberg <schonberg@adacore.com> * freeze.adb (Freeze_Entity): in a generic context, aspects must be analyzed because they may be queried subsequently within the generic unit, even if no other freezing actions are generated for an entity. * sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): iterator aspects must be analyzed because they are delayed aspects and the corresponding attribute definition clause may not have been analyzed yet. 2012-10-02 Yannick Moy <moy@adacore.com> * gnat_rm.texi: Minor editing. From-SVN: r191975
This commit is contained in:
parent
92a7cd4694
commit
7640ef8aba
|
@ -1,3 +1,24 @@
|
||||||
|
2012-10-02 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* types.h (N_Return_Statement): Delete.
|
||||||
|
* gcc-interface/trans.c (gnat_to_gnu): Replace N_Return_Statement with
|
||||||
|
N_Simple_Return_Statement.
|
||||||
|
|
||||||
|
2012-10-02 Ed Schonberg <schonberg@adacore.com>
|
||||||
|
|
||||||
|
* freeze.adb (Freeze_Entity): in a generic context, aspects must
|
||||||
|
be analyzed because they may be queried subsequently within the
|
||||||
|
generic unit, even if no other freezing actions are generated
|
||||||
|
for an entity.
|
||||||
|
* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): iterator
|
||||||
|
aspects must be analyzed because they are delayed aspects and
|
||||||
|
the corresponding attribute definition clause may not have been
|
||||||
|
analyzed yet.
|
||||||
|
|
||||||
|
2012-10-02 Yannick Moy <moy@adacore.com>
|
||||||
|
|
||||||
|
* gnat_rm.texi: Minor editing.
|
||||||
|
|
||||||
2012-10-02 Robert Dewar <dewar@adacore.com>
|
2012-10-02 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
* sinfo.adb, sinfo.ads, sem_util.adb, sem_util.ads, types.h,
|
* sinfo.adb, sinfo.ads, sem_util.adb, sem_util.ads, types.h,
|
||||||
|
|
|
@ -2571,8 +2571,15 @@ package body Freeze is
|
||||||
-- It is improper to freeze an external entity within a generic because
|
-- It is improper to freeze an external entity within a generic because
|
||||||
-- its freeze node will appear in a non-valid context. The entity will
|
-- its freeze node will appear in a non-valid context. The entity will
|
||||||
-- be frozen in the proper scope after the current generic is analyzed.
|
-- be frozen in the proper scope after the current generic is analyzed.
|
||||||
|
-- However, aspects must be analyzed because they may be queried later
|
||||||
|
-- within the generic itself, and the corresponding pragma or attribute
|
||||||
|
-- definition has not been analyzed yet.
|
||||||
|
|
||||||
elsif Inside_A_Generic and then External_Ref_In_Generic (Test_E) then
|
elsif Inside_A_Generic and then External_Ref_In_Generic (Test_E) then
|
||||||
|
if Has_Delayed_Aspects (E) then
|
||||||
|
Analyze_Aspects_At_Freeze_Point (E);
|
||||||
|
end if;
|
||||||
|
|
||||||
return No_List;
|
return No_List;
|
||||||
|
|
||||||
-- AI05-0213: A formal incomplete type does not freeze the actual. In
|
-- AI05-0213: A formal incomplete type does not freeze the actual. In
|
||||||
|
|
|
@ -6241,7 +6241,7 @@ gnat_to_gnu (Node_Id gnat_node)
|
||||||
: VEC_last (loop_info, gnu_loop_stack)->label));
|
: VEC_last (loop_info, gnu_loop_stack)->label));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case N_Return_Statement:
|
case N_Simple_Return_Statement:
|
||||||
{
|
{
|
||||||
tree gnu_ret_obj, gnu_ret_val;
|
tree gnu_ret_obj, gnu_ret_val;
|
||||||
|
|
||||||
|
|
|
@ -1921,7 +1921,7 @@ where @var{T} is a limited record type imported from C++ with pragma
|
||||||
The first two forms import the default constructor, used when an object
|
The first two forms import the default constructor, used when an object
|
||||||
of type @var{T} is created on the Ada side with no explicit constructor.
|
of type @var{T} is created on the Ada side with no explicit constructor.
|
||||||
The latter two forms cover all the non-default constructors of the type.
|
The latter two forms cover all the non-default constructors of the type.
|
||||||
See the GNAT users guide for details.
|
See the @value{EDITION} User's Guide for details.
|
||||||
|
|
||||||
If no constructors are imported, it is impossible to create any objects
|
If no constructors are imported, it is impossible to create any objects
|
||||||
on the Ada side and the type is implicitly declared abstract.
|
on the Ada side and the type is implicitly declared abstract.
|
||||||
|
@ -3101,8 +3101,8 @@ initialize with invalid values (similar to Normalize_Scalars, though for
|
||||||
Initialize_Scalars it is not always possible to determine the invalid
|
Initialize_Scalars it is not always possible to determine the invalid
|
||||||
values in complex cases like signed component fields with non-standard
|
values in complex cases like signed component fields with non-standard
|
||||||
sizes). You can also initialize with high or
|
sizes). You can also initialize with high or
|
||||||
low values, or with a specified bit pattern. See the users guide for binder
|
low values, or with a specified bit pattern. See the @value{EDITION}
|
||||||
options for specifying these cases.
|
User's Guide for binder options for specifying these cases.
|
||||||
|
|
||||||
This means that you can compile a program, and then without having to
|
This means that you can compile a program, and then without having to
|
||||||
recompile the program, you can run it with different values being used
|
recompile the program, you can run it with different values being used
|
||||||
|
@ -3113,13 +3113,14 @@ uninitialized value.
|
||||||
|
|
||||||
It is even possible to change the value at execution time eliminating even
|
It is even possible to change the value at execution time eliminating even
|
||||||
the need to rebind with a different switch using an environment variable.
|
the need to rebind with a different switch using an environment variable.
|
||||||
See the GNAT users guide for details.
|
See the @value{EDITION} User's Guide for details.
|
||||||
|
|
||||||
Note that pragma @code{Initialize_Scalars} is particularly useful in
|
Note that pragma @code{Initialize_Scalars} is particularly useful in
|
||||||
conjunction with the enhanced validity checking that is now provided
|
conjunction with the enhanced validity checking that is now provided
|
||||||
in GNAT, which checks for invalid values under more conditions.
|
in GNAT, which checks for invalid values under more conditions.
|
||||||
Using this feature (see description of the @option{-gnatV} flag in the
|
Using this feature (see description of the @option{-gnatV} flag in the
|
||||||
users guide) in conjunction with pragma @code{Initialize_Scalars}
|
@value{EDITION} User's Guide) in conjunction with
|
||||||
|
pragma @code{Initialize_Scalars}
|
||||||
provides a powerful new tool to assist in the detection of problems
|
provides a powerful new tool to assist in the detection of problems
|
||||||
caused by uninitialized variables.
|
caused by uninitialized variables.
|
||||||
|
|
||||||
|
@ -3127,8 +3128,8 @@ Note: the use of @code{Initialize_Scalars} has a fairly extensive
|
||||||
effect on the generated code. This may cause your code to be
|
effect on the generated code. This may cause your code to be
|
||||||
substantially larger. It may also cause an increase in the amount
|
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
|
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)
|
checking (see description of stack checking in the @value{EDITION}
|
||||||
when using this pragma.
|
User's Guide) when using this pragma.
|
||||||
|
|
||||||
@node Pragma Inline_Always
|
@node Pragma Inline_Always
|
||||||
@unnumberedsec Pragma Inline_Always
|
@unnumberedsec Pragma Inline_Always
|
||||||
|
@ -4147,8 +4148,8 @@ MODE ::= SUPPRESSED | CHECKED | MINIMIZED | ELIMINATED
|
||||||
@noindent
|
@noindent
|
||||||
This pragma sets the current overflow mode to the given mode. For details
|
This pragma sets the current overflow mode to the given mode. For details
|
||||||
of the meaning of these modes, see section on overflow checking in the
|
of the meaning of these modes, see section on overflow checking in the
|
||||||
GNAT users guide. If only the @code{General} parameter is present, the
|
@value{EDITION} User's Guide. If only the @code{General} parameter is present,
|
||||||
given mode applies to all expressions. If both parameters are present,
|
the given mode applies to all expressions. If both parameters are present,
|
||||||
the @code{General} mode applies to expressions outside assertions, and
|
the @code{General} mode applies to expressions outside assertions, and
|
||||||
the @code{Eliminated} mode applies to expressions within assertions.
|
the @code{Eliminated} mode applies to expressions within assertions.
|
||||||
|
|
||||||
|
@ -4164,14 +4165,18 @@ remaining declarations and statements in that scope.
|
||||||
|
|
||||||
The pragma @code{Suppress (Overflow_Check)} sets mode
|
The pragma @code{Suppress (Overflow_Check)} sets mode
|
||||||
|
|
||||||
|
@smallexample @c ada
|
||||||
General => Suppressed
|
General => Suppressed
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
suppressing all overflow checking within and outside
|
suppressing all overflow checking within and outside
|
||||||
assertions.
|
assertions.
|
||||||
|
|
||||||
The pragam @code{Unsuppress (Overflow_Check)} sets mode
|
The pragam @code{Unsuppress (Overflow_Check)} sets mode
|
||||||
|
|
||||||
|
@smallexample @c ada
|
||||||
General => Checked
|
General => Checked
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
which causes overflow checking of all intermediate overflows.
|
which causes overflow checking of all intermediate overflows.
|
||||||
This applies both inside and outside assertions.
|
This applies both inside and outside assertions.
|
||||||
|
@ -5787,8 +5792,8 @@ activated. The validity checks are first set to include only the default
|
||||||
reference manual settings, and then a string of letters in the string
|
reference manual settings, and then a string of letters in the string
|
||||||
specifies the exact set of options required. The form of this string
|
specifies the exact set of options required. The form of this string
|
||||||
is exactly as described for the @option{-gnatVx} compiler switch (see the
|
is exactly as described for the @option{-gnatVx} compiler switch (see the
|
||||||
GNAT users guide for details). For example the following two methods
|
@value{EDITION} User's Guide for details). For example the following two
|
||||||
can be used to enable validity checking for mode @code{in} and
|
methods can be used to enable validity checking for mode @code{in} and
|
||||||
@code{in out} subprogram parameters:
|
@code{in out} subprogram parameters:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
|
|
|
@ -888,6 +888,15 @@ package body Sem_Ch13 is
|
||||||
Aspect_Default_Component_Value =>
|
Aspect_Default_Component_Value =>
|
||||||
Analyze_Aspect_Default_Value (ASN);
|
Analyze_Aspect_Default_Value (ASN);
|
||||||
|
|
||||||
|
-- Ditto for iterator aspects, because the corresponding
|
||||||
|
-- attributes may not have been analyzed yet.
|
||||||
|
|
||||||
|
when Aspect_Constant_Indexing |
|
||||||
|
Aspect_Variable_Indexing |
|
||||||
|
Aspect_Default_Iterator |
|
||||||
|
Aspect_Iterator_Element =>
|
||||||
|
Analyze (Expression (ASN));
|
||||||
|
|
||||||
when others =>
|
when others =>
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|
|
@ -384,6 +384,3 @@ typedef Int Mechanism_Type;
|
||||||
#define SE_Object_Too_Large 34
|
#define SE_Object_Too_Large 34
|
||||||
|
|
||||||
#define LAST_REASON_CODE 34
|
#define LAST_REASON_CODE 34
|
||||||
|
|
||||||
#define N_Return_Statement N_Simple_Return_Statement
|
|
||||||
/* temporary synonym for transition */
|
|
||||||
|
|
Loading…
Reference in New Issue