[Bug ada/115349] wrong Accum_Type inferred for a reduction expression
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Dec 7 22:43:16 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115349
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Eric Botcazou <ebotcazou@gcc.gnu.org>:
https://gcc.gnu.org/g:09da4112cbb38de230973ea8296816371ecb38b4
commit r16-5950-g09da4112cbb38de230973ea8296816371ecb38b4
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Sun Dec 7 23:40:25 2025 +0100
Ada: Fix wrong Accum_Type inferred for a reduction expression
This was reported as a regression in GCC 14: the compiler resolves
Accum_Type to Positive for a reduction expression whose "expected
subtype" is Positive, which means that 0 cannot be used as initial
value in the expression:
Sum : Positive := V'Reduce ("+", 0);
without always raising Constraint_Error as run time. That's not the
intent according to T. Taft in
https://forum.ada-lang.io/t/regression-in-gnat-14/890
so this changes the resolution to use the base type (Integer) instead.
gcc/ada/
PR ada/115349
* sem_attr.adb (Resolve_Attribute) <Attribute_Reduce>: Use the base
type as Accum_Type if the reducer is an operator from Standard and
the type is numeric. Use the type of the first operand for other
operators. Streamline the error message given for limited types.
gcc/testsuite/
* gnat.dg/reduce3.adb: New test.
More information about the Gcc-bugs
mailing list