https://gcc.gnu.org/bugzilla/show_bug.cgi?id=2
--- Comment #4 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:2851a6b21c89d80b81f9ce06cdfb943a172eca42 commit r17-1358-g2851a6b21c89d80b81f9ce06cdfb943a172eca42 Author: Jerry DeLisle <[email protected]> Date: Wed May 27 21:00:19 2026 -0700 fortran: ICE in DO CONCURRENT with DEFAULT(NONE) inside ASSOCIATE Two bugs in check_default_none_expr caused a segfault when a DO CONCURRENT with inline type-spec iterators (e.g. "integer :: i = 1:10") contained an ASSOCIATE construct. Bug 1: sym->ns->code was used to locate the ext.concur.forall_iterator list. When a symbol's namespace is an ASSOCIATE body, sym->ns->code is an EXEC_BLOCK node, not the DO CONCURRENT node; reading ext.concur from it interprets the wrong union member and yields a garbage pointer. Fix: use d->code instead, the DO CONCURRENT gfc_code node passed through the walker's data parameter, which is always the correct node. Bug 2: inline type-spec iterators are shadow iterators, stored internally with a leading underscore prepended to the name. The comparison of the iterator's symtree name against the user-visible sym->name must skip that underscore by advancing iter_name one character when iter->shadow is set. PR fortran/125529 Assisted by: Claude Sonnet 4.6 gcc/fortran/ChangeLog: PR fortran/125529 * resolve.cc (check_default_none_expr): Use d->code instead of sym->ns->code to locate the DO CONCURRENT forall_iterator list, avoiding a wrong-union-member read when the symbol's namespace is an ASSOCIATE body. Skip leading underscore when comparing iterator names for shadow iterators. gcc/testsuite/ChangeLog: PR fortran/125529 * gfortran.dg/do_concurrent_assoc_default_none.f90: New test. (cherry picked from commit afe36f5576f07a5650ed8e2d9ade58d2e7e27021)
