diff options
author | Steve Baird <baird@adacore.com> | 2021-07-09 12:04:09 -0700 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-09-22 15:01:42 +0000 |
commit | ec813d06f788fed7e0d9f47f77182877f1d8cf47 (patch) | |
tree | e0124781b876c9e0dc0935870ea4bf972dc610cd /gcc/ada/gcc-interface | |
parent | c5ff859dc01958f39ba77de6421d774171e3ea09 (diff) | |
download | gcc-ec813d06f788fed7e0d9f47f77182877f1d8cf47.zip gcc-ec813d06f788fed7e0d9f47f77182877f1d8cf47.tar.gz gcc-ec813d06f788fed7e0d9f47f77182877f1d8cf47.tar.bz2 |
[Ada] Add -gnatX support for casing on array values
gcc/ada/
* exp_ch5.adb (Expand_General_Case_Statement.Pattern_Match): Add
new function Indexed_Element to handle array element
comparisons. Handle case choices that are array aggregates,
string literals, or names denoting constants.
* sem_case.adb (Composite_Case_Ops.Array_Case_Ops): New package
providing utilities needed for casing on arrays.
(Composite_Case_Ops.Choice_Analysis): If necessary, include
array length as a "component" (like a discriminant) when
traversing components. We do not (yet) partition choice analysis
to deal with unequal length choices separately. Instead, we
embed everything in the minimum-dimensionality Cartesian product
space needed to handle all choices properly; this is determined
by the length of the longest choice pattern.
(Composite_Case_Ops.Choice_Analysis.Traverse_Discrete_Parts):
Include length as a "component" in the traversal if necessary.
(Composite_Case_Ops.Choice_Analysis.Parse_Choice.Traverse_Choice):
Add support for case choices that are string literals or names
denoting constants.
(Composite_Case_Ops.Choice_Analysis): Include length as a
"component" in the analysis if necessary.
(Check_Choices.Check_Case_Pattern_Choices.Ops.Value_Sets.Value_Index_Count):
Improve error message when capacity exceeded.
* doc/gnat_rm/implementation_defined_pragmas.rst: Update
documentation to reflect current implementation status.
* gnat_rm.texi: Regenerate.
Diffstat (limited to 'gcc/ada/gcc-interface')
0 files changed, 0 insertions, 0 deletions