The master branch has been updated by Jerry DeLisle <[email protected]>:

https://gcc.gnu.org/g:e53a7510be51139ff4297e65e69895a6243caa9d

commit r16-8068-ge53a7510be51139ff4297e65e69895a6243caa9d

On 3/12/26 4:52 PM, Jerry D wrote:
Note: This is a regression fix.

The attached patch regression tested on x86_64. This one is fairly simple.

I will commit shortly.

Regards,

Jerry

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]>

Reply via email to