https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102596
--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jerry DeLisle <[email protected]>: https://gcc.gnu.org/g:e53a7510be51139ff4297e65e69895a6243caa9d commit r16-8068-ge53a7510be51139ff4297e65e69895a6243caa9d Author: Christopher Albert <[email protected]> Date: Tue Mar 10 19:16:24 2026 +0100 Fortran: Allow task-reduction allocatable scalars without outer ref [PR102596] OpenMP task reduction lowering can call gfc_omp_clause_default_ctor for an allocatable scalar with outer == NULL_TREE. That is valid for scalar allocatables that only need fresh storage allocation and do not need a copied descriptor or allocatable-component walk. The Fortran hook asserted unconditionally on outer != NULL_TREE, so reduction(task, +:r) with an allocatable scalar ICEd during omplower. Fix this by requiring outer only for the cases that actually use it: descriptor-based allocatables and types with allocatable components. Keep the assertion for those cases and allow NULL outer for plain scalar allocatables. Add a regression test for the allocatable task-reduction case. gcc/fortran/ChangeLog: PR fortran/102596 * trans-openmp.cc (gfc_omp_clause_default_ctor): Only require an outer reference when the constructor path actually uses it. gcc/testsuite/ChangeLog: PR fortran/102596 * gfortran.dg/pr102596.f90: New test. Signed-off-by: Christopher Albert <[email protected]>
