This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Bernd Schmidt wrote:
There's at least one more such problem with gfortran, which I'm having a harder time debugging. It occurs in gfortran.fortran-torture/compile/mloc.f90
That's minloc/maxloc, which takes three arguments on the Fortran side: An array, optionally a dimension ("dim") and optionally an array-valued mask (same shape as "array").
while the actual library function (and the call to it) only has three arguments:void mminloc0_4_r4 (gfc_array_i4 * const restrict retarray, gfc_array_r4 * const restrict array, gfc_array_l1 * const restrict mask)The decl is constructed by gfc_get_function_type. It seems to think there's one extra parameter named "dim" between "array" and "mask".
There are two functions groups called with mask, cf. iresolve.c's gfc_resolve_minloc. Namely, without dim "mmin0_<kind>_<type>" and with dim "mmin1_<kind>_<type>". – The latter takes "dim" as additional argument.
Thus, for mmin1_* the generated decl is fine, for mmin0_ is is not. I do not immediately see where the "dim" argument is skipped – but some similar special-case handling would then be also needed for the function declaration.
Tobias
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |