From: "Marc Poulhiès" <poulhies@adacore.com>
To: gcc-patches@gcc.gnu.org
Cc: Ronan Desplanques <desplanques@adacore.com>
Subject: [COMMITTED 22/35] ada: Clarify code for aggregate warnings
Date: Fri, 17 May 2024 10:31:54 +0200 [thread overview]
Message-ID: <20240517083207.130391-22-poulhies@adacore.com> (raw)
In-Reply-To: <20240517083207.130391-1-poulhies@adacore.com>
From: Ronan Desplanques <desplanques@adacore.com>
This patch improves comments in code that emits warnings about
particular situations involving aggregates. It also removes a
conjunct in a condition that's useless because always true in the
context of the test.
gcc/ada/
* sem_aggr.adb (Resolve_Array_Aggregate): Improve comments
and condition.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_aggr.adb | 52 +++++++++++++++++++++-----------------------
1 file changed, 25 insertions(+), 27 deletions(-)
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index ee9beb04c9a..14c68b5eaf3 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -2873,9 +2873,9 @@ package body Sem_Aggr is
-- No others clause present
else
- -- Special processing if others allowed and not present. This
- -- means that the bounds of the aggregate come from the index
- -- constraint (and the length must match).
+ -- Special processing if others allowed and not present. In
+ -- this case, the bounds of the aggregate come from the
+ -- choices (RM 4.3.3 (27)).
if Others_Allowed then
Get_Index_Bounds (Index_Constr, Aggr_Low, Aggr_High);
@@ -2890,30 +2890,28 @@ package body Sem_Aggr is
return False;
end if;
- -- If others allowed, and no others present, then the array
- -- should cover all index values. If it does not, we will
- -- get a length check warning, but there is two cases where
- -- an additional warning is useful:
-
- -- If we have no positional components, and the length is
- -- wrong (which we can tell by others being allowed with
- -- missing components), and the index type is an enumeration
- -- type, then issue appropriate warnings about these missing
- -- components. They are only warnings, since the aggregate
- -- is fine, it's just the wrong length. We skip this check
- -- for standard character types (since there are no literals
- -- and it is too much trouble to concoct them), and also if
- -- any of the bounds have values that are not known at
- -- compile time.
-
- -- Another case warranting a warning is when the length
- -- is right, but as above we have an index type that is
- -- an enumeration, and the bounds do not match. This is a
- -- case where dubious sliding is allowed and we generate a
- -- warning that the bounds do not match.
-
- if No (Expressions (N))
- and then Nkind (Index) = N_Range
+ -- If there is an applicable index constraint and others is
+ -- not present, then sliding is allowed and only a length
+ -- check will be performed. However, additional warnings are
+ -- useful if the index type is an enumeration type, as
+ -- sliding is dubious in this case. We emit two kinds of
+ -- warnings:
+ --
+ -- 1. If the length is wrong then there are missing
+ -- components; we issue appropriate warnings about
+ -- these missing components. They are only warnings,
+ -- since the aggregate is fine, it's just the wrong
+ -- length. We skip this check for standard character
+ -- types (since there are no literals and it is too
+ -- much trouble to concoct them), and also if any of
+ -- the bounds have values that are not known at compile
+ -- time.
+ --
+ -- 2. If the length is right but the bounds do not match,
+ -- we issue a warning, as we consider sliding dubious
+ -- when the index type is an enumeration type.
+
+ if Nkind (Index) = N_Range
and then Is_Enumeration_Type (Etype (Index))
and then not Is_Standard_Character_Type (Etype (Index))
and then Compile_Time_Known_Value (Aggr_Low)
--
2.43.2
next prev parent reply other threads:[~2024-05-17 8:32 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-17 8:31 [COMMITTED 01/35] ada: Add support for 'Object_Size to pragma Compile_Time_{Warning,Error} Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 02/35] ada: Small cleanup in aggregate expansion code Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 03/35] ada: Remove superfluous Relocate_Node calls Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 04/35] ada: Fix checking range constraints within composite types Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 05/35] ada: Check subtype to avoid a precondition failure Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 06/35] ada: Fix probable copy/paste error Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 07/35] ada: Tune detection of unconstrained and tagged items in Depends contract Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 08/35] ada: Allow private items with unknown discriminants as Depends inputs Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 09/35] ada: Simplify code for private types with unknown discriminants Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 10/35] ada: Only record types with discriminants can be unconstrained Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 11/35] ada: Fix Constraint_Error on mutable assignment Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 12/35] ada: Fix crash caused by missing New_Copy_tree Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 13/35] ada: Make raise-gcc.c compatible with Clang Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 14/35] ada: gnatbind-related cleanups Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 15/35] ada: correction to " Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 16/35] ada: Fix containers' Reference_Preserving_Key functions' memory leaks Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 17/35] ada: Update docs for Resolve_Null_Array_Aggregate Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 18/35] ada: gnatbind: subprogram spec no longer exists Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 19/35] ada: Couple of adjustments coming from aliasing considerations Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 20/35] ada: Expose utility routine for processing of Depends contracts in SPARK Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 21/35] ada: Fix others error message location Marc Poulhiès
2024-05-17 8:31 ` Marc Poulhiès [this message]
2024-05-17 8:31 ` [COMMITTED 23/35] ada: Disable Equivalent_Array_Aggregate optimization if predicates involved Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 24/35] ada: Do not query the modification time of a special file Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 25/35] ada: Fix for validity checking and conditional evaluation of 'Old Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 26/35] ada: Factor out duplicated code in bodies of System.Task_Primitives.Operations Marc Poulhiès
2024-05-17 8:31 ` [COMMITTED 27/35] ada: Bug in computing local restrictions inherited from enclosing scopes Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 28/35] ada: Document secondary usage of Materialize_Entity flag Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 29/35] ada: Replace spinlocks with fully-fledged locks in finalization collections Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 30/35] ada: Further adjustments coming from aliasing considerations Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 31/35] ada: Restore dependency on System.OS_Interface in System.Task_Primitives Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 32/35] ada: Improve test for unprocessed preprocessor directives Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 33/35] ada: Start the initialization of the tasking runtime earlier Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 34/35] ada: Remove outdated workaround in aggregate expansion Marc Poulhiès
2024-05-17 8:32 ` [COMMITTED 35/35] ada: Improve deriving initial sizes for container aggregates Marc Poulhiès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240517083207.130391-22-poulhies@adacore.com \
--to=poulhies@adacore.com \
--cc=desplanques@adacore.com \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).