-- --
------------------------------------------------------------------------------
--- Package containing routines used to deal with runtime checks. These
+-- Package containing routines used to deal with run-time checks. These
-- routines are used both by the semantics and by the expander. In some
--- cases, checks are enabled simply by setting flags for gigi, and in
--- other cases the code for the check is expanded.
+-- cases, checks are enabled simply by setting a flag for the back end,
+-- and in other cases the code for the check is expanded.
-- The approach used for range and length checks, in regards to suppressed
-- checks, is to attempt to detect at compilation time that a constraint
-- operate anyway since they may generate useful compile time warnings.
procedure Apply_Access_Check (N : Node_Id);
- -- Determines whether an expression node requires a runtime access
+ -- Determines whether an expression node requires a run-time access
-- check and if so inserts the appropriate run-time check.
procedure Apply_Accessibility_Check
-- generated) is prepended to the Actions list of N_Freeze_Entity node N.
-- Note that the check references E'Alignment, so it cannot be emitted
-- before N (its freeze node), otherwise this would cause an illegal
- -- access before elaboration error in GIGI. For the case of a clear overlay
+ -- access before elaboration error in gigi. For the case of a clear overlay
-- situation, we also check that the size of the overlaying object is not
-- larger than the overlaid object.
-- value should be taken into account, which is not the case currently.
procedure Install_Null_Excluding_Check (N : Node_Id);
- -- Determines whether an access node requires a runtime access check and
+ -- Determines whether an access node requires a run-time access check and
-- if so inserts the appropriate run-time check.
procedure Install_Primitive_Elaboration_Check (Subp_Body : Node_Id);
-------------------------------------------------------
-- Range checks are controlled by the Do_Range_Check flag. The front end
- -- is responsible for setting this flag in relevant nodes. Originally
- -- the back end generated all corresponding range checks. But later on
- -- we decided to generate many range checks in the front end. We are now
- -- in the transitional phase where some of these checks are still done
- -- by the back end, but many are done by the front end. It is possible
- -- that in the future we might move all the checks to the front end. The
- -- main remaining back end checks are for subscript checking.
+ -- is responsible for setting this flag in relevant nodes. Originally the
+ -- back end generated all the corresponding range checks, but later on we
+ -- decided to generate all the range checks in the front end and this is
+ -- the current situation.
-- Overflow checks are similarly controlled by the Do_Overflow_Check flag.
-- The difference here is that if back end overflow checks are inactive
Source_Typ : Entity_Id := Empty;
Fixed_Int : Boolean := False);
-- For scalar types, determines whether an expression node should be
- -- flagged as needing a runtime range check. If the node requires such a
+ -- flagged as needing a run-time range check. If the node requires such a
-- check, the Do_Range_Check flag is turned on. The Fixed_Int flag if set
-- causes any fixed-point values to be treated as though they were discrete
-- values (i.e. the underlying integer value is used).
-----------------------
-- Some of the earlier processing for checks results in temporarily setting
- -- the Do_Range_Check flag rather than actually generating checks. Now we
- -- are moving the generation of such checks into the front end for reasons
- -- of efficiency and simplicity (there were difficulties in handling this
- -- in the back end when side effects were present in the expressions being
- -- checked).
-
- -- Probably we could eliminate the Do_Range_Check flag entirely and
- -- generate the checks earlier, but this is a delicate area and it
- -- seemed safer to implement the following routines, which are called
- -- late on in the expansion process. They check the Do_Range_Check flag
- -- and if it is set, generate the actual checks and reset the flag.
+ -- the Do_Range_Check flag rather than actually generating checks. Probably
+ -- we could eliminate the Do_Range_Check flag entirely and generate checks
+ -- earlier, but this is a delicate area and it seems safer to implement the
+ -- following routines, which are called later on in the expansion process.
+ -- They check the Do_Range_Check flag and if it is set, generate the actual
+ -- checks and reset the flag.
procedure Generate_Range_Check
(N : Node_Id;