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

Reply via email to