https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119136
--- Comment #19 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
I realized after thinking a little bit more.
The following variation of TRYLOCK does work:
if (TRYLOCK(&p->lock) && (p->child_dtio == 0))
{
generate_error (&dtp->common, LIBERROR_RECURSIVE_IO, NULL);
return;
}
//if (p->is_active && (p->child_dtio == 0))
//generate_error (&dtp->common, LIBERROR_RECURSIVE_IO, NULL);
//else
//p->is_active = true;
We have to exclude DTIO child I/O as this is allowed and we do not need a new
flag.
Running target unix
=== gfortran Summary ===
# of expected passes 74702
# of expected failures 343
# of unsupported tests 82
I prefer this simpler approach.