Re: [PATCH] PR125532 wrong-code in DO CONCURRENT with ASSOCIATE

Paul Richard Thomas <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <CAGkQGiJvbqaeWfjvhFmEFsLYfp1U7-TQuN9n7xhCxN1EX-BriA@mail.gmail.com>
Hi Jerry,

That is a cunning patch! I suggest that the comment before
replace_in_expr_recursive be updated to reflect this new usage? eg.:

/* Given a FORALL or DO CONCURRENT, containing associate blocks, constructs.
   1) Resolve the iterators.
   2) Check for shadow index-name(s) and update code block.
   3) call gfc_resolve_forall_body to resolve the body.  */

/* Custom recursive expression walker that replaces symbols.
   This ensures we visit ALL expressions including those in array
subscripts.  */

OK for mainline and backporting.

Thanks for the patch.

Paul

On Fri, 5 Jun 2026 at 20:32, Jerry D <[email protected]> wrote:
>
> See attached patch.
>
> This fix is also straight forward.
>
> Regression tested on x86_64.
>
> OK for mainline and later backport to 16.
>
> Reagrds,
>
> Jerry
>
> ---
>
> When an ASSOCIATE body references inline type-spec iterator,
> replace_in_code_recursive lacked a case for EXEC_BLOCK
> (associate constructs).  So, it silently skipped both
> the ASSOCIATE selector expressions and the body when
> replacing shadow iterator references.
>
> Add case EXEC_BLOCK to iterate over each selector's target
> expression via replace_in_expr_recursive and recurse into
> the body namespace's code list via replace_in_code_recursive.
>
> PR fortran/125532
>
> Assisted by: Claude Sonnet 4.6
>
> gcc/fortran/ChangeLog:
>
>         * resolve.cc (replace_in_code_recursive): Add EXEC_BLOCK case to
>         replace shadow iterator references in ASSOCIATE selector expressions
>         and the ASSOCIATE body namespace.
>
> gcc/testsuite/ChangeLog:
>
>         * gfortran.dg/do_concurrent_assoc_iter_1.f90: New test.
> ---
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.