Hi Paul,

Am 09.02.26 um 5:54 PM schrieb Paul Richard Thomas:
Hi All,

This is a boilerplate implementation of the COSHAPE intrinsic. The
testcase is placed in the main gfortran.dg directory so that it can
make us of the option -fcoarry=lib to test the number of references to
_gfortran_caf_num_images (One to set no_images and to for the upper
bound of the last codimension).

Regtests on FC43/x86_64. OK for mainline?

this ICEs here for me with your patch applied and -fcoarray=lib:

subroutine foo (a)
  integer :: a[*]
  print *, coshape (a,kind=2)
end

    3 |   print *, coshape (a,kind=2)
      |                             1
internal compiler error: in gfc_conv_ss_startstride, at fortran/trans-array.cc:5283
0x39f44ef internal_error(char const*, ...)
        ../../gcc-trunk/gcc/diagnostic-global-context.cc:787
0x3a04a95 fancy_abort(char const*, int, char const*)
        ../../gcc-trunk/gcc/diagnostics/context.cc:1812
0x112895c gfc_conv_ss_startstride(gfc_loopinfo*)
        ../../gcc-trunk/gcc/fortran/trans-array.cc:5283
0x11d4d04 gfc_trans_transfer(gfc_code*)
        ../../gcc-trunk/gcc/fortran/trans-io.cc:2718
0x11183f9 trans_code
        ../../gcc-trunk/gcc/fortran/trans.cc:2584
0x1118574 gfc_trans_code_cond(gfc_code*, tree_node*)
        ../../gcc-trunk/gcc/fortran/trans.cc:2716
0x11d3163 build_dt
        ../../gcc-trunk/gcc/fortran/trans-io.cc:2061
0x11d323b gfc_trans_write(gfc_code*)
        ../../gcc-trunk/gcc/fortran/trans-io.cc:2100
0x111836f trans_code
        ../../gcc-trunk/gcc/fortran/trans.cc:2556
0x1118593 gfc_trans_code(gfc_code*)
        ../../gcc-trunk/gcc/fortran/trans.cc:2724
0x116a1e0 gfc_generate_function_code(gfc_namespace*)
        ../../gcc-trunk/gcc/fortran/trans-decl.cc:8225
0x11185d7 gfc_generate_code(gfc_namespace*)
        ../../gcc-trunk/gcc/fortran/trans.cc:2741
0x1087ff9 translate_all_program_units
        ../../gcc-trunk/gcc/fortran/parse.cc:7569
0x108897f gfc_parse_file()
        ../../gcc-trunk/gcc/fortran/parse.cc:7899
0x10fcfe7 gfc_be_parse_file
        ../../gcc-trunk/gcc/fortran/f95-lang.cc:247

I also see a front-end memleak in gfc_simplify_coshape because

+  /* Create the constructor for this array.  */
+  for (d = 0; d < as->corank; d++)
+       gfc_constructor_append_expr (&e->value.constructor,
+                                shapes[d], &e->where);
+  return e;

appends the expressions shapes[d] to the ctor but does not
free them.

Can you have a look at both?

Harald


Paul

PS Could somebody please check the intrinsic.texi entries?


Reply via email to