aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
diff options
context:
space:
mode:
authorSteve Baird <baird@adacore.com>2021-07-09 12:04:09 -0700
committerPierre-Marie de Rodat <derodat@adacore.com>2021-09-22 15:01:42 +0000
commitec813d06f788fed7e0d9f47f77182877f1d8cf47 (patch)
treee0124781b876c9e0dc0935870ea4bf972dc610cd /gcc/ada/gcc-interface
parentc5ff859dc01958f39ba77de6421d774171e3ea09 (diff)
downloadgcc-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