aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2010-09-10 17:53:11 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2010-09-10 17:53:11 +0200
commitb3f48fd4f6edf25ffc45b9fc7632481760bfb41e (patch)
tree328147e1724a97842405502ab99657c8998ff5cc /gcc
parentbedbdfcfb63b3a05dc58326f424d5ab07f0d05ce (diff)
downloadgcc-b3f48fd4f6edf25ffc45b9fc7632481760bfb41e.zip
gcc-b3f48fd4f6edf25ffc45b9fc7632481760bfb41e.tar.gz
gcc-b3f48fd4f6edf25ffc45b9fc7632481760bfb41e.tar.bz2
[multiple changes]
2010-09-10 Robert Dewar <dewar@adacore.com> * gnat_ugn.texi: Add documentation for -gnatw.s/S * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case Component_Size): Implement warning on overriden size clause. (Analyze_Record_Representation_Clause): Implement warning on overriden size clause. * sem_warn.ads, sem_warn.adb (Warn_On_Overridden_Size): New flag (-gnatw.s/S). * ug_words: Add entries for -gnatw.s/S. * vms_data.ads, usage.adb: Add line for -gnatw.s/-gnatw.S. * gcc-interface/Make-lang.in: Update dependencies. 2010-09-10 Vincent Celier <celier@adacore.com> * prj-dect.adb (Parse_Package_Declaration): Allow a package to extend a package with the same name from an imported or extended project. * prj-proc.adb (Process_Declarative_Items): Process package extensions 2010-09-10 Bob Duff <duff@adacore.com> * exp_ch6.adb (Expand_Call): Do not perform a null_exclusion check on 'out' parameters. From-SVN: r164194
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog24
-rw-r--r--gcc/ada/exp_ch6.adb67
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in200
-rw-r--r--gcc/ada/gnat_ugn.texi19
-rw-r--r--gcc/ada/prj-dect.adb18
-rw-r--r--gcc/ada/prj-proc.adb31
-rw-r--r--gcc/ada/sem_ch13.adb24
-rw-r--r--gcc/ada/sem_warn.adb8
-rw-r--r--gcc/ada/sem_warn.ads6
-rw-r--r--gcc/ada/ug_words2
-rw-r--r--gcc/ada/usage.adb2
-rw-r--r--gcc/ada/vms_data.ads4
12 files changed, 256 insertions, 149 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 84cc946..e32c584 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,29 @@
2010-09-10 Robert Dewar <dewar@adacore.com>
+ * gnat_ugn.texi: Add documentation for -gnatw.s/S
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
+ Component_Size): Implement warning on overriden size clause.
+ (Analyze_Record_Representation_Clause): Implement warning on overriden
+ size clause.
+ * sem_warn.ads, sem_warn.adb (Warn_On_Overridden_Size): New flag
+ (-gnatw.s/S).
+ * ug_words: Add entries for -gnatw.s/S.
+ * vms_data.ads, usage.adb: Add line for -gnatw.s/-gnatw.S.
+ * gcc-interface/Make-lang.in: Update dependencies.
+
+2010-09-10 Vincent Celier <celier@adacore.com>
+
+ * prj-dect.adb (Parse_Package_Declaration): Allow a package to extend
+ a package with the same name from an imported or extended project.
+ * prj-proc.adb (Process_Declarative_Items): Process package extensions
+
+2010-09-10 Bob Duff <duff@adacore.com>
+
+ * exp_ch6.adb (Expand_Call): Do not perform a null_exclusion check on
+ 'out' parameters.
+
+2010-09-10 Robert Dewar <dewar@adacore.com>
+
* sem.adb: Minor reformatting.
2010-09-10 Bob Duff <duff@adacore.com>
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 8b9ec88..eb30d80 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -2330,17 +2330,22 @@ package body Exp_Ch6 is
end if;
-- Perform the check of 4.6(49) that prevents a null value from being
- -- passed as an actual to an access parameter. Note that the check is
- -- elided in the common cases of passing an access attribute or
+ -- passed as an actual to an access parameter. Note that the check
+ -- is elided in the common cases of passing an access attribute or
-- access parameter as an actual. Also, we currently don't enforce
-- this check for expander-generated actuals and when -gnatdj is set.
if Ada_Version >= Ada_05 then
- -- Ada 2005 (AI-231): Check null-excluding access types
+ -- Ada 2005 (AI-231): Check null-excluding access types. Note that
+ -- the intent of 6.4.1(13) is that null-exclusion checks should
+ -- not be done for 'out' parameters, even though it refers only
+ -- to constraint checks, and a null_exlusion is not a constraint.
+ -- Note that AI05-0196-1 corrects this mistake in the RM.
if Is_Access_Type (Etype (Formal))
and then Can_Never_Be_Null (Etype (Formal))
+ and then Ekind (Formal) /= E_Out_Parameter
and then Nkind (Prev) /= N_Raise_Constraint_Error
and then (Known_Null (Prev)
or else not Can_Never_Be_Null (Etype (Prev)))
@@ -2424,10 +2429,10 @@ package body Exp_Ch6 is
-- since this is a left side reference. We only do this for calls
-- from the source program since we assume that compiler generated
-- calls explicitly generate any required checks. We also need it
- -- only if we are doing standard validity checks, since clearly it
- -- is not needed if validity checks are off, and in subscript
- -- validity checking mode, all indexed components are checked with
- -- a call directly from Expand_N_Indexed_Component.
+ -- only if we are doing standard validity checks, since clearly it is
+ -- not needed if validity checks are off, and in subscript validity
+ -- checking mode, all indexed components are checked with a call
+ -- directly from Expand_N_Indexed_Component.
if Comes_From_Source (N)
and then Ekind (Formal) /= E_In_Parameter
@@ -2593,11 +2598,11 @@ package body Exp_Ch6 is
-- Deals with Dispatch_Call if we still have a call, before expanding
-- extra actuals since this will be done on the re-analysis of the
- -- dispatching call. Note that we do not try to shorten the actual
- -- list for a dispatching call, it would not make sense to do so.
- -- Expansion of dispatching calls is suppressed when VM_Target, because
- -- the VM back-ends directly handle the generation of dispatching
- -- calls and would have to undo any expansion to an indirect call.
+ -- dispatching call. Note that we do not try to shorten the actual list
+ -- for a dispatching call, it would not make sense to do so. Expansion
+ -- of dispatching calls is suppressed when VM_Target, because the VM
+ -- back-ends directly handle the generation of dispatching calls and
+ -- would have to undo any expansion to an indirect call.
if Nkind_In (N, N_Function_Call, N_Procedure_Call_Statement)
and then Present (Controlling_Argument (N))
@@ -2605,8 +2610,8 @@ package body Exp_Ch6 is
if Tagged_Type_Expansion then
Expand_Dispatching_Call (N);
- -- The following return is worrisome. Is it really OK to
- -- skip all remaining processing in this procedure ???
+ -- The following return is worrisome. Is it really OK to skip all
+ -- remaining processing in this procedure ???
return;
@@ -2624,8 +2629,8 @@ package body Exp_Ch6 is
-- Similarly, expand calls to RCI subprograms on which pragma
-- All_Calls_Remote applies. The rewriting will be reanalyzed
- -- later. Do this only when the call comes from source since we do
- -- not want such a rewriting to occur in expanded code.
+ -- later. Do this only when the call comes from source since we
+ -- do not want such a rewriting to occur in expanded code.
if Is_All_Remote_Call (N) then
Expand_All_Calls_Remote_Subprogram_Call (N);
@@ -2650,15 +2655,15 @@ package body Exp_Ch6 is
end loop;
end if;
- -- At this point we have all the actuals, so this is the point at
- -- which the various expansion activities for actuals is carried out.
+ -- At this point we have all the actuals, so this is the point at which
+ -- the various expansion activities for actuals is carried out.
Expand_Actuals (N, Subp);
- -- If the subprogram is a renaming, or if it is inherited, replace it
- -- in the call with the name of the actual subprogram being called.
- -- If this is a dispatching call, the run-time decides what to call.
- -- The Alias attribute does not apply to entries.
+ -- If the subprogram is a renaming, or if it is inherited, replace it in
+ -- the call with the name of the actual subprogram being called. If this
+ -- is a dispatching call, the run-time decides what to call. The Alias
+ -- attribute does not apply to entries.
if Nkind (N) /= N_Entry_Call_Statement
and then No (Controlling_Argument (N))
@@ -2827,10 +2832,10 @@ package body Exp_Ch6 is
if Is_Access_Protected_Subprogram_Type
(Base_Type (Etype (Prefix (Name (N)))))
then
- -- If this is a call through an access to protected operation,
- -- the prefix has the form (object'address, operation'access).
- -- Rewrite as a for other protected calls: the object is the
- -- first parameter of the list of actuals.
+ -- If this is a call through an access to protected operation, the
+ -- prefix has the form (object'address, operation'access). Rewrite
+ -- as a for other protected calls: the object is the 1st parameter
+ -- of the list of actuals.
declare
Call : Node_Id;
@@ -2905,11 +2910,11 @@ package body Exp_Ch6 is
-- In the case where the intrinsic is to be processed by the back end,
-- the call to Expand_Intrinsic_Call will do nothing, which is fine,
- -- since the idea in this case is to pass the call unchanged.
- -- If the intrinsic is an inherited unchecked conversion, and the
- -- derived type is the target type of the conversion, we must retain
- -- it as the return type of the expression. Otherwise the expansion
- -- below, which uses the parent operation, will yield the wrong type.
+ -- since the idea in this case is to pass the call unchanged. If the
+ -- intrinsic is an inherited unchecked conversion, and the derived type
+ -- is the target type of the conversion, we must retain it as the return
+ -- type of the expression. Otherwise the expansion below, which uses the
+ -- parent operation, will yield the wrong type.
if Is_Intrinsic_Subprogram (Subp) then
Expand_Intrinsic_Call (N, Subp);
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index 787757b..427f808 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -2431,18 +2431,18 @@ ada/freeze.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_intr.ads \
ada/sem_mech.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_res.adb \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
- ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
- ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
- ada/widechar.ads
+ ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
+ ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
+ ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
+ ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+ ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.ads ada/validsw.ads ada/widechar.ads
ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3307,19 +3307,20 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_intr.ads \
ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads \
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
- ada/sinput.ads ada/sinput.adb ada/snames.ads ada/snames.adb \
- ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
- ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
- ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypef.ads ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/widechar.ads
+ ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb ada/snames.ads \
+ ada/snames.adb ada/sprint.ads ada/stand.ads ada/stringt.ads \
+ ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
+ ada/stylesw.ads ada/system.ads ada/s-carun8.ads ada/s-crc32.ads \
+ ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads \
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+ ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+ ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+ ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
+ ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+ ada/tree_io.ads ada/ttypef.ads ada/ttypes.ads ada/types.ads \
+ ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+ ada/validsw.ads ada/widechar.ads
ada/sem_aux.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3558,17 +3559,18 @@ ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads \
ada/sem_eval.adb ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb \
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
- ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
- ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
- ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
- ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
- ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
- ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
- ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
- ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
- ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
- ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
+ ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
+ ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
+ ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+ ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3591,18 +3593,18 @@ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb \
ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads \
ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sem_warn.adb \
- ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads \
- ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
- ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/validsw.ads ada/widechar.ads
+ ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
+ ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+ ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
+ ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3721,18 +3723,19 @@ ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch9.adb ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads \
ada/sem_elim.ads ada/sem_eval.ads ada/sem_intr.ads ada/sem_res.ads \
ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
- ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/sinput.adb ada/snames.ads ada/sprint.ads ada/stand.ads \
- ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
- ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
+ ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
+ ada/sinput.ads ada/sinput.adb ada/snames.ads ada/sprint.ads \
+ ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
+ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
+ ada/widechar.ads
ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3847,18 +3850,19 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads \
ada/sem_eval.ads ada/sem_eval.adb ada/sem_intr.ads ada/sem_res.ads \
ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
- ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
- ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
- ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
- ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
- ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
- ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
- ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
- ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
+ ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
+ ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
+ ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
+ ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
+ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+ ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+ ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+ ada/widechar.ads
ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3954,19 +3958,19 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb \
ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads \
ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads \
- ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
- ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
- ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
- ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
- ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
- ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
- ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
- ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
- ada/validsw.ads ada/widechar.ads
+ ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb \
+ ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+ ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
+ ada/stylesw.ads ada/system.ads ada/s-carun8.ads ada/s-crc32.ads \
+ ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+ ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+ ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
+ ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+ ada/urealp.adb ada/validsw.ads ada/widechar.ads
ada/sem_scil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -4142,19 +4146,19 @@ ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/fname.ads \
ada/gnat.ads ada/g-dyntab.ads ada/g-dyntab.adb ada/g-hesorg.ads \
- ada/hostparm.ads ada/interfac.ads ada/namet.ads ada/nlists.ads \
- ada/nlists.adb ada/opt.ads ada/osint.ads ada/output.ads ada/prep.ads \
- ada/prepcomp.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
- ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput-l.ads \
- ada/sinput-l.adb ada/snames.ads ada/stringt.ads ada/style.ads \
- ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
- ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-imenne.ads \
- ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
- ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
- ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
- ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/namet.ads \
+ ada/nlists.ads ada/nlists.adb ada/opt.ads ada/osint.ads ada/output.ads \
+ ada/prep.ads ada/prepcomp.ads ada/scans.ads ada/scn.ads ada/scng.ads \
+ ada/scng.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+ ada/sinput-l.ads ada/sinput-l.adb ada/snames.ads ada/stringt.ads \
+ ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
+ ada/system.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \
+ ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+ ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+ ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+ ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+ ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+ ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sinput.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 694c598..8008602 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -5582,6 +5582,25 @@ To suppress these back end warnings as well, use the switch @option{-w}
in addition to @option{-gnatws}. Also this switch has no effect on the
handling of style check messages.
+@item -gnatw.s
+@emph{Activate warnings on overridden size clauses.}
+@cindex @option{-gnatw.s} (@command{gcc})
+@cindex Record Representation (component sizes)
+This switch activates warnings on component clauses in record
+representation clauses where the length given overrides that
+specified by an explicit size clause for the component type. A
+warning is similarly given in the array case if a specified
+component size overrides an explicit size clause for the array
+component type.
+Note that @option{-gnatwa} does not affect the setting of this warning option.
+
+@item -gnatw.S
+@emph{Suppress warnings on overriddebn size clauses.}
+@cindex @option{-gnatw.S} (@command{gcc})
+This switch suppresses warnings on component clauses in record
+representation clauses that override size clauses, and similar
+warnings when an array component size overrides a size clause.
+
@item -gnatwt
@emph{Activate warnings for tracking of deleted conditional code.}
@cindex @option{-gnatwt} (@command{gcc})
diff --git a/gcc/ada/prj-dect.adb b/gcc/ada/prj-dect.adb
index 9cb86bd..51332d8 100644
--- a/gcc/ada/prj-dect.adb
+++ b/gcc/ada/prj-dect.adb
@@ -1027,8 +1027,9 @@ package body Prj.Dect is
First_Attribute : Attribute_Node_Id := Empty_Attribute;
Current_Package : Package_Node_Id := Empty_Package;
First_Declarative_Item : Project_Node_Id := Empty_Node;
-
Package_Location : constant Source_Ptr := Token_Ptr;
+ Renaming : Boolean := False;
+ Extending : Boolean := False;
begin
Package_Declaration :=
@@ -1149,13 +1150,20 @@ package body Prj.Dect is
end if;
if Token = Tok_Renames then
+ Renaming := True;
+ elsif Token = Tok_Extends then
+ Extending := True;
+ end if;
+
+ if Renaming or else Extending then
if Is_Config_File then
Error_Msg
(Flags,
- "no package renames in configuration projects", Token_Ptr);
+ "no package rename or extension in configuration projects",
+ Token_Ptr);
end if;
- -- Scan past "renames"
+ -- Scan past "renames" or "extends"
Scan (In_Tree);
@@ -1249,7 +1257,9 @@ package body Prj.Dect is
end if;
end if;
end if;
+ end if;
+ if Renaming then
Expect (Tok_Semicolon, "`;`");
Set_End_Of_Line (Package_Declaration);
Set_Previous_Line_Node (Package_Declaration);
@@ -1305,7 +1315,7 @@ package body Prj.Dect is
Remove_Next_End_Node;
else
- Error_Msg (Flags, "expected IS or RENAMES", Token_Ptr);
+ Error_Msg (Flags, "expected IS", Token_Ptr);
end if;
end Parse_Package_Declaration;
diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb
index 2b94067..3cbb089 100644
--- a/gcc/ada/prj-proc.adb
+++ b/gcc/ada/prj-proc.adb
@@ -1428,7 +1428,7 @@ package body Prj.Proc is
if Present (Project_Of_Renamed_Package) then
- -- Renamed package
+ -- Renamed or extending package
declare
Project_Name : constant Name_Id :=
@@ -1466,8 +1466,6 @@ package body Prj.Proc is
In_Tree => In_Tree);
end;
- -- Standard package declaration, not renaming
-
else
-- Set the default values of the attributes
@@ -1482,19 +1480,22 @@ package body Prj.Proc is
(Current_Item, From_Project_Node_Tree)),
Project_Level => False);
- -- And process declarative items of the new package
-
- Process_Declarative_Items
- (Project => Project,
- In_Tree => In_Tree,
- Flags => Flags,
- From_Project_Node => From_Project_Node,
- From_Project_Node_Tree => From_Project_Node_Tree,
- Pkg => New_Pkg,
- Item =>
- First_Declarative_Item_Of
- (Current_Item, From_Project_Node_Tree));
end if;
+
+ -- Process declarative items (nothing to do when the
+ -- package is renaming, as the first declarative item is
+ -- null).
+
+ Process_Declarative_Items
+ (Project => Project,
+ In_Tree => In_Tree,
+ Flags => Flags,
+ From_Project_Node => From_Project_Node,
+ From_Project_Node_Tree => From_Project_Node_Tree,
+ Pkg => New_Pkg,
+ Item =>
+ First_Declarative_Item_Of
+ (Current_Item, From_Project_Node_Tree));
end;
end if;
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index c24a344..b3dd42c 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -1283,6 +1283,7 @@ package body Sem_Ch13 is
when Attribute_Component_Size => Component_Size_Case : declare
Csize : constant Uint := Static_Integer (Expr);
+ Ctyp : Entity_Id;
Btype : Entity_Id;
Biased : Boolean;
New_Ctyp : Entity_Id;
@@ -1295,13 +1296,14 @@ package body Sem_Ch13 is
end if;
Btype := Base_Type (U_Ent);
+ Ctyp := Component_Type (Btype);
if Has_Component_Size_Clause (Btype) then
Error_Msg_N
("component size clause for& previously given", Nam);
elsif Csize /= No_Uint then
- Check_Size (Expr, Component_Type (Btype), Csize, Biased);
+ Check_Size (Expr, Ctyp, Csize, Biased);
if Has_Aliased_Components (Btype)
and then Csize < 32
@@ -1367,6 +1369,17 @@ package body Sem_Ch13 is
end if;
end if;
+ -- Deal with warning on overridden size
+
+ if Warn_On_Overridden_Size
+ and then Has_Size_Clause (Ctyp)
+ and then RM_Size (Ctyp) /= Csize
+ then
+ Error_Msg_NE
+ ("?component size overrides size clause for&",
+ N, Ctyp);
+ end if;
+
Set_Has_Component_Size_Clause (Btype, True);
Set_Has_Non_Standard_Rep (Btype, True);
end if;
@@ -2749,6 +2762,15 @@ package body Sem_Ch13 is
Set_Normalized_First_Bit (Comp, Fbit mod SSU);
Set_Normalized_Position (Comp, Fbit / SSU);
+ if Warn_On_Overridden_Size
+ and then Has_Size_Clause (Etype (Comp))
+ and then RM_Size (Etype (Comp)) /= Esize (Comp)
+ then
+ Error_Msg_NE
+ ("?component size overrides size clause for&",
+ Component_Name (CC), Etype (Comp));
+ end if;
+
-- This information is also set in the corresponding
-- component of the base type, found by accessing the
-- Original_Record_Component link if it is present.
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 2a42dec..d4a7145 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -3085,6 +3085,7 @@ package body Sem_Warn is
Warn_On_Object_Renames_Function := True;
Warn_On_Obsolescent_Feature := True;
Warn_On_Overlap := True;
+ Warn_On_Overridden_Size := True;
Warn_On_Parameter_Order := True;
Warn_On_Questionable_Missing_Parens := True;
Warn_On_Record_Holes := True;
@@ -3135,6 +3136,12 @@ package body Sem_Warn is
when 'R' =>
Warn_On_Object_Renames_Function := False;
+ when 's' =>
+ Warn_On_Overridden_Size := True;
+
+ when 'S' =>
+ Warn_On_Overridden_Size := False;
+
when 'u' =>
Warn_On_Unordered_Enumeration_Type := True;
@@ -3268,6 +3275,7 @@ package body Sem_Warn is
Warn_On_Object_Renames_Function := False;
Warn_On_Obsolescent_Feature := False;
Warn_On_Overlap := False;
+ Warn_On_Overridden_Size := False;
Warn_On_Parameter_Order := False;
Warn_On_Record_Holes := False;
Warn_On_Questionable_Missing_Parens := False;
diff --git a/gcc/ada/sem_warn.ads b/gcc/ada/sem_warn.ads
index 259a470..c7e3fd2 100644
--- a/gcc/ada/sem_warn.ads
+++ b/gcc/ada/sem_warn.ads
@@ -47,6 +47,12 @@ package Sem_Warn is
-- Warn when explicit record component clauses leave uncovered holes (gaps)
-- in a record layout. Off by default, set by -gnatw.h (but not -gnatwa).
+ Warn_On_Overridden_Size : Boolean := False;
+ -- Warn when explicit record component clause or array component_size
+ -- clause specifies a size that overrides a size for the typen which was
+ -- set with an explicit size clause. Off by default, set by -gnatw.sn (but
+ -- not -gnatwa).
+
------------------------
-- Warnings Off Table --
------------------------
diff --git a/gcc/ada/ug_words b/gcc/ada/ug_words
index 6090e8f..e2da62c 100644
--- a/gcc/ada/ug_words
+++ b/gcc/ada/ug_words
@@ -161,6 +161,8 @@ gcc -c ^ GNAT COMPILE
-gnatwP ^ /WARNINGS=NOINEFFECTIVE_INLINE
-gnatw.p ^ /WARNINGS=PARAMETER_ORDER
-gnatw.P ^ /WARNINGS=NO_PARAMETER_ORDER
+-gnatw.h ^ /WARNINGS=OVERRIDING_SIZE
+-gnatw.H ^ /WARNINGS=NOOVERRIDING_SIZE
-gnatwq ^ /WARNINGS=MISSING_PARENS
-gnatwQ ^ /WARNINGS=NOMISSING_PARENS
-gnatwr ^ /WARNINGS=REDUNDANT
diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb
index 7df5eb0..6429a7d 100644
--- a/gcc/ada/usage.adb
+++ b/gcc/ada/usage.adb
@@ -468,6 +468,8 @@ begin
Write_Line (" .r+ turn on warnings for object renaming function");
Write_Line (" .R* turn off warnings for object renaming function");
Write_Line (" s suppress all info/warnings");
+ Write_Line (" .s turn on warnings for overridden size clause");
+ Write_Line (" .S* turn off warnings for overridden size clause");
Write_Line (" t turn on warnings for tracking deleted code");
Write_Line (" T* turn off warnings for tracking deleted code");
Write_Line (" u+ turn on warnings for unused entity");
diff --git a/gcc/ada/vms_data.ads b/gcc/ada/vms_data.ads
index 06ae3db..675e4f5 100644
--- a/gcc/ada/vms_data.ads
+++ b/gcc/ada/vms_data.ads
@@ -3011,6 +3011,10 @@ package VMS_Data is
"-gnatw.R " &
"SUPPRESS " &
"-gnatws " &
+ "OVERRIDING_SIZE " &
+ "-gnatw.s " &
+ "NOOVERRIDING_SIZE " &
+ "-gnatw.S " &
"DELETED_CODE " &
"-gnatwt " &
"NODELETED_CODE " &