Am 11.01.25 um 18:32 schrieb Jerry D:
The attached patch is the latest clean build and test run I can come up with. I completely cannot understand why moving the forall_iterator from the sub-structure 'concur' back to where it was at the 'ext' sub- structure of typedef struct gfc_code. 'ext' is a union. I suspected there is an overlap going on there such that something is getting overwritten or optimized away. I am unable to find the culprit.
One possibility of checking that is to make the union into a struct and see if anything wrong is left somewhere. If the handling of the union is clean otherwise, there should not be any problem. Hmm... I just ran a regression test with diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index aa495b5487e..554ad5da16d 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -3125,7 +3125,7 @@ typedef struct gfc_code gfc_symbol *resolved_sym; gfc_intrinsic_sym *resolved_isym; - union + struct { gfc_actual_arglist *actual; gfc_iterator *iterator; and this turned out anything but clean, there are quite a few test cases segfaulting, possibly because of aliasing in the pointers pointing to different I/O structures. This is now PR 118432. Best regards Thomas