ada: Error compiling reduction expression with overloaded reducer subprogram
commit348cb1c0158fd4c54cd4176be97f5ab9bec3afb9
authorSteve Baird <baird@adacore.com>
Tue, 14 Nov 2023 20:06:36 +0000 (14 12:06 -0800)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 28 Nov 2023 09:35:48 +0000 (28 10:35 +0100)
treed843a0fff614aae84dda504d4b97bb5d3cfdb7eb
parent1a2f4e332c0bca0b6665921c38be9c9f1c04e0b4
ada: Error compiling reduction expression with overloaded reducer subprogram

In some cases involving a reduction expression with an overloaded reducer
subprogram, the accumulator type is not determined correctly. This can lead
to spurious compile-time errors.

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference): In the case of a
Reduce attribute reference, fix bugs in initializing Accum_Typ.
The previous version was incorrect in the case where E1 refers to
the first of multiple possible overload resolution candidates and
that candidate does not turn out to be the right one. The previous
version also had code to compute Accum_Typ via a different method
if the initial computation turned out to yield a universal numeric
type. Delete that initial computation and use the second method in
all cases.
gcc/ada/exp_attr.adb