re PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 15 Jan 2018 18:35:13 +0000 (18:35 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 15 Jan 2018 18:35:13 +0000 (18:35 +0000)
2018-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* gfortran.h (gfc_check_f): Rename f4ml to f5ml.
(gfc_logical_4_kind): New macro
* intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument.
(gfc_simplify_maxloc): Likewise.
(gfc_resolve_maxloc): Likewise.
(gfc_resolve_minloc): Likewise.
* check.c (gfc_check_minloc_maxloc): Add checking for "back"
argument; also raise error if it is used (for now). Add it
if it isn't present.
* intrinsic.c (add_sym_4ml): Rename to
(add_sym_5ml), adjust for extra argument.
(add_functions): Add "back" constant. Adjust maxloc and minloc
for back argument.
* iresolve.c (gfc_resolve_maxloc): Add back argument. If back is
not of gfc_logical_4_kind, convert.
(gfc_resolve_minloc): Likewise.
* simplify.c (gfc_simplify_minloc): Add back argument.
(gfc_simplify_maxloc): Likewise.
* trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last
argument to %VAL to ensure passing by value.
(gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc
also for library calls.

2018-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* m4/iparm.m4: Add back_arg macro if in minloc or maxloc.
* m4/iforeach-s.m4: Add optional argument back with back_arg
macro. Improve m4 quoting. If HAVE_BACK_ARG is defined, assert
that back is non-true.
* m4/iforeach.m4: Likewise.
* m4/ifunction-s.m4: Likewise.
* m4/ifunction.m4: Likewise.
* m4/maxloc0.m4: Include assert.h
* m4/minloc0.m4: Likewise.
* m4/maxloc0s.m4: #define HAVE_BACK_ARG.
* m4/minloc0s.m4: Likewise.
* m4/maxloc1s.m4: Likewise.
* m4/minloc1s.m4: Likewise.
* m4/maxloc1.m4: Include assert.h, #define HAVE_BACK_ARG.
* m4/minloc1.m4: Likewise.
* m4/maxloc2s.m4: Add assert.h, add back_arg, assert that
back is non-true.
* m4/minloc2s.m4: Likewise.
* generated/iall_i1.c: Regenerated.
* generated/iall_i16.c: Regenerated.
* generated/iall_i2.c: Regenerated.
* generated/iall_i4.c: Regenerated.
* generated/iall_i8.c: Regenerated.
* generated/iany_i1.c: Regenerated.
* generated/iany_i16.c: Regenerated.
* generated/iany_i2.c: Regenerated.
* generated/iany_i4.c: Regenerated.
* generated/iany_i8.c: Regenerated.
* generated/iparity_i1.c: Regenerated.
* generated/iparity_i16.c: Regenerated.
* generated/iparity_i2.c: Regenerated.
* generated/iparity_i4.c: Regenerated.
* generated/iparity_i8.c: Regenerated.
* generated/maxloc0_16_i1.c: Regenerated.
* generated/maxloc0_16_i16.c: Regenerated.
* generated/maxloc0_16_i2.c: Regenerated.
* generated/maxloc0_16_i4.c: Regenerated.
* generated/maxloc0_16_i8.c: Regenerated.
* generated/maxloc0_16_r10.c: Regenerated.
* generated/maxloc0_16_r16.c: Regenerated.
* generated/maxloc0_16_r4.c: Regenerated.
* generated/maxloc0_16_r8.c: Regenerated.
* generated/maxloc0_16_s1.c: Regenerated.
* generated/maxloc0_16_s4.c: Regenerated.
* generated/maxloc0_4_i1.c: Regenerated.
* generated/maxloc0_4_i16.c: Regenerated.
* generated/maxloc0_4_i2.c: Regenerated.
* generated/maxloc0_4_i4.c: Regenerated.
* generated/maxloc0_4_i8.c: Regenerated.
* generated/maxloc0_4_r10.c: Regenerated.
* generated/maxloc0_4_r16.c: Regenerated.
* generated/maxloc0_4_r4.c: Regenerated.
* generated/maxloc0_4_r8.c: Regenerated.
* generated/maxloc0_4_s1.c: Regenerated.
* generated/maxloc0_4_s4.c: Regenerated.
* generated/maxloc0_8_i1.c: Regenerated.
* generated/maxloc0_8_i16.c: Regenerated.
* generated/maxloc0_8_i2.c: Regenerated.
* generated/maxloc0_8_i4.c: Regenerated.
* generated/maxloc0_8_i8.c: Regenerated.
* generated/maxloc0_8_r10.c: Regenerated.
* generated/maxloc0_8_r16.c: Regenerated.
* generated/maxloc0_8_r4.c: Regenerated.
* generated/maxloc0_8_r8.c: Regenerated.
* generated/maxloc0_8_s1.c: Regenerated.
* generated/maxloc0_8_s4.c: Regenerated.
* generated/maxloc1_16_i1.c: Regenerated.
* generated/maxloc1_16_i16.c: Regenerated.
* generated/maxloc1_16_i2.c: Regenerated.
* generated/maxloc1_16_i4.c: Regenerated.
* generated/maxloc1_16_i8.c: Regenerated.
* generated/maxloc1_16_r10.c: Regenerated.
* generated/maxloc1_16_r16.c: Regenerated.
* generated/maxloc1_16_r4.c: Regenerated.
* generated/maxloc1_16_r8.c: Regenerated.
* generated/maxloc1_16_s1.c: Regenerated.
* generated/maxloc1_16_s4.c: Regenerated.
* generated/maxloc1_4_i1.c: Regenerated.
* generated/maxloc1_4_i16.c: Regenerated.
* generated/maxloc1_4_i2.c: Regenerated.
* generated/maxloc1_4_i4.c: Regenerated.
* generated/maxloc1_4_i8.c: Regenerated.
* generated/maxloc1_4_r10.c: Regenerated.
* generated/maxloc1_4_r16.c: Regenerated.
* generated/maxloc1_4_r4.c: Regenerated.
* generated/maxloc1_4_r8.c: Regenerated.
* generated/maxloc1_4_s1.c: Regenerated.
* generated/maxloc1_4_s4.c: Regenerated.
* generated/maxloc1_8_i1.c: Regenerated.
* generated/maxloc1_8_i16.c: Regenerated.
* generated/maxloc1_8_i2.c: Regenerated.
* generated/maxloc1_8_i4.c: Regenerated.
* generated/maxloc1_8_i8.c: Regenerated.
* generated/maxloc1_8_r10.c: Regenerated.
* generated/maxloc1_8_r16.c: Regenerated.
* generated/maxloc1_8_r4.c: Regenerated.
* generated/maxloc1_8_r8.c: Regenerated.
* generated/maxloc1_8_s1.c: Regenerated.
* generated/maxloc1_8_s4.c: Regenerated.
* generated/maxval_i1.c: Regenerated.
* generated/maxval_i16.c: Regenerated.
* generated/maxval_i2.c: Regenerated.
* generated/maxval_i4.c: Regenerated.
* generated/maxval_i8.c: Regenerated.
* generated/maxval_r10.c: Regenerated.
* generated/maxval_r16.c: Regenerated.
* generated/maxval_r4.c: Regenerated.
* generated/maxval_r8.c: Regenerated.
* generated/minloc0_16_i1.c: Regenerated.
* generated/minloc0_16_i16.c: Regenerated.
* generated/minloc0_16_i2.c: Regenerated.
* generated/minloc0_16_i4.c: Regenerated.
* generated/minloc0_16_i8.c: Regenerated.
* generated/minloc0_16_r10.c: Regenerated.
* generated/minloc0_16_r16.c: Regenerated.
* generated/minloc0_16_r4.c: Regenerated.
* generated/minloc0_16_r8.c: Regenerated.
* generated/minloc0_16_s1.c: Regenerated.
* generated/minloc0_16_s4.c: Regenerated.
* generated/minloc0_4_i1.c: Regenerated.
* generated/minloc0_4_i16.c: Regenerated.
* generated/minloc0_4_i2.c: Regenerated.
* generated/minloc0_4_i4.c: Regenerated.
* generated/minloc0_4_i8.c: Regenerated.
* generated/minloc0_4_r10.c: Regenerated.
* generated/minloc0_4_r16.c: Regenerated.
* generated/minloc0_4_r4.c: Regenerated.
* generated/minloc0_4_r8.c: Regenerated.
* generated/minloc0_4_s1.c: Regenerated.
* generated/minloc0_4_s4.c: Regenerated.
* generated/minloc0_8_i1.c: Regenerated.
* generated/minloc0_8_i16.c: Regenerated.
* generated/minloc0_8_i2.c: Regenerated.
* generated/minloc0_8_i4.c: Regenerated.
* generated/minloc0_8_i8.c: Regenerated.
* generated/minloc0_8_r10.c: Regenerated.
* generated/minloc0_8_r16.c: Regenerated.
* generated/minloc0_8_r4.c: Regenerated.
* generated/minloc0_8_r8.c: Regenerated.
* generated/minloc0_8_s1.c: Regenerated.
* generated/minloc0_8_s4.c: Regenerated.
* generated/minloc1_16_i1.c: Regenerated.
* generated/minloc1_16_i16.c: Regenerated.
* generated/minloc1_16_i2.c: Regenerated.
* generated/minloc1_16_i4.c: Regenerated.
* generated/minloc1_16_i8.c: Regenerated.
* generated/minloc1_16_r10.c: Regenerated.
* generated/minloc1_16_r16.c: Regenerated.
* generated/minloc1_16_r4.c: Regenerated.
* generated/minloc1_16_r8.c: Regenerated.
* generated/minloc1_16_s1.c: Regenerated.
* generated/minloc1_16_s4.c: Regenerated.
* generated/minloc1_4_i1.c: Regenerated.
* generated/minloc1_4_i16.c: Regenerated.
* generated/minloc1_4_i2.c: Regenerated.
* generated/minloc1_4_i4.c: Regenerated.
* generated/minloc1_4_i8.c: Regenerated.
* generated/minloc1_4_r10.c: Regenerated.
* generated/minloc1_4_r16.c: Regenerated.
* generated/minloc1_4_r4.c: Regenerated.
* generated/minloc1_4_r8.c: Regenerated.
* generated/minloc1_4_s1.c: Regenerated.
* generated/minloc1_4_s4.c: Regenerated.
* generated/minloc1_8_i1.c: Regenerated.
* generated/minloc1_8_i16.c: Regenerated.
* generated/minloc1_8_i2.c: Regenerated.
* generated/minloc1_8_i4.c: Regenerated.
* generated/minloc1_8_i8.c: Regenerated.
* generated/minloc1_8_r10.c: Regenerated.
* generated/minloc1_8_r16.c: Regenerated.
* generated/minloc1_8_r4.c: Regenerated.
* generated/minloc1_8_r8.c: Regenerated.
* generated/minloc1_8_s1.c: Regenerated.
* generated/minloc1_8_s4.c: Regenerated.
* generated/minval_i1.c: Regenerated.
* generated/minval_i16.c: Regenerated.
* generated/minval_i2.c: Regenerated.
* generated/minval_i4.c: Regenerated.
* generated/minval_i8.c: Regenerated.
* generated/minval_r10.c: Regenerated.
* generated/minval_r16.c: Regenerated.
* generated/minval_r4.c: Regenerated.
* generated/minval_r8.c: Regenerated.
* generated/norm2_r10.c: Regenerated.
* generated/norm2_r16.c: Regenerated.
* generated/norm2_r4.c: Regenerated.
* generated/norm2_r8.c: Regenerated.
* generated/parity_l1.c: Regenerated.
* generated/parity_l16.c: Regenerated.
* generated/parity_l2.c: Regenerated.
* generated/parity_l4.c: Regenerated.
* generated/parity_l8.c: Regenerated.
* generated/product_c10.c: Regenerated.
* generated/product_c16.c: Regenerated.
* generated/product_c4.c: Regenerated.
* generated/product_c8.c: Regenerated.
* generated/product_i1.c: Regenerated.
* generated/product_i16.c: Regenerated.
* generated/product_i2.c: Regenerated.
* generated/product_i4.c: Regenerated.
* generated/product_i8.c: Regenerated.
* generated/product_r10.c: Regenerated.
* generated/product_r16.c: Regenerated.
* generated/product_r4.c: Regenerated.
* generated/product_r8.c: Regenerated.
* generated/sum_c10.c: Regenerated.
* generated/sum_c16.c: Regenerated.
* generated/sum_c4.c: Regenerated.
* generated/sum_c8.c: Regenerated.
* generated/sum_i1.c: Regenerated.
* generated/sum_i16.c: Regenerated.
* generated/sum_i2.c: Regenerated.
* generated/sum_i4.c: Regenerated.
* generated/sum_i8.c: Regenerated.
* generated/sum_r10.c: Regenerated.
* generated/sum_r16.c: Regenerated.
* generated/sum_r4.c: Regenerated.
* generated/sum_r8.c: Regenerated.

2018-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/54613
* gfortran.dg/minmaxloc_9.f90: New test.
* gfortran.dg/minmaxloc_10.f90: New test.
* gfortran.dg/minmaxloc_11.f90: New test.

From-SVN: r256705

240 files changed:
gcc/fortran/ChangeLog
gcc/fortran/check.c
gcc/fortran/gfortran.h
gcc/fortran/intrinsic.c
gcc/fortran/intrinsic.h
gcc/fortran/iresolve.c
gcc/fortran/simplify.c
gcc/fortran/trans-intrinsic.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/minmaxloc_10.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/minmaxloc_11.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/minmaxloc_9.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/generated/iall_i1.c
libgfortran/generated/iall_i16.c
libgfortran/generated/iall_i2.c
libgfortran/generated/iall_i4.c
libgfortran/generated/iall_i8.c
libgfortran/generated/iany_i1.c
libgfortran/generated/iany_i16.c
libgfortran/generated/iany_i2.c
libgfortran/generated/iany_i4.c
libgfortran/generated/iany_i8.c
libgfortran/generated/iparity_i1.c
libgfortran/generated/iparity_i16.c
libgfortran/generated/iparity_i2.c
libgfortran/generated/iparity_i4.c
libgfortran/generated/iparity_i8.c
libgfortran/generated/maxloc0_16_i1.c
libgfortran/generated/maxloc0_16_i16.c
libgfortran/generated/maxloc0_16_i2.c
libgfortran/generated/maxloc0_16_i4.c
libgfortran/generated/maxloc0_16_i8.c
libgfortran/generated/maxloc0_16_r10.c
libgfortran/generated/maxloc0_16_r16.c
libgfortran/generated/maxloc0_16_r4.c
libgfortran/generated/maxloc0_16_r8.c
libgfortran/generated/maxloc0_16_s1.c
libgfortran/generated/maxloc0_16_s4.c
libgfortran/generated/maxloc0_4_i1.c
libgfortran/generated/maxloc0_4_i16.c
libgfortran/generated/maxloc0_4_i2.c
libgfortran/generated/maxloc0_4_i4.c
libgfortran/generated/maxloc0_4_i8.c
libgfortran/generated/maxloc0_4_r10.c
libgfortran/generated/maxloc0_4_r16.c
libgfortran/generated/maxloc0_4_r4.c
libgfortran/generated/maxloc0_4_r8.c
libgfortran/generated/maxloc0_4_s1.c
libgfortran/generated/maxloc0_4_s4.c
libgfortran/generated/maxloc0_8_i1.c
libgfortran/generated/maxloc0_8_i16.c
libgfortran/generated/maxloc0_8_i2.c
libgfortran/generated/maxloc0_8_i4.c
libgfortran/generated/maxloc0_8_i8.c
libgfortran/generated/maxloc0_8_r10.c
libgfortran/generated/maxloc0_8_r16.c
libgfortran/generated/maxloc0_8_r4.c
libgfortran/generated/maxloc0_8_r8.c
libgfortran/generated/maxloc0_8_s1.c
libgfortran/generated/maxloc0_8_s4.c
libgfortran/generated/maxloc1_16_i1.c
libgfortran/generated/maxloc1_16_i16.c
libgfortran/generated/maxloc1_16_i2.c
libgfortran/generated/maxloc1_16_i4.c
libgfortran/generated/maxloc1_16_i8.c
libgfortran/generated/maxloc1_16_r10.c
libgfortran/generated/maxloc1_16_r16.c
libgfortran/generated/maxloc1_16_r4.c
libgfortran/generated/maxloc1_16_r8.c
libgfortran/generated/maxloc1_16_s1.c
libgfortran/generated/maxloc1_16_s4.c
libgfortran/generated/maxloc1_4_i1.c
libgfortran/generated/maxloc1_4_i16.c
libgfortran/generated/maxloc1_4_i2.c
libgfortran/generated/maxloc1_4_i4.c
libgfortran/generated/maxloc1_4_i8.c
libgfortran/generated/maxloc1_4_r10.c
libgfortran/generated/maxloc1_4_r16.c
libgfortran/generated/maxloc1_4_r4.c
libgfortran/generated/maxloc1_4_r8.c
libgfortran/generated/maxloc1_4_s1.c
libgfortran/generated/maxloc1_4_s4.c
libgfortran/generated/maxloc1_8_i1.c
libgfortran/generated/maxloc1_8_i16.c
libgfortran/generated/maxloc1_8_i2.c
libgfortran/generated/maxloc1_8_i4.c
libgfortran/generated/maxloc1_8_i8.c
libgfortran/generated/maxloc1_8_r10.c
libgfortran/generated/maxloc1_8_r16.c
libgfortran/generated/maxloc1_8_r4.c
libgfortran/generated/maxloc1_8_r8.c
libgfortran/generated/maxloc1_8_s1.c
libgfortran/generated/maxloc1_8_s4.c
libgfortran/generated/maxloc2_16_s1.c
libgfortran/generated/maxloc2_16_s4.c
libgfortran/generated/maxloc2_4_s1.c
libgfortran/generated/maxloc2_4_s4.c
libgfortran/generated/maxloc2_8_s1.c
libgfortran/generated/maxloc2_8_s4.c
libgfortran/generated/maxval_i1.c
libgfortran/generated/maxval_i16.c
libgfortran/generated/maxval_i2.c
libgfortran/generated/maxval_i4.c
libgfortran/generated/maxval_i8.c
libgfortran/generated/maxval_r10.c
libgfortran/generated/maxval_r16.c
libgfortran/generated/maxval_r4.c
libgfortran/generated/maxval_r8.c
libgfortran/generated/minloc0_16_i1.c
libgfortran/generated/minloc0_16_i16.c
libgfortran/generated/minloc0_16_i2.c
libgfortran/generated/minloc0_16_i4.c
libgfortran/generated/minloc0_16_i8.c
libgfortran/generated/minloc0_16_r10.c
libgfortran/generated/minloc0_16_r16.c
libgfortran/generated/minloc0_16_r4.c
libgfortran/generated/minloc0_16_r8.c
libgfortran/generated/minloc0_16_s1.c
libgfortran/generated/minloc0_16_s4.c
libgfortran/generated/minloc0_4_i1.c
libgfortran/generated/minloc0_4_i16.c
libgfortran/generated/minloc0_4_i2.c
libgfortran/generated/minloc0_4_i4.c
libgfortran/generated/minloc0_4_i8.c
libgfortran/generated/minloc0_4_r10.c
libgfortran/generated/minloc0_4_r16.c
libgfortran/generated/minloc0_4_r4.c
libgfortran/generated/minloc0_4_r8.c
libgfortran/generated/minloc0_4_s1.c
libgfortran/generated/minloc0_4_s4.c
libgfortran/generated/minloc0_8_i1.c
libgfortran/generated/minloc0_8_i16.c
libgfortran/generated/minloc0_8_i2.c
libgfortran/generated/minloc0_8_i4.c
libgfortran/generated/minloc0_8_i8.c
libgfortran/generated/minloc0_8_r10.c
libgfortran/generated/minloc0_8_r16.c
libgfortran/generated/minloc0_8_r4.c
libgfortran/generated/minloc0_8_r8.c
libgfortran/generated/minloc0_8_s1.c
libgfortran/generated/minloc0_8_s4.c
libgfortran/generated/minloc1_16_i1.c
libgfortran/generated/minloc1_16_i16.c
libgfortran/generated/minloc1_16_i2.c
libgfortran/generated/minloc1_16_i4.c
libgfortran/generated/minloc1_16_i8.c
libgfortran/generated/minloc1_16_r10.c
libgfortran/generated/minloc1_16_r16.c
libgfortran/generated/minloc1_16_r4.c
libgfortran/generated/minloc1_16_r8.c
libgfortran/generated/minloc1_16_s1.c
libgfortran/generated/minloc1_16_s4.c
libgfortran/generated/minloc1_4_i1.c
libgfortran/generated/minloc1_4_i16.c
libgfortran/generated/minloc1_4_i2.c
libgfortran/generated/minloc1_4_i4.c
libgfortran/generated/minloc1_4_i8.c
libgfortran/generated/minloc1_4_r10.c
libgfortran/generated/minloc1_4_r16.c
libgfortran/generated/minloc1_4_r4.c
libgfortran/generated/minloc1_4_r8.c
libgfortran/generated/minloc1_4_s1.c
libgfortran/generated/minloc1_4_s4.c
libgfortran/generated/minloc1_8_i1.c
libgfortran/generated/minloc1_8_i16.c
libgfortran/generated/minloc1_8_i2.c
libgfortran/generated/minloc1_8_i4.c
libgfortran/generated/minloc1_8_i8.c
libgfortran/generated/minloc1_8_r10.c
libgfortran/generated/minloc1_8_r16.c
libgfortran/generated/minloc1_8_r4.c
libgfortran/generated/minloc1_8_r8.c
libgfortran/generated/minloc1_8_s1.c
libgfortran/generated/minloc1_8_s4.c
libgfortran/generated/minloc2_16_s1.c
libgfortran/generated/minloc2_16_s4.c
libgfortran/generated/minloc2_4_s1.c
libgfortran/generated/minloc2_4_s4.c
libgfortran/generated/minloc2_8_s1.c
libgfortran/generated/minloc2_8_s4.c
libgfortran/generated/minval_i1.c
libgfortran/generated/minval_i16.c
libgfortran/generated/minval_i2.c
libgfortran/generated/minval_i4.c
libgfortran/generated/minval_i8.c
libgfortran/generated/minval_r10.c
libgfortran/generated/minval_r16.c
libgfortran/generated/minval_r4.c
libgfortran/generated/minval_r8.c
libgfortran/generated/norm2_r10.c
libgfortran/generated/norm2_r16.c
libgfortran/generated/norm2_r4.c
libgfortran/generated/norm2_r8.c
libgfortran/generated/parity_l1.c
libgfortran/generated/parity_l16.c
libgfortran/generated/parity_l2.c
libgfortran/generated/parity_l4.c
libgfortran/generated/parity_l8.c
libgfortran/generated/product_c10.c
libgfortran/generated/product_c16.c
libgfortran/generated/product_c4.c
libgfortran/generated/product_c8.c
libgfortran/generated/product_i1.c
libgfortran/generated/product_i16.c
libgfortran/generated/product_i2.c
libgfortran/generated/product_i4.c
libgfortran/generated/product_i8.c
libgfortran/generated/product_r10.c
libgfortran/generated/product_r16.c
libgfortran/generated/product_r4.c
libgfortran/generated/product_r8.c
libgfortran/generated/sum_c10.c
libgfortran/generated/sum_c16.c
libgfortran/generated/sum_c4.c
libgfortran/generated/sum_c8.c
libgfortran/generated/sum_i1.c
libgfortran/generated/sum_i16.c
libgfortran/generated/sum_i2.c
libgfortran/generated/sum_i4.c
libgfortran/generated/sum_i8.c
libgfortran/generated/sum_r10.c
libgfortran/generated/sum_r16.c
libgfortran/generated/sum_r4.c
libgfortran/generated/sum_r8.c
libgfortran/m4/iforeach-s.m4
libgfortran/m4/iforeach.m4
libgfortran/m4/ifunction-s.m4
libgfortran/m4/ifunction.m4
libgfortran/m4/iparm.m4
libgfortran/m4/maxloc0.m4
libgfortran/m4/maxloc0s.m4
libgfortran/m4/maxloc1.m4
libgfortran/m4/maxloc1s.m4
libgfortran/m4/maxloc2s.m4
libgfortran/m4/minloc0.m4
libgfortran/m4/minloc0s.m4
libgfortran/m4/minloc1.m4
libgfortran/m4/minloc1s.m4
libgfortran/m4/minloc2s.m4

index 75331718092559daf01bfd3faa8f862dd17426c5..453dc74ed66b33b9debe8e3ac3d11221bfc342f0 100644 (file)
@@ -1,3 +1,29 @@
+2018-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/54613
+       * gfortran.h (gfc_check_f): Rename f4ml to f5ml.
+       (gfc_logical_4_kind): New macro
+       * intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument.
+       (gfc_simplify_maxloc): Likewise.
+       (gfc_resolve_maxloc): Likewise.
+       (gfc_resolve_minloc): Likewise.
+       * check.c (gfc_check_minloc_maxloc): Add checking for "back"
+       argument; also raise error if it is used (for now). Add it
+       if it isn't present.
+       * intrinsic.c (add_sym_4ml): Rename to
+       (add_sym_5ml), adjust for extra argument.
+       (add_functions): Add "back" constant. Adjust maxloc and minloc
+       for back argument.
+       * iresolve.c (gfc_resolve_maxloc): Add back argument. If back is
+       not of gfc_logical_4_kind, convert.
+       (gfc_resolve_minloc): Likewise.
+       * simplify.c (gfc_simplify_minloc): Add back argument.
+       (gfc_simplify_maxloc): Likewise.
+       * trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last
+       argument to %VAL to ensure passing by value.
+       (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc
+       also for library calls.
+
 2018-01-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/82007
@@ -6,7 +32,7 @@
        format string or format label is present.
        * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix
        whitespace.
-       
+
 2018-01-13  Thomas Koenig <tkoenig@gcc.gnu.org>
 
        PR fortran/83744
index fccb9275bec772fa974c5585875adc0e21c661b4..a2c8b520d80168a94ddc0ab4ed3761fb94dd8570 100644 (file)
@@ -3265,12 +3265,13 @@ gfc_check_matmul (gfc_expr *matrix_a, gfc_expr *matrix_b)
         DIM    MASK
 
    I.e. in the case of minloc(array,mask), mask will be in the second
-   position of the argument list and we'll have to fix that up.  */
+   position of the argument list and we'll have to fix that up.  Also,
+   add the BACK argument if that isn't present.  */
 
 bool
 gfc_check_minloc_maxloc (gfc_actual_arglist *ap)
 {
-  gfc_expr *a, *m, *d, *k;
+  gfc_expr *a, *m, *d, *k, *b;
 
   a = ap->expr;
   if (!int_or_real_or_char_check_f2003 (a, 0) || !array_check (a, 0))
@@ -3279,6 +3280,26 @@ gfc_check_minloc_maxloc (gfc_actual_arglist *ap)
   d = ap->next->expr;
   m = ap->next->next->expr;
   k = ap->next->next->next->expr;
+  b = ap->next->next->next->next->expr;
+
+  if (b)
+    {
+      if (!type_check (b, 4, BT_LOGICAL) || !scalar_check (b,4))
+       return false;
+
+      /* TODO: Remove this once BACK is actually implemented.  */
+      if (b->expr_type != EXPR_CONSTANT || b->value.logical != 0)
+       {
+         gfc_error ("BACK argument to %qs intrinsic not yet "
+                    "implemented", gfc_current_intrinsic);
+         return false;
+       }
+    }
+  else
+    {
+      b = gfc_get_logical_expr (gfc_default_logical_kind, NULL, 0);
+      ap->next->next->next->next->expr = b;
+    }
 
   if (m == NULL && d != NULL && d->ts.type == BT_LOGICAL
       && ap->next->name == NULL)
index b3f8e423efec9bd9f6546e7e2d9b63b893b28674..6ddf450ad2edfa834a70e6185833a0f4b4261286 100644 (file)
@@ -1999,7 +1999,7 @@ typedef union
   bool (*f1m)(gfc_actual_arglist *);
   bool (*f2)(struct gfc_expr *, struct gfc_expr *);
   bool (*f3)(struct gfc_expr *, struct gfc_expr *, struct gfc_expr *);
-  bool (*f4ml)(gfc_actual_arglist *);
+  bool (*f5ml)(gfc_actual_arglist *);
   bool (*f3red)(gfc_actual_arglist *);
   bool (*f4)(struct gfc_expr *, struct gfc_expr *, struct gfc_expr *,
            struct gfc_expr *);
@@ -2915,6 +2915,8 @@ extern int gfc_size_kind;
 extern int gfc_numeric_storage_size;
 extern int gfc_character_storage_size;
 
+#define gfc_logical_4_kind 4
+
 /* symbol.c */
 void gfc_clear_new_implicit (void);
 bool gfc_add_new_implicit_range (int, int);
index ed732aa525258d9657f483dd67fc6317c3e93b95..4844cee0c34660b37d309e38c1d8c8accd2ed9cb 100644 (file)
@@ -687,29 +687,33 @@ add_sym_3 (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt ty
    might have to be reordered.  */
 
 static void
-add_sym_4ml (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type,
+add_sym_5ml (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type,
             int kind, int standard,
             bool (*check) (gfc_actual_arglist *),
-            gfc_expr *(*simplify) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *),
-            void (*resolve) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *),
+            gfc_expr *(*simplify) (gfc_expr *, gfc_expr *, gfc_expr *,
+                                   gfc_expr *, gfc_expr *),
+            void (*resolve) (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *,
+                             gfc_expr *, gfc_expr *),
             const char *a1, bt type1, int kind1, int optional1,
             const char *a2, bt type2, int kind2, int optional2,
             const char *a3, bt type3, int kind3, int optional3,
-            const char *a4, bt type4, int kind4, int optional4)
+            const char *a4, bt type4, int kind4, int optional4,
+            const char *a5, bt type5, int kind5, int optional5)
 {
   gfc_check_f cf;
   gfc_simplify_f sf;
   gfc_resolve_f rf;
 
-  cf.f4ml = check;
-  sf.f4 = simplify;
-  rf.f4 = resolve;
+  cf.f5ml = check;
+  sf.f5 = simplify;
+  rf.f5 = resolve;
 
   add_sym (name, id, cl, actual_ok, type, kind, standard, cf, sf, rf,
           a1, type1, kind1, optional1, INTENT_IN,
           a2, type2, kind2, optional2, INTENT_IN,
           a3, type3, kind3, optional3, INTENT_IN,
           a4, type4, kind4, optional4, INTENT_IN,
+          a5, type5, kind5, optional5, INTENT_IN,
           (void *) 0);
 }
 
@@ -1242,7 +1246,7 @@ add_functions (void)
     *num = "number", *tm = "time", *nm = "name", *md = "mode",
     *vl = "values", *p1 = "path1", *p2 = "path2", *com = "command",
     *ca = "coarray", *sub = "sub", *dist = "distance", *failed="failed",
-    *c_ptr_1 = "c_ptr_1", *c_ptr_2 = "c_ptr_2";
+    *c_ptr_1 = "c_ptr_1", *c_ptr_2 = "c_ptr_2", *back = "back";
 
   int di, dr, dd, dl, dc, dz, ii;
 
@@ -2457,10 +2461,11 @@ add_functions (void)
 
   make_generic ("maxexponent", GFC_ISYM_MAXEXPONENT, GFC_STD_F95);
 
-  add_sym_4ml ("maxloc", GFC_ISYM_MAXLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
+  add_sym_5ml ("maxloc", GFC_ISYM_MAXLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
               gfc_check_minloc_maxloc, gfc_simplify_maxloc, gfc_resolve_maxloc,
               ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
-              msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL);
+              msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL,
+              back, BT_LOGICAL, dl, OPTIONAL);
 
   make_generic ("maxloc", GFC_ISYM_MAXLOC, GFC_STD_F95);
 
@@ -2533,11 +2538,12 @@ add_functions (void)
 
   make_generic ("minexponent", GFC_ISYM_MINEXPONENT, GFC_STD_F95);
 
-  add_sym_4ml ("minloc", GFC_ISYM_MINLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
+  add_sym_5ml ("minloc", GFC_ISYM_MINLOC, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_INTEGER, di, GFC_STD_F95,
               gfc_check_minloc_maxloc, gfc_simplify_minloc, gfc_resolve_minloc,
               ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL,
-              msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL);
-
+              msk, BT_LOGICAL, dl, OPTIONAL, kind, BT_INTEGER, di, OPTIONAL,
+              back, BT_LOGICAL, dl, OPTIONAL);
+              
   make_generic ("minloc", GFC_ISYM_MINLOC, GFC_STD_F95);
 
   add_sym_3red ("minval", GFC_ISYM_MINVAL, CLASS_TRANSFORMATIONAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F95,
@@ -4500,7 +4506,7 @@ check_specific (gfc_intrinsic_sym *specific, gfc_expr *expr, int error_flag)
   if (!do_ts29113_check (specific, *ap))
     return false;
 
-  if (specific->check.f4ml == gfc_check_minloc_maxloc)
+  if (specific->check.f5ml == gfc_check_minloc_maxloc)
     /* This is special because we might have to reorder the argument list.  */
     t = gfc_check_minloc_maxloc (*ap);
   else if (specific->check.f3red == gfc_check_minval_maxval)
index a7db830d381c5a3b0cf5a284c0f7719626d869e2..7615dd1e6115a2ee9785aacfe51e68158a18a885 100644 (file)
@@ -348,10 +348,12 @@ gfc_expr *gfc_simplify_maskr (gfc_expr *, gfc_expr *);
 gfc_expr *gfc_simplify_merge (gfc_expr *, gfc_expr *, gfc_expr *);
 gfc_expr *gfc_simplify_merge_bits (gfc_expr *, gfc_expr *, gfc_expr *);
 gfc_expr *gfc_simplify_min (gfc_expr *);
-gfc_expr *gfc_simplify_minloc (gfc_expr*, gfc_expr *, gfc_expr *, gfc_expr *);
+gfc_expr *gfc_simplify_minloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *,
+                              gfc_expr *);
 gfc_expr *gfc_simplify_minval (gfc_expr *, gfc_expr*, gfc_expr*);
 gfc_expr *gfc_simplify_max (gfc_expr *);
-gfc_expr *gfc_simplify_maxloc (gfc_expr*, gfc_expr *, gfc_expr *, gfc_expr *);
+gfc_expr *gfc_simplify_maxloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *,
+                              gfc_expr *);
 gfc_expr *gfc_simplify_maxval (gfc_expr *, gfc_expr*, gfc_expr*);
 gfc_expr *gfc_simplify_maxexponent (gfc_expr *);
 gfc_expr *gfc_simplify_minexponent (gfc_expr *);
@@ -540,7 +542,7 @@ void gfc_resolve_logical (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_lstat (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_matmul (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_max (gfc_expr *, gfc_actual_arglist *);
-void gfc_resolve_maxloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_maxloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_maxval (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_mclock (gfc_expr *);
 void gfc_resolve_mclock8 (gfc_expr *);
@@ -548,7 +550,7 @@ void gfc_resolve_mask (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_merge (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_merge_bits (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_min (gfc_expr *, gfc_actual_arglist *);
-void gfc_resolve_minloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
+void gfc_resolve_minloc (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_minval (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_mod (gfc_expr *, gfc_expr *, gfc_expr *);
 void gfc_resolve_modulo (gfc_expr *, gfc_expr *, gfc_expr *);
index 11f256919b9e917f268bcf147d86ec9bddb426b7..9a4e199d01e4d3d941014512c23913cf4341b137 100644 (file)
@@ -1697,7 +1697,7 @@ gfc_resolve_max (gfc_expr *f, gfc_actual_arglist *args)
 
 void
 gfc_resolve_maxloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
-                   gfc_expr *mask, gfc_expr *kind)
+                   gfc_expr *mask, gfc_expr *kind, gfc_expr *back)
 {
   const char *name;
   int i, j, idim;
@@ -1781,6 +1781,15 @@ gfc_resolve_maxloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
       ts.kind = fkind;
       gfc_convert_type_warn (f, &ts, 2, 0);
     }
+
+  if (back->ts.kind != gfc_logical_4_kind)
+    {
+      gfc_typespec ts;
+      gfc_clear_ts (&ts);
+      ts.type = BT_LOGICAL;
+      ts.kind = gfc_logical_4_kind;
+      gfc_convert_type_warn (back, &ts, 2, 0);
+    }
 }
 
 
@@ -1907,7 +1916,7 @@ gfc_resolve_min (gfc_expr *f, gfc_actual_arglist *args)
 
 void
 gfc_resolve_minloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
-                   gfc_expr *mask, gfc_expr *kind)
+                   gfc_expr *mask, gfc_expr *kind, gfc_expr *back)
 {
   const char *name;
   int i, j, idim;
@@ -1986,6 +1995,15 @@ gfc_resolve_minloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim,
       ts.kind = fkind;
       gfc_convert_type_warn (f, &ts, 2, 0);
     }
+
+  if (back->ts.kind != gfc_logical_4_kind)
+    {
+      gfc_typespec ts;
+      gfc_clear_ts (&ts);
+      ts.type = BT_LOGICAL;
+      ts.kind = gfc_logical_4_kind;
+      gfc_convert_type_warn (back, &ts, 2, 0);
+    }
 }
 
 
index 3e5abd44cc6efeffb4942bd9b0795261457227fc..b7c6b02081f874caef7dbe15313bcd2dd6273305 100644 (file)
@@ -5343,13 +5343,15 @@ gfc_simplify_minmaxloc (gfc_expr *array, gfc_expr *dim, gfc_expr *mask,
 }
 
 gfc_expr *
-gfc_simplify_minloc (gfc_expr *array, gfc_expr *dim, gfc_expr *mask, gfc_expr *kind)
+gfc_simplify_minloc (gfc_expr *array, gfc_expr *dim, gfc_expr *mask, gfc_expr *kind,
+                    gfc_expr *back ATTRIBUTE_UNUSED)
 {
   return gfc_simplify_minmaxloc (array, dim, mask, kind, -1);
 }
 
 gfc_expr *
-gfc_simplify_maxloc (gfc_expr *array, gfc_expr *dim, gfc_expr *mask, gfc_expr *kind)
+gfc_simplify_maxloc (gfc_expr *array, gfc_expr *dim, gfc_expr *mask, gfc_expr *kind,
+                    gfc_expr *back ATTRIBUTE_UNUSED)
 {
   return gfc_simplify_minmaxloc (array, dim, mask, kind, 1);
 }
index 7fe8286a0a946c0ead06383b5b84e9b3bdc52e31..f4defb079b400d89444811e0c7153fe8497c1727 100644 (file)
@@ -4562,13 +4562,22 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, enum tree_code op)
   tree pos;
   int n;
 
+  actual = expr->value.function.actual;
+
+  /* The last argument, BACK, is passed by value. Ensure that
+     by setting its name to %VAL. */
+  for (gfc_actual_arglist *a = actual; a; a = a->next)
+    {
+      if (a->next == NULL)
+       a->name = "%VAL";
+    }
+
   if (se->ss)
     {
       gfc_conv_intrinsic_funcall (se, expr);
       return;
     }
 
-  actual = expr->value.function.actual;
   arrayexpr = actual->expr;
 
   /* Special case for character maxloc.  Remove unneeded actual
@@ -4576,22 +4585,19 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, enum tree_code op)
   
   if (arrayexpr->ts.type == BT_CHARACTER)
     {
-      gfc_actual_arglist *a2, *a3, *a4;
-      a2 = actual->next;
-      a3 = a2->next;
-      a4 = a3->next;
-      a4->next = NULL;
-      if (a3->expr == NULL)
-       {
-         actual->next = NULL;
-         gfc_free_actual_arglist (a2);
-       }
-      else
+      gfc_actual_arglist *a, *b;
+      a = actual;
+      while (a->next)
        {
-         actual->next = a3;  /* dim */
-         a3->next = NULL;
-         a2->next = a4;
-         gfc_free_actual_arglist (a4);
+         b = a->next;
+         if (b->expr == NULL || strcmp (b->name, "dim") == 0)
+           {
+             a->next = b->next;
+             b->next = NULL;
+             gfc_free_actual_arglist (b);
+           }
+         else
+           a = b;
        }
       gfc_conv_intrinsic_funcall (se, expr);
       return;
@@ -8647,6 +8653,14 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr)
              conv_generic_with_optional_char_arg (se, expr, 1, 3);
              break;
 
+           case GFC_ISYM_MINLOC:
+             gfc_conv_intrinsic_minmaxloc (se, expr, LT_EXPR);
+             break;
+             
+           case GFC_ISYM_MAXLOC:
+             gfc_conv_intrinsic_minmaxloc (se, expr, GT_EXPR);
+             break;
+
            default:
              gfc_conv_intrinsic_funcall (se, expr);
              break;
index 9f1742ef9c9fbde58f50887cb30776353f8b55d3..382ec746bd7dcb140105909bfb1fb1d9ffc37950 100644 (file)
@@ -1,3 +1,10 @@
+2018-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/54613
+       * gfortran.dg/minmaxloc_9.f90: New test.
+       * gfortran.dg/minmaxloc_10.f90: New test.
+       * gfortran.dg/minmaxloc_11.f90: New test.
+
 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/83839
diff --git a/gcc/testsuite/gfortran.dg/minmaxloc_10.f90 b/gcc/testsuite/gfortran.dg/minmaxloc_10.f90
new file mode 100644 (file)
index 0000000..932a40b
--- /dev/null
@@ -0,0 +1,118 @@
+! { dg-do run }
+! { dg-additional-options "-fdefault-integer-8" }
+! Check max/minloc with eight-bytes logicals.
+!
+program test
+  implicit none
+  integer :: i(1), j(-1:1), res(1)
+  logical, volatile :: m(3), m2(3)
+  m = (/ .false., .false., .false. /)
+  m2 = (/ .false., .true., .false. /)
+  call check(1, 0, MAXLOC((/ 42, 23, 11 /), DIM=1, MASK=.FALSE.))
+  call check(2, 0, MAXLOC((/ 42, 23, 11 /), DIM=1, MASK=m))
+  call check(3, 2, MAXLOC((/ 42, 23, 11 /), DIM=1, MASK=m2))
+  call check(4, 0, MAXLOC(i(1:0), DIM=1, MASK=.TRUE.))
+  call check(5, 0, MAXLOC(i(1:0), DIM=1, MASK=.FALSE.))
+  call check(6, 0, MAXLOC(i(1:0), DIM=1, MASK=m(1:0)))
+  call check(7, 0, MAXLOC(i(1:0), DIM=1))
+  call check(8, 0, MINLOC((/ 42, 23, 11 /), DIM=1, MASK=.FALSE.))
+  call check(9, 0, MINLOC((/ 42, 23, 11 /), DIM=1, MASK=m))
+  call check(10, 0, MINLOC(i(1:0), DIM=1, MASK=.FALSE.))
+  call check(11,0, MINLOC(i(1:0), DIM=1, MASK=m(1:0)))
+  call check(12,0, MINLOC(i(1:0), DIM=1, MASK=.TRUE.))
+  call check(13,0, MINLOC(i(1:0), DIM=1))
+
+  j = (/ 1, 2, 1 /); call check(14, 2, MAXLOC(j, DIM=1))
+  j = (/ 1, 2, 3 /); call check(15, 3, MAXLOC(j, DIM=1))
+  j = (/ 3, 2, 1 /); call check(16, 1, MAXLOC(j, DIM=1))
+  j = (/ 1, 2, 1 /); call check(17, 1, MINLOC(j, DIM=1))
+  j = (/ 1, 2, 3 /); call check(18, 1, MINLOC(j, DIM=1))
+  j = (/ 3, 2, 1 /); call check(19, 3, MINLOC(j, DIM=1))
+
+  j = (/ 1, 2, 1 /); call check(20, 2, MAXLOC(j, DIM=1,mask=.true.))
+  j = (/ 1, 2, 3 /); call check(21, 3, MAXLOC(j, DIM=1,mask=.true.))
+  j = (/ 3, 2, 1 /); call check(22, 1, MAXLOC(j, DIM=1,mask=.true.))
+  j = (/ 1, 2, 1 /); call check(23, 1, MINLOC(j, DIM=1,mask=.true.))
+  j = (/ 1, 2, 3 /); call check(24, 1, MINLOC(j, DIM=1,mask=.true.))
+  j = (/ 3, 2, 1 /); call check(25, 3, MINLOC(j, DIM=1,mask=.true.))
+
+  j = (/ 1, 2, 1 /); call check(26, 0, MAXLOC(j, DIM=1,mask=.false.))
+  j = (/ 1, 2, 3 /); call check(27, 0, MAXLOC(j, DIM=1,mask=.false.))
+  j = (/ 3, 2, 1 /); call check(28, 0, MAXLOC(j, DIM=1,mask=.false.))
+  j = (/ 1, 2, 1 /); call check(29, 0, MINLOC(j, DIM=1,mask=.false.))
+  j = (/ 1, 2, 3 /); call check(30, 0, MINLOC(j, DIM=1,mask=.false.))
+  j = (/ 3, 2, 1 /); call check(31, 0, MINLOC(j, DIM=1,mask=.false.))
+
+  j = (/ 1, 2, 1 /); call check(32, 0, MAXLOC(j, DIM=1,mask=m))
+  j = (/ 1, 2, 3 /); call check(33, 0, MAXLOC(j, DIM=1,mask=m))
+  j = (/ 3, 2, 1 /); call check(34, 0, MAXLOC(j, DIM=1,mask=m))
+  j = (/ 1, 2, 1 /); call check(35, 0, MINLOC(j, DIM=1,mask=m))
+  j = (/ 1, 2, 3 /); call check(36, 0, MINLOC(j, DIM=1,mask=m))
+  j = (/ 3, 2, 1 /); call check(37, 0, MINLOC(j, DIM=1,mask=m))
+
+  j = (/ 1, 2, 1 /); call check(38, 2, MAXLOC(j, DIM=1,mask=m2))
+  j = (/ 1, 2, 3 /); call check(39, 2, MAXLOC(j, DIM=1,mask=m2))
+  j = (/ 3, 2, 1 /); call check(40, 2, MAXLOC(j, DIM=1,mask=m2))
+  j = (/ 1, 2, 1 /); call check(41, 2, MINLOC(j, DIM=1,mask=m2))
+  j = (/ 1, 2, 3 /); call check(42, 2, MINLOC(j, DIM=1,mask=m2))
+  j = (/ 3, 2, 1 /); call check(43, 2, MINLOC(j, DIM=1,mask=m2))
+
+! Check the library minloc and maxloc
+  res = MAXLOC((/ 42, 23, 11 /), MASK=.FALSE.); call check(44, 0,  res(1))
+  res = MAXLOC((/ 42, 23, 11 /), MASK=m); call check(45, 0,  res(1))
+  res = MAXLOC((/ 42, 23, 11 /), MASK=m2); call check(46, 2,  res(1))
+  res = MAXLOC(i(1:0), MASK=.TRUE.); call check(47, 0,  res(1))
+  res = MAXLOC(i(1:0), MASK=.FALSE.); call check(48, 0,  res(1))
+  res = MAXLOC(i(1:0), MASK=m(1:0)); call check(49, 0,  res(1))
+  res = MAXLOC(i(1:0)); call check(50, 0,  res(1))
+  res = MINLOC((/ 42, 23, 11 /), MASK=.FALSE.); call check(51, 0, res(1))
+  res = MINLOC((/ 42, 23, 11 /), MASK=m); call check(52, 0, res(1))
+  res = MINLOC(i(1:0), MASK=.FALSE.); call check(53, 0, res(1))
+  res = MINLOC(i(1:0), MASK=m(1:0)); call check(54,0, res(1))
+  res = MINLOC(i(1:0), MASK=.TRUE.); call check(55,0, res(1))
+  res = MINLOC(i(1:0)); call check(56,0, res(1))
+
+  j = (/ 1, 2, 1 /); res = MAXLOC(j); call check(57, 2,  res(1))
+  j = (/ 1, 2, 3 /); res = MAXLOC(j); call check(58, 3,  res(1))
+  j = (/ 3, 2, 1 /); res = MAXLOC(j); call check(59, 1,  res(1))
+  j = (/ 1, 2, 1 /); res = MINLOC(j); call check(60, 1, res(1))
+  j = (/ 1, 2, 3 /); res = MINLOC(j); call check(61, 1, res(1))
+  j = (/ 3, 2, 1 /); res = MINLOC(j); call check(62, 3, res(1))
+
+  j = (/ 1, 2, 1 /); res = MAXLOC(j,mask=.true.); call check(63, 2,  res(1))
+  j = (/ 1, 2, 3 /); res = MAXLOC(j,mask=.true.); call check(65, 3,  res(1))
+  j = (/ 3, 2, 1 /); res = MAXLOC(j,mask=.true.); call check(66, 1,  res(1))
+  j = (/ 1, 2, 1 /); res = MINLOC(j,mask=.true.); call check(67, 1, res(1))
+  j = (/ 1, 2, 3 /); res = MINLOC(j,mask=.true.); call check(68, 1, res(1))
+  j = (/ 3, 2, 1 /); res = MINLOC(j,mask=.true.); call check(69, 3, res(1))
+
+  j = (/ 1, 2, 1 /); res = MAXLOC(j,mask=.false.); call check(70, 0,  res(1))
+  j = (/ 1, 2, 3 /); res = MAXLOC(j,mask=.false.); call check(71, 0,  res(1))
+  j = (/ 3, 2, 1 /); res = MAXLOC(j,mask=.false.); call check(72, 0,  res(1))
+  j = (/ 1, 2, 1 /); res = MINLOC(j,mask=.false.); call check(73, 0, res(1))
+  j = (/ 1, 2, 3 /); res = MINLOC(j,mask=.false.); call check(74, 0, res(1))
+  j = (/ 3, 2, 1 /); res = MINLOC(j,mask=.false.); call check(75, 0, res(1))
+
+  j = (/ 1, 2, 1 /); res = MAXLOC(j,mask=m); call check(76, 0,  res(1))
+  j = (/ 1, 2, 3 /); res = MAXLOC(j,mask=m); call check(77, 0,  res(1))
+  j = (/ 3, 2, 1 /); res = MAXLOC(j,mask=m); call check(78, 0,  res(1))
+  j = (/ 1, 2, 1 /); res = MINLOC(j,mask=m); call check(79, 0, res(1))
+  j = (/ 1, 2, 3 /); res = MINLOC(j,mask=m); call check(80, 0, res(1))
+  j = (/ 3, 2, 1 /); res = MINLOC(j,mask=m);call check(81, 0, res(1))
+
+  j = (/ 1, 2, 1 /); res = MAXLOC(j,mask=m2); call check(82, 2,  res(1))
+  j = (/ 1, 2, 3 /); res = MAXLOC(j,mask=m2); call check(83, 2,  res(1))
+  j = (/ 3, 2, 1 /); res = MAXLOC(j,mask=m2); call check(84, 2,  res(1))
+  j = (/ 1, 2, 1 /); res = MINLOC(j,mask=m2); call check(85, 2, res(1))
+  j = (/ 1, 2, 3 /); res = MINLOC(j,mask=m2); call check(86, 2, res(1))
+  j = (/ 3, 2, 1 /); res = MINLOC(j,mask=m2); call check(87, 2, res(1))
+
+contains
+subroutine check(n, i,j)
+  integer, value, intent(in) :: i,j,n
+  if(i /= j) then
+     call abort()
+!    print *, 'ERROR: Test',n,' expected ',i,' received ', j
+  end if
+end subroutine check
+end program
diff --git a/gcc/testsuite/gfortran.dg/minmaxloc_11.f90 b/gcc/testsuite/gfortran.dg/minmaxloc_11.f90
new file mode 100644 (file)
index 0000000..1ab8eb1
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-do run }
+program main
+  character(len=3), dimension(2) :: a
+  a(1) = 'aaa'
+  a(2) = 'bbb'
+  if (maxloc(a,dim=1) /= 2) call abort
+  if (minloc(a,dim=1) /= 1) call abort
+
+end program main
diff --git a/gcc/testsuite/gfortran.dg/minmaxloc_9.f90 b/gcc/testsuite/gfortran.dg/minmaxloc_9.f90
new file mode 100644 (file)
index 0000000..badadac
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! Check for a few restrictions on the back argument to
+! minloc and maxloc.
+program main
+  integer, dimension(3) :: a
+  a = [1,2,3]
+  print *,minloc(a,back=42) ! { dg-error "must be LOGICAL" }
+  print *,minloc(a,back=[.true.,.false.]) ! { dg-error "must be a scalar" }
+  print *,maxloc(a,back=42) ! { dg-error "must be LOGICAL" }
+  print *,maxloc(a,back=[.true.,.false.]) ! { dg-error "must be a scalar" }
+end program main
index c6c362870bd88de0791514ffd7d4fdc2bd023451..55b087f22ee3244308a104129b8a2ee016e6a5ae 100644 (file)
@@ -1,3 +1,225 @@
+2018-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/54613
+       * m4/iparm.m4: Add back_arg macro if in minloc or maxloc.
+       * m4/iforeach-s.m4: Add optional argument back with back_arg
+       macro. Improve m4 quoting. If HAVE_BACK_ARG is defined, assert
+       that back is non-true.
+       * m4/iforeach.m4: Likewise.
+       * m4/ifunction-s.m4: Likewise.
+       * m4/ifunction.m4: Likewise.
+       * m4/maxloc0.m4: Include assert.h
+       * m4/minloc0.m4: Likewise.
+       * m4/maxloc0s.m4: #define HAVE_BACK_ARG.
+       * m4/minloc0s.m4: Likewise.
+       * m4/maxloc1s.m4: Likewise.
+       * m4/minloc1s.m4: Likewise.
+       * m4/maxloc1.m4: Include assert.h, #define HAVE_BACK_ARG.
+       * m4/minloc1.m4: Likewise.
+       * m4/maxloc2s.m4: Add assert.h, add back_arg, assert that
+       back is non-true.
+       * m4/minloc2s.m4: Likewise.
+       * generated/iall_i1.c: Regenerated.
+       * generated/iall_i16.c: Regenerated.
+       * generated/iall_i2.c: Regenerated.
+       * generated/iall_i4.c: Regenerated.
+       * generated/iall_i8.c: Regenerated.
+       * generated/iany_i1.c: Regenerated.
+       * generated/iany_i16.c: Regenerated.
+       * generated/iany_i2.c: Regenerated.
+       * generated/iany_i4.c: Regenerated.
+       * generated/iany_i8.c: Regenerated.
+       * generated/iparity_i1.c: Regenerated.
+       * generated/iparity_i16.c: Regenerated.
+       * generated/iparity_i2.c: Regenerated.
+       * generated/iparity_i4.c: Regenerated.
+       * generated/iparity_i8.c: Regenerated.
+       * generated/maxloc0_16_i1.c: Regenerated.
+       * generated/maxloc0_16_i16.c: Regenerated.
+       * generated/maxloc0_16_i2.c: Regenerated.
+       * generated/maxloc0_16_i4.c: Regenerated.
+       * generated/maxloc0_16_i8.c: Regenerated.
+       * generated/maxloc0_16_r10.c: Regenerated.
+       * generated/maxloc0_16_r16.c: Regenerated.
+       * generated/maxloc0_16_r4.c: Regenerated.
+       * generated/maxloc0_16_r8.c: Regenerated.
+       * generated/maxloc0_16_s1.c: Regenerated.
+       * generated/maxloc0_16_s4.c: Regenerated.
+       * generated/maxloc0_4_i1.c: Regenerated.
+       * generated/maxloc0_4_i16.c: Regenerated.
+       * generated/maxloc0_4_i2.c: Regenerated.
+       * generated/maxloc0_4_i4.c: Regenerated.
+       * generated/maxloc0_4_i8.c: Regenerated.
+       * generated/maxloc0_4_r10.c: Regenerated.
+       * generated/maxloc0_4_r16.c: Regenerated.
+       * generated/maxloc0_4_r4.c: Regenerated.
+       * generated/maxloc0_4_r8.c: Regenerated.
+       * generated/maxloc0_4_s1.c: Regenerated.
+       * generated/maxloc0_4_s4.c: Regenerated.
+       * generated/maxloc0_8_i1.c: Regenerated.
+       * generated/maxloc0_8_i16.c: Regenerated.
+       * generated/maxloc0_8_i2.c: Regenerated.
+       * generated/maxloc0_8_i4.c: Regenerated.
+       * generated/maxloc0_8_i8.c: Regenerated.
+       * generated/maxloc0_8_r10.c: Regenerated.
+       * generated/maxloc0_8_r16.c: Regenerated.
+       * generated/maxloc0_8_r4.c: Regenerated.
+       * generated/maxloc0_8_r8.c: Regenerated.
+       * generated/maxloc0_8_s1.c: Regenerated.
+       * generated/maxloc0_8_s4.c: Regenerated.
+       * generated/maxloc1_16_i1.c: Regenerated.
+       * generated/maxloc1_16_i16.c: Regenerated.
+       * generated/maxloc1_16_i2.c: Regenerated.
+       * generated/maxloc1_16_i4.c: Regenerated.
+       * generated/maxloc1_16_i8.c: Regenerated.
+       * generated/maxloc1_16_r10.c: Regenerated.
+       * generated/maxloc1_16_r16.c: Regenerated.
+       * generated/maxloc1_16_r4.c: Regenerated.
+       * generated/maxloc1_16_r8.c: Regenerated.
+       * generated/maxloc1_16_s1.c: Regenerated.
+       * generated/maxloc1_16_s4.c: Regenerated.
+       * generated/maxloc1_4_i1.c: Regenerated.
+       * generated/maxloc1_4_i16.c: Regenerated.
+       * generated/maxloc1_4_i2.c: Regenerated.
+       * generated/maxloc1_4_i4.c: Regenerated.
+       * generated/maxloc1_4_i8.c: Regenerated.
+       * generated/maxloc1_4_r10.c: Regenerated.
+       * generated/maxloc1_4_r16.c: Regenerated.
+       * generated/maxloc1_4_r4.c: Regenerated.
+       * generated/maxloc1_4_r8.c: Regenerated.
+       * generated/maxloc1_4_s1.c: Regenerated.
+       * generated/maxloc1_4_s4.c: Regenerated.
+       * generated/maxloc1_8_i1.c: Regenerated.
+       * generated/maxloc1_8_i16.c: Regenerated.
+       * generated/maxloc1_8_i2.c: Regenerated.
+       * generated/maxloc1_8_i4.c: Regenerated.
+       * generated/maxloc1_8_i8.c: Regenerated.
+       * generated/maxloc1_8_r10.c: Regenerated.
+       * generated/maxloc1_8_r16.c: Regenerated.
+       * generated/maxloc1_8_r4.c: Regenerated.
+       * generated/maxloc1_8_r8.c: Regenerated.
+       * generated/maxloc1_8_s1.c: Regenerated.
+       * generated/maxloc1_8_s4.c: Regenerated.
+       * generated/maxval_i1.c: Regenerated.
+       * generated/maxval_i16.c: Regenerated.
+       * generated/maxval_i2.c: Regenerated.
+       * generated/maxval_i4.c: Regenerated.
+       * generated/maxval_i8.c: Regenerated.
+       * generated/maxval_r10.c: Regenerated.
+       * generated/maxval_r16.c: Regenerated.
+       * generated/maxval_r4.c: Regenerated.
+       * generated/maxval_r8.c: Regenerated.
+       * generated/minloc0_16_i1.c: Regenerated.
+       * generated/minloc0_16_i16.c: Regenerated.
+       * generated/minloc0_16_i2.c: Regenerated.
+       * generated/minloc0_16_i4.c: Regenerated.
+       * generated/minloc0_16_i8.c: Regenerated.
+       * generated/minloc0_16_r10.c: Regenerated.
+       * generated/minloc0_16_r16.c: Regenerated.
+       * generated/minloc0_16_r4.c: Regenerated.
+       * generated/minloc0_16_r8.c: Regenerated.
+       * generated/minloc0_16_s1.c: Regenerated.
+       * generated/minloc0_16_s4.c: Regenerated.
+       * generated/minloc0_4_i1.c: Regenerated.
+       * generated/minloc0_4_i16.c: Regenerated.
+       * generated/minloc0_4_i2.c: Regenerated.
+       * generated/minloc0_4_i4.c: Regenerated.
+       * generated/minloc0_4_i8.c: Regenerated.
+       * generated/minloc0_4_r10.c: Regenerated.
+       * generated/minloc0_4_r16.c: Regenerated.
+       * generated/minloc0_4_r4.c: Regenerated.
+       * generated/minloc0_4_r8.c: Regenerated.
+       * generated/minloc0_4_s1.c: Regenerated.
+       * generated/minloc0_4_s4.c: Regenerated.
+       * generated/minloc0_8_i1.c: Regenerated.
+       * generated/minloc0_8_i16.c: Regenerated.
+       * generated/minloc0_8_i2.c: Regenerated.
+       * generated/minloc0_8_i4.c: Regenerated.
+       * generated/minloc0_8_i8.c: Regenerated.
+       * generated/minloc0_8_r10.c: Regenerated.
+       * generated/minloc0_8_r16.c: Regenerated.
+       * generated/minloc0_8_r4.c: Regenerated.
+       * generated/minloc0_8_r8.c: Regenerated.
+       * generated/minloc0_8_s1.c: Regenerated.
+       * generated/minloc0_8_s4.c: Regenerated.
+       * generated/minloc1_16_i1.c: Regenerated.
+       * generated/minloc1_16_i16.c: Regenerated.
+       * generated/minloc1_16_i2.c: Regenerated.
+       * generated/minloc1_16_i4.c: Regenerated.
+       * generated/minloc1_16_i8.c: Regenerated.
+       * generated/minloc1_16_r10.c: Regenerated.
+       * generated/minloc1_16_r16.c: Regenerated.
+       * generated/minloc1_16_r4.c: Regenerated.
+       * generated/minloc1_16_r8.c: Regenerated.
+       * generated/minloc1_16_s1.c: Regenerated.
+       * generated/minloc1_16_s4.c: Regenerated.
+       * generated/minloc1_4_i1.c: Regenerated.
+       * generated/minloc1_4_i16.c: Regenerated.
+       * generated/minloc1_4_i2.c: Regenerated.
+       * generated/minloc1_4_i4.c: Regenerated.
+       * generated/minloc1_4_i8.c: Regenerated.
+       * generated/minloc1_4_r10.c: Regenerated.
+       * generated/minloc1_4_r16.c: Regenerated.
+       * generated/minloc1_4_r4.c: Regenerated.
+       * generated/minloc1_4_r8.c: Regenerated.
+       * generated/minloc1_4_s1.c: Regenerated.
+       * generated/minloc1_4_s4.c: Regenerated.
+       * generated/minloc1_8_i1.c: Regenerated.
+       * generated/minloc1_8_i16.c: Regenerated.
+       * generated/minloc1_8_i2.c: Regenerated.
+       * generated/minloc1_8_i4.c: Regenerated.
+       * generated/minloc1_8_i8.c: Regenerated.
+       * generated/minloc1_8_r10.c: Regenerated.
+       * generated/minloc1_8_r16.c: Regenerated.
+       * generated/minloc1_8_r4.c: Regenerated.
+       * generated/minloc1_8_r8.c: Regenerated.
+       * generated/minloc1_8_s1.c: Regenerated.
+       * generated/minloc1_8_s4.c: Regenerated.
+       * generated/minval_i1.c: Regenerated.
+       * generated/minval_i16.c: Regenerated.
+       * generated/minval_i2.c: Regenerated.
+       * generated/minval_i4.c: Regenerated.
+       * generated/minval_i8.c: Regenerated.
+       * generated/minval_r10.c: Regenerated.
+       * generated/minval_r16.c: Regenerated.
+       * generated/minval_r4.c: Regenerated.
+       * generated/minval_r8.c: Regenerated.
+       * generated/norm2_r10.c: Regenerated.
+       * generated/norm2_r16.c: Regenerated.
+       * generated/norm2_r4.c: Regenerated.
+       * generated/norm2_r8.c: Regenerated.
+       * generated/parity_l1.c: Regenerated.
+       * generated/parity_l16.c: Regenerated.
+       * generated/parity_l2.c: Regenerated.
+       * generated/parity_l4.c: Regenerated.
+       * generated/parity_l8.c: Regenerated.
+       * generated/product_c10.c: Regenerated.
+       * generated/product_c16.c: Regenerated.
+       * generated/product_c4.c: Regenerated.
+       * generated/product_c8.c: Regenerated.
+       * generated/product_i1.c: Regenerated.
+       * generated/product_i16.c: Regenerated.
+       * generated/product_i2.c: Regenerated.
+       * generated/product_i4.c: Regenerated.
+       * generated/product_i8.c: Regenerated.
+       * generated/product_r10.c: Regenerated.
+       * generated/product_r16.c: Regenerated.
+       * generated/product_r4.c: Regenerated.
+       * generated/product_r8.c: Regenerated.
+       * generated/sum_c10.c: Regenerated.
+       * generated/sum_c16.c: Regenerated.
+       * generated/sum_c4.c: Regenerated.
+       * generated/sum_c8.c: Regenerated.
+       * generated/sum_i1.c: Regenerated.
+       * generated/sum_i16.c: Regenerated.
+       * generated/sum_i2.c: Regenerated.
+       * generated/sum_i4.c: Regenerated.
+       * generated/sum_i8.c: Regenerated.
+       * generated/sum_r10.c: Regenerated.
+       * generated/sum_r16.c: Regenerated.
+       * generated/sum_r4.c: Regenerated.
+       * generated/sum_r8.c: Regenerated.
+
 2018-01-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/83811
index bf13b79104aff5119d11f3e5c2c2edd8aa2058d8..a171ed210530f92a27fcce0b55edf938022d4564 100644 (file)
@@ -51,6 +51,10 @@ iall_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miall_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siall_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iall_i1 (retarray, array, pdim, back);
+#else
       iall_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a3de245b9ec02014d3e62b5d9cdc494f3d995a9e..80c89e828dd835658ae64caed13c1442fd2c8bc4 100644 (file)
@@ -51,6 +51,10 @@ iall_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miall_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siall_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iall_i16 (retarray, array, pdim, back);
+#else
       iall_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index b2b3f05e9a5605778e68bb7fedeab07442a782cf..618b02479b27110e7a412ade4cba30929591c9ba 100644 (file)
@@ -51,6 +51,10 @@ iall_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miall_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siall_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iall_i2 (retarray, array, pdim, back);
+#else
       iall_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 70a43795d8e5958094466c76aef5419eb130c7c9..808e073003d17335d35f9321beb65da0245cf73e 100644 (file)
@@ -51,6 +51,10 @@ iall_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miall_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siall_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iall_i4 (retarray, array, pdim, back);
+#else
       iall_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 77cc4c0931838e72cdfd1c8cb5dd557daeee8fcf..c487b6cacfb21142cc0d782c2842aba13467f8f5 100644 (file)
@@ -51,6 +51,10 @@ iall_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miall_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siall_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iall_i8 (retarray, array, pdim, back);
+#else
       iall_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 9673cb0e2cb267c995d561266365a053e6225e3f..0890eed633ab58099f233ffb7a7cf615bec598f1 100644 (file)
@@ -51,6 +51,10 @@ iany_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miany_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siany_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iany_i1 (retarray, array, pdim, back);
+#else
       iany_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index df60f10f65615d1195b877ff6636cdad3b1b0b4a..126db338d3374bf231f99e8b9184353d1d55d2a7 100644 (file)
@@ -51,6 +51,10 @@ iany_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miany_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siany_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iany_i16 (retarray, array, pdim, back);
+#else
       iany_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 5b0623bdbe97ae1cbc78e08ff0431d8c44431862..3a26b2ced8422945a8dd4ecb36067aba5bba8d1d 100644 (file)
@@ -51,6 +51,10 @@ iany_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miany_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siany_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iany_i2 (retarray, array, pdim, back);
+#else
       iany_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a7effd6db8a0c49189940671d148d11019c6c1ea..8b81d001be104679f9019f587ea219cb6477fba5 100644 (file)
@@ -51,6 +51,10 @@ iany_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miany_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siany_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iany_i4 (retarray, array, pdim, back);
+#else
       iany_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index c87ba7aed4d992fd973ad360d3aa433ee416fa65..9ffc9b6c89ae1d75072264d12f1477f4ea3363bd 100644 (file)
@@ -51,6 +51,10 @@ iany_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miany_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siany_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iany_i8 (retarray, array, pdim, back);
+#else
       iany_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 4315406d7ae8abed13414cf5b0d6c0dd22cfb4c7..b4d4240291c7287c002c07902556a1dc8e577fc0 100644 (file)
@@ -51,6 +51,10 @@ iparity_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miparity_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siparity_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iparity_i1 (retarray, array, pdim, back);
+#else
       iparity_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 8817487bcb0546c726b1f2d6ec2a2103009f43a1..96cb108b0eed4a7d6885f027f92cd880d7797bfb 100644 (file)
@@ -51,6 +51,10 @@ iparity_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miparity_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siparity_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iparity_i16 (retarray, array, pdim, back);
+#else
       iparity_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 0c737038846cb72491a134085e8b049925936760..b077f29c3811f93430a50d1f1ae41293d5bfbfc3 100644 (file)
@@ -51,6 +51,10 @@ iparity_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miparity_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siparity_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iparity_i2 (retarray, array, pdim, back);
+#else
       iparity_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 1f1bfa9a01c1c244415e464b4012e877a080eae8..1b5dfe0397aeaa61ea9926f31079cd5065915fcf 100644 (file)
@@ -51,6 +51,10 @@ iparity_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miparity_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siparity_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iparity_i4 (retarray, array, pdim, back);
+#else
       iparity_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index ad58b5373810447827c5983ad4eef21bbfadb941..056a59bfaeaec633423a3e65b3d619812a8533ae 100644 (file)
@@ -51,6 +51,10 @@ iparity_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ miparity_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ siparity_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      iparity_i8 (retarray, array, pdim, back);
+#else
       iparity_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index aa5ac367a09f41038716fd9ad78a283b5ea63fc3..25398cc79892aacd7aba71a139ca8124e5ab3459 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i1 * const restrict array);
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_i1);
 
 void
 maxloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i1 * const restrict array)
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_i1 (gfc_array_i16 * const restrict, 
-       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_i1);
 
 void
 mmaxloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_i1 (gfc_array_i16 * const restrict, 
-       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_i1);
 
 void
 smaxloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_i1 (retarray, array);
+      maxloc0_16_i1 (retarray, array, back);
       return;
     }
 
index f648402d1a1fae76a5ab3bfbf596a2df8a438a93..3a4a7446274c8975c4f5a9d722cdff6148775958 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i16 * const restrict array);
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_i16);
 
 void
 maxloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i16 * const restrict array)
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_i16 (gfc_array_i16 * const restrict, 
-       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_i16);
 
 void
 mmaxloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_i16 (gfc_array_i16 * const restrict, 
-       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_i16);
 
 void
 smaxloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_i16 (retarray, array);
+      maxloc0_16_i16 (retarray, array, back);
       return;
     }
 
index 825eb74d80cad045b26b774b3fdd101e007b8d25..0ff8ca0b183ba81cf391b96357ac374891cf308c 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i2 * const restrict array);
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_i2);
 
 void
 maxloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i2 * const restrict array)
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_i2 (gfc_array_i16 * const restrict, 
-       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_i2);
 
 void
 mmaxloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_i2 (gfc_array_i16 * const restrict, 
-       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_i2);
 
 void
 smaxloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_i2 (retarray, array);
+      maxloc0_16_i2 (retarray, array, back);
       return;
     }
 
index 0720609ccd37621f3feb6a47ade1c6d42d2f8be8..84cff67ea087252d595be140232f645a48bc5759 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i4 * const restrict array);
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_i4);
 
 void
 maxloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i4 * const restrict array)
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_i4 (gfc_array_i16 * const restrict, 
-       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_i4);
 
 void
 mmaxloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_i4 (gfc_array_i16 * const restrict, 
-       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_i4);
 
 void
 smaxloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_i4 (retarray, array);
+      maxloc0_16_i4 (retarray, array, back);
       return;
     }
 
index f5318e9caecd6460ba396f6b074eac06ec2ee5f3..e276295027b1713305894eb36d5d5a06dcdd04a3 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i8 * const restrict array);
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_i8);
 
 void
 maxloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i8 * const restrict array)
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_i8 (gfc_array_i16 * const restrict, 
-       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_i8);
 
 void
 mmaxloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_i8 (gfc_array_i16 * const restrict, 
-       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_i8);
 
 void
 smaxloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_i8 (retarray, array);
+      maxloc0_16_i8 (retarray, array, back);
       return;
     }
 
index 1641b3af8cee01d834aec5375e92261c8f30625f..384487fadeb13f588ea3c9bda59d556fd639ba3e 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r10 * const restrict array);
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_r10);
 
 void
 maxloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r10 * const restrict array)
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_r10 (gfc_array_i16 * const restrict, 
-       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_r10);
 
 void
 mmaxloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_r10 (gfc_array_i16 * const restrict, 
-       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_r10);
 
 void
 smaxloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_r10 (retarray, array);
+      maxloc0_16_r10 (retarray, array, back);
       return;
     }
 
index c5409fd8ed32356ff12fa98e433dbd271201a0f5..10c7673f73c10f1b52ceff58489823b973073fa6 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r16 * const restrict array);
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_r16);
 
 void
 maxloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r16 * const restrict array)
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_r16 (gfc_array_i16 * const restrict, 
-       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_r16);
 
 void
 mmaxloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_r16 (gfc_array_i16 * const restrict, 
-       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_r16);
 
 void
 smaxloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_r16 (retarray, array);
+      maxloc0_16_r16 (retarray, array, back);
       return;
     }
 
index 1d076a1688ba7b3da081a9f37eb78674a512aa45..b7aaa3d5cefd77ad43ea8c54a55e6286a856d137 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r4 * const restrict array);
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_r4);
 
 void
 maxloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r4 * const restrict array)
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_r4 (gfc_array_i16 * const restrict, 
-       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_r4);
 
 void
 mmaxloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_r4 (gfc_array_i16 * const restrict, 
-       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_r4);
 
 void
 smaxloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_r4 (retarray, array);
+      maxloc0_16_r4 (retarray, array, back);
       return;
     }
 
index 2cb175b33199806b87c0f05c9726bd57b8bbc51b..2ca3479d3f9ffe8e6e193e540c464055228fbaf0 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void maxloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r8 * const restrict array);
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_16_r8);
 
 void
 maxloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r8 * const restrict array)
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_r8 (gfc_array_i16 * const restrict, 
-       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_16_r8);
 
 void
 mmaxloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_r8 (gfc_array_i16 * const restrict, 
-       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_16_r8);
 
 void
 smaxloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_16_r8 (retarray, array);
+      maxloc0_16_r8 (retarray, array, back);
       return;
     }
 
index 424237cca7257179cdcf33d2c160e30e82516dc6..a05d17893e3f03cca001272b1c83067bc1058333 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void maxloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len);
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(maxloc0_16_s1);
 
 void
 maxloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len)
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ maxloc0_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ maxloc0_16_s1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_s1 (gfc_array_i16 * const restrict, 
-       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mmaxloc0_16_s1);
 
 void
 mmaxloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mmaxloc0_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mmaxloc0_16_s1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_s1 (gfc_array_i16 * const restrict, 
-       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(smaxloc0_16_s1);
 
 void
 smaxloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ smaxloc0_16_s1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      maxloc0_16_s1 (retarray, array, back, len);
+#else
       maxloc0_16_s1 (retarray, array, len);
+#endif
       return;
     }
 
index e0c236a400843a76e6c87a305206dc29b492343a..f6adf95c356e1f8fd2af8c990eeaf04974694bb9 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void maxloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len);
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(maxloc0_16_s4);
 
 void
 maxloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len)
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ maxloc0_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ maxloc0_16_s4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mmaxloc0_16_s4 (gfc_array_i16 * const restrict, 
-       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mmaxloc0_16_s4);
 
 void
 mmaxloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mmaxloc0_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mmaxloc0_16_s4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void smaxloc0_16_s4 (gfc_array_i16 * const restrict, 
-       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(smaxloc0_16_s4);
 
 void
 smaxloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ smaxloc0_16_s4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      maxloc0_16_s4 (retarray, array, back, len);
+#else
       maxloc0_16_s4 (retarray, array, len);
+#endif
       return;
     }
 
index 137e852d8609f8092169cc32b9494e7b550ab872..dc31e1d4b6584a7b5712a69fbdff06e90f3ac75f 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i1 * const restrict array);
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_i1);
 
 void
 maxloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i1 * const restrict array)
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_i1 (gfc_array_i4 * const restrict, 
-       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_i1);
 
 void
 mmaxloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_i1 (gfc_array_i4 * const restrict, 
-       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_i1);
 
 void
 smaxloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_i1 (retarray, array);
+      maxloc0_4_i1 (retarray, array, back);
       return;
     }
 
index 880e3cac2d6f56a691ebe81904ffe3a1993384ff..f7226001282c9346f791ae5a0a8866cc6597b721 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i16 * const restrict array);
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_i16);
 
 void
 maxloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i16 * const restrict array)
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_i16 (gfc_array_i4 * const restrict, 
-       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_i16);
 
 void
 mmaxloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_i16 (gfc_array_i4 * const restrict, 
-       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_i16);
 
 void
 smaxloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_i16 (retarray, array);
+      maxloc0_4_i16 (retarray, array, back);
       return;
     }
 
index 98197ecf410770ef7516cf148db26a43b42f6e62..f78e20ec405a0e6f38035484279c71a17bc2c742 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i2 * const restrict array);
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_i2);
 
 void
 maxloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i2 * const restrict array)
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_i2 (gfc_array_i4 * const restrict, 
-       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_i2);
 
 void
 mmaxloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_i2 (gfc_array_i4 * const restrict, 
-       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_i2);
 
 void
 smaxloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_i2 (retarray, array);
+      maxloc0_4_i2 (retarray, array, back);
       return;
     }
 
index cc6ad848ec79c3a2b22980728da557086d241489..58c3cf1d4b48cad048822ac4ebe1d25d1cc1e08f 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i4 * const restrict array);
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_i4);
 
 void
 maxloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i4 * const restrict array)
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_i4 (gfc_array_i4 * const restrict, 
-       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_i4);
 
 void
 mmaxloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_i4 (gfc_array_i4 * const restrict, 
-       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_i4);
 
 void
 smaxloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_i4 (retarray, array);
+      maxloc0_4_i4 (retarray, array, back);
       return;
     }
 
index 802f935ae55a8b62bd3c1b69e64fa1537ae11cc8..ded9b5bcadea6b6e5d17e1b1ed2ae0698457e24b 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i8 * const restrict array);
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_i8);
 
 void
 maxloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i8 * const restrict array)
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_i8 (gfc_array_i4 * const restrict, 
-       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_i8);
 
 void
 mmaxloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_i8 (gfc_array_i4 * const restrict, 
-       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_i8);
 
 void
 smaxloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_i8 (retarray, array);
+      maxloc0_4_i8 (retarray, array, back);
       return;
     }
 
index 1222096700aa14df0a28fd035244980fbd38d635..c64bd532380a61b0a77d1e49ac080801eae2869e 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r10 * const restrict array);
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_r10);
 
 void
 maxloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r10 * const restrict array)
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_r10 (gfc_array_i4 * const restrict, 
-       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_r10);
 
 void
 mmaxloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_r10 (gfc_array_i4 * const restrict, 
-       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_r10);
 
 void
 smaxloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_r10 (retarray, array);
+      maxloc0_4_r10 (retarray, array, back);
       return;
     }
 
index deaca72c5a2387429a9447331f9b4180fcf4ad5f..4fd46a3371bcd9eca7d2f31ad59eb839dbd2762d 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r16 * const restrict array);
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_r16);
 
 void
 maxloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r16 * const restrict array)
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_r16 (gfc_array_i4 * const restrict, 
-       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_r16);
 
 void
 mmaxloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_r16 (gfc_array_i4 * const restrict, 
-       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_r16);
 
 void
 smaxloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_r16 (retarray, array);
+      maxloc0_4_r16 (retarray, array, back);
       return;
     }
 
index aa7fca0a9d7799e7df0e0494e7de74c607bbb85e..c168aee4d57e7c3a68f91682a27372d4174e0721 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r4 * const restrict array);
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_r4);
 
 void
 maxloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r4 * const restrict array)
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_r4 (gfc_array_i4 * const restrict, 
-       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_r4);
 
 void
 mmaxloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_r4 (gfc_array_i4 * const restrict, 
-       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_r4);
 
 void
 smaxloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_r4 (retarray, array);
+      maxloc0_4_r4 (retarray, array, back);
       return;
     }
 
index ba0659d7b4d3d80bafe93d1858b0939d318a8987..655a6527304f56f62a7706ff596c1fe9e9075be5 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void maxloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r8 * const restrict array);
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_4_r8);
 
 void
 maxloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r8 * const restrict array)
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_r8 (gfc_array_i4 * const restrict, 
-       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_4_r8);
 
 void
 mmaxloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_r8 (gfc_array_i4 * const restrict, 
-       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_4_r8);
 
 void
 smaxloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_4_r8 (retarray, array);
+      maxloc0_4_r8 (retarray, array, back);
       return;
     }
 
index 80759a661d2cb2d03851ff388996bd6b23b58e09..b13a9b94146d709ca0e89b7197ba8a7a34aaf20c 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void maxloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len);
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(maxloc0_4_s1);
 
 void
 maxloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len)
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ maxloc0_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ maxloc0_4_s1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_s1 (gfc_array_i4 * const restrict, 
-       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mmaxloc0_4_s1);
 
 void
 mmaxloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mmaxloc0_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mmaxloc0_4_s1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_s1 (gfc_array_i4 * const restrict, 
-       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(smaxloc0_4_s1);
 
 void
 smaxloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ smaxloc0_4_s1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      maxloc0_4_s1 (retarray, array, back, len);
+#else
       maxloc0_4_s1 (retarray, array, len);
+#endif
       return;
     }
 
index 75eeaeed5a35ee6a96f4105b74b9f561fee48784..971e8680804af5d5d377364cd1808db0a12b3f5a 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void maxloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len);
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(maxloc0_4_s4);
 
 void
 maxloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len)
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ maxloc0_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ maxloc0_4_s4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mmaxloc0_4_s4 (gfc_array_i4 * const restrict, 
-       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mmaxloc0_4_s4);
 
 void
 mmaxloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mmaxloc0_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mmaxloc0_4_s4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void smaxloc0_4_s4 (gfc_array_i4 * const restrict, 
-       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(smaxloc0_4_s4);
 
 void
 smaxloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ smaxloc0_4_s4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      maxloc0_4_s4 (retarray, array, back, len);
+#else
       maxloc0_4_s4 (retarray, array, len);
+#endif
       return;
     }
 
index dd07066f81a14af4289bbd78ba91311881966f89..b86f0cb294670734c847d2eecd6927ce5c60c85c 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i1 * const restrict array);
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_i1);
 
 void
 maxloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i1 * const restrict array)
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_i1 (gfc_array_i8 * const restrict, 
-       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_i1);
 
 void
 mmaxloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_i1 (gfc_array_i8 * const restrict, 
-       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_i1);
 
 void
 smaxloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_i1 (retarray, array);
+      maxloc0_8_i1 (retarray, array, back);
       return;
     }
 
index 44ab70c382937f62a2dd1a129d6ceefa81d44933..710d26097b6e6c100a441ecb5ba2bc7422e81d44 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i16 * const restrict array);
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_i16);
 
 void
 maxloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i16 * const restrict array)
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_i16 (gfc_array_i8 * const restrict, 
-       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_i16);
 
 void
 mmaxloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_i16 (gfc_array_i8 * const restrict, 
-       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_i16);
 
 void
 smaxloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_i16 (retarray, array);
+      maxloc0_8_i16 (retarray, array, back);
       return;
     }
 
index 6dfd0d86321e85fb3566eef3d7e66c603686acc4..e85fb07ab4bb4cec636172faa8223f56f93fb4bb 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i2 * const restrict array);
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_i2);
 
 void
 maxloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i2 * const restrict array)
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_i2 (gfc_array_i8 * const restrict, 
-       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_i2);
 
 void
 mmaxloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_i2 (gfc_array_i8 * const restrict, 
-       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_i2);
 
 void
 smaxloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_i2 (retarray, array);
+      maxloc0_8_i2 (retarray, array, back);
       return;
     }
 
index 01b18c394f399db8dc00fd0d2350163e567ff228..bb6d51ee69aa48dcae018c4ead74059d5266bceb 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i4 * const restrict array);
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_i4);
 
 void
 maxloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i4 * const restrict array)
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_i4 (gfc_array_i8 * const restrict, 
-       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_i4);
 
 void
 mmaxloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_i4 (gfc_array_i8 * const restrict, 
-       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_i4);
 
 void
 smaxloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_i4 (retarray, array);
+      maxloc0_8_i4 (retarray, array, back);
       return;
     }
 
index df7544f9ac64d1c3f2e384a298bfc62bc519f7ee..d6c6e850ed497d71b6c2dba50949b13bac702cb6 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i8 * const restrict array);
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_i8);
 
 void
 maxloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i8 * const restrict array)
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_i8 (gfc_array_i8 * const restrict, 
-       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_i8);
 
 void
 mmaxloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_i8 (gfc_array_i8 * const restrict, 
-       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_i8);
 
 void
 smaxloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_i8 (retarray, array);
+      maxloc0_8_i8 (retarray, array, back);
       return;
     }
 
index 3047b1e239074f3856b687860ae5bd4402736fee..333e57095fdc7f551b26bd25483c27938a2b5152 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r10 * const restrict array);
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_r10);
 
 void
 maxloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r10 * const restrict array)
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_r10 (gfc_array_i8 * const restrict, 
-       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_r10);
 
 void
 mmaxloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_r10 (gfc_array_i8 * const restrict, 
-       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_r10);
 
 void
 smaxloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_r10 (retarray, array);
+      maxloc0_8_r10 (retarray, array, back);
       return;
     }
 
index baf000cdbaacb2ab61461bfde32db7dcb2bf5654..ebb3118864d29155931378d78cfc29e7edfa8b52 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r16 * const restrict array);
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_r16);
 
 void
 maxloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r16 * const restrict array)
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_r16 (gfc_array_i8 * const restrict, 
-       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_r16);
 
 void
 mmaxloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_r16 (gfc_array_i8 * const restrict, 
-       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_r16);
 
 void
 smaxloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_r16 (retarray, array);
+      maxloc0_8_r16 (retarray, array, back);
       return;
     }
 
index 48fa4240b4b8382905d0ce2130fd795dabf15e72..afc46960059c26b5a843aff6539098f3db5b3b1e 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r4 * const restrict array);
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_r4);
 
 void
 maxloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r4 * const restrict array)
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_r4 (gfc_array_i8 * const restrict, 
-       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_r4);
 
 void
 mmaxloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_r4 (gfc_array_i8 * const restrict, 
-       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_r4);
 
 void
 smaxloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_r4 (retarray, array);
+      maxloc0_8_r4 (retarray, array, back);
       return;
     }
 
index 37a25ef38656771626860809a23fc6b29105d760..e6a2feffa97d692aacf38b1641e703df8feb4104 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void maxloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r8 * const restrict array);
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4);
 export_proto(maxloc0_8_r8);
 
 void
 maxloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r8 * const restrict array)
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ maxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ maxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_r8 (gfc_array_i8 * const restrict, 
-       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mmaxloc0_8_r8);
 
 void
 mmaxloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mmaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mmaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_r8 (gfc_array_i8 * const restrict, 
-       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(smaxloc0_8_r8);
 
 void
 smaxloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ smaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      maxloc0_8_r8 (retarray, array);
+      maxloc0_8_r8 (retarray, array, back);
       return;
     }
 
index 1c86ff4974b0dcb972227dcc9600b10f01a623b2..2e95fa35d1c56e0f095ff143a0359b743a460020 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void maxloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len);
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(maxloc0_8_s1);
 
 void
 maxloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len)
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ maxloc0_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ maxloc0_8_s1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_s1 (gfc_array_i8 * const restrict, 
-       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mmaxloc0_8_s1);
 
 void
 mmaxloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mmaxloc0_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mmaxloc0_8_s1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_s1 (gfc_array_i8 * const restrict, 
-       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(smaxloc0_8_s1);
 
 void
 smaxloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ smaxloc0_8_s1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      maxloc0_8_s1 (retarray, array, back, len);
+#else
       maxloc0_8_s1 (retarray, array, len);
+#endif
       return;
     }
 
index 14f4658ba13322097a81ca5b64ed786fce1a9efc..5cc1f11fb852fd86172447a7d4c6a7fab8ac7e3a 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void maxloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len);
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(maxloc0_8_s4);
 
 void
 maxloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len)
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ maxloc0_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ maxloc0_8_s4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mmaxloc0_8_s4 (gfc_array_i8 * const restrict, 
-       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mmaxloc0_8_s4);
 
 void
 mmaxloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mmaxloc0_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mmaxloc0_8_s4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void smaxloc0_8_s4 (gfc_array_i8 * const restrict, 
-       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(smaxloc0_8_s4);
 
 void
 smaxloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ smaxloc0_8_s4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      maxloc0_8_s4 (retarray, array, back, len);
+#else
       maxloc0_8_s4 (retarray, array, len);
+#endif
       return;
     }
 
index d1d1d5e3a9665c9f36b1d413850d544a4b92e5db..ff2124d280322edafa1769dd270a12c7ffef970f 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_i1 (gfc_array_i16 * const restrict, 
-       gfc_array_i1 * const restrict, const index_type * const restrict);
+       gfc_array_i1 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_i1);
 
 void
 maxloc1_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_i1 (gfc_array_i16 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_i1);
 
 void
 mmaxloc1_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_i1 (gfc_array_i16 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_i1);
 
 void
 smaxloc1_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_i1 (retarray, array, pdim, back);
+#else
       maxloc1_16_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 27aa37d7c83b19382c7f9a8ce4b6c920c719c19c..2b0bd54ba8ac3e91186f8495e0f3454aec5e3af0 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_i16 (gfc_array_i16 * const restrict, 
-       gfc_array_i16 * const restrict, const index_type * const restrict);
+       gfc_array_i16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_i16);
 
 void
 maxloc1_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_i16 (gfc_array_i16 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_i16);
 
 void
 mmaxloc1_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_i16 (gfc_array_i16 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_i16);
 
 void
 smaxloc1_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_i16 (retarray, array, pdim, back);
+#else
       maxloc1_16_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a79088d1e9c9dff15f11d70e758afd0cc841e6ca..26c3f142b9f6837b1074574011b8b4aa097fc26f 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_i2 (gfc_array_i16 * const restrict, 
-       gfc_array_i2 * const restrict, const index_type * const restrict);
+       gfc_array_i2 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_i2);
 
 void
 maxloc1_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_i2 (gfc_array_i16 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_i2);
 
 void
 mmaxloc1_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_i2 (gfc_array_i16 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_i2);
 
 void
 smaxloc1_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_i2 (retarray, array, pdim, back);
+#else
       maxloc1_16_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 852677de16617cdc2fc2b8aa23daa728ad6eee3e..aedc22a1cfd9a02dd7d70f63a777dead45a15ef7 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_i4 (gfc_array_i16 * const restrict, 
-       gfc_array_i4 * const restrict, const index_type * const restrict);
+       gfc_array_i4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_i4);
 
 void
 maxloc1_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_i4 (gfc_array_i16 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_i4);
 
 void
 mmaxloc1_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_i4 (gfc_array_i16 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_i4);
 
 void
 smaxloc1_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_i4 (retarray, array, pdim, back);
+#else
       maxloc1_16_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 4cdc1a7a6cc018d32a4cdce9f1d32d94247e193e..d08561d4aff1acdadf619510d63b5d97a0476150 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_i8 (gfc_array_i16 * const restrict, 
-       gfc_array_i8 * const restrict, const index_type * const restrict);
+       gfc_array_i8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_i8);
 
 void
 maxloc1_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_i8 (gfc_array_i16 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_i8);
 
 void
 mmaxloc1_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_i8 (gfc_array_i16 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_i8);
 
 void
 smaxloc1_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_i8 (retarray, array, pdim, back);
+#else
       maxloc1_16_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index f3f9890ae46bc0165eaae7840c05abb5b4183bb5..a5929ee47e4851af246f44745d0e506d02c50c1e 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_r10 (gfc_array_i16 * const restrict, 
-       gfc_array_r10 * const restrict, const index_type * const restrict);
+       gfc_array_r10 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_r10);
 
 void
 maxloc1_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_r10 (gfc_array_i16 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_r10);
 
 void
 mmaxloc1_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_r10 (gfc_array_i16 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_r10);
 
 void
 smaxloc1_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_r10 (retarray, array, pdim, back);
+#else
       maxloc1_16_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 6bbef795c6ec74f22299cf11dcedb99185d931ac..09da74031d153f0fd8d9bc6208927e9e2e4c7468 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_r16 (gfc_array_i16 * const restrict, 
-       gfc_array_r16 * const restrict, const index_type * const restrict);
+       gfc_array_r16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_r16);
 
 void
 maxloc1_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_r16 (gfc_array_i16 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_r16);
 
 void
 mmaxloc1_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_r16 (gfc_array_i16 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_r16);
 
 void
 smaxloc1_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_r16 (retarray, array, pdim, back);
+#else
       maxloc1_16_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 98019899d0a9ac612c039047a219027843f9f247..927830008e2e05415cc03a2da667c019c2e7e68e 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_r4 (gfc_array_i16 * const restrict, 
-       gfc_array_r4 * const restrict, const index_type * const restrict);
+       gfc_array_r4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_r4);
 
 void
 maxloc1_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_r4 (gfc_array_i16 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_r4);
 
 void
 mmaxloc1_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_r4 (gfc_array_i16 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_r4);
 
 void
 smaxloc1_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_r4 (retarray, array, pdim, back);
+#else
       maxloc1_16_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 86cffb931a26f9b926d4db71958385c6924a571e..84c0c650641ac234bdfcfa92efae48721323372b 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_16_r8 (gfc_array_i16 * const restrict, 
-       gfc_array_r8 * const restrict, const index_type * const restrict);
+       gfc_array_r8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_16_r8);
 
 void
 maxloc1_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_r8 (gfc_array_i16 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_16_r8);
 
 void
 mmaxloc1_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_r8 (gfc_array_i16 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_16_r8);
 
 void
 smaxloc1_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_r8 (retarray, array, pdim, back);
+#else
       maxloc1_16_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 16be61177319a27e4b512f22e10e9d5d54b286ee..84b12f3e26ce63a1010771a3eb3f62314f2e3427 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void maxloc1_16_s1 (gfc_array_i16 * const restrict, 
-       gfc_array_s1 * const restrict, const index_type * const restrict,
+       gfc_array_s1 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc1_16_s1);
 
 void
 maxloc1_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ maxloc1_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ maxloc1_16_s1 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_s1 (gfc_array_i16 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mmaxloc1_16_s1);
 
 void
 mmaxloc1_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mmaxloc1_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mmaxloc1_16_s1 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_s1 (gfc_array_i16 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc1_16_s1);
 
 void
 smaxloc1_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ smaxloc1_16_s1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_s1 (retarray, array, pdim, back, string_len);
+#else
       maxloc1_16_s1 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 09bbb992dce6ed2cd4aae220b054f0b363f86d5d..70696f2ac3f5765ab99639f5ebb83545f034255c 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void maxloc1_16_s4 (gfc_array_i16 * const restrict, 
-       gfc_array_s4 * const restrict, const index_type * const restrict,
+       gfc_array_s4 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc1_16_s4);
 
 void
 maxloc1_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ maxloc1_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ maxloc1_16_s4 (gfc_array_i16 * const restrict retarray,
 
 extern void mmaxloc1_16_s4 (gfc_array_i16 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mmaxloc1_16_s4);
 
 void
 mmaxloc1_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mmaxloc1_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mmaxloc1_16_s4 (gfc_array_i16 * const restrict retarray,
 
 extern void smaxloc1_16_s4 (gfc_array_i16 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc1_16_s4);
 
 void
 smaxloc1_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ smaxloc1_16_s4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_16_s4 (retarray, array, pdim, back, string_len);
+#else
       maxloc1_16_s4 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 364d09e73fd559001db7d607e032b915a0c3cb8c..7fc1f88c2d9da1c40fd2ae7bd7d46cb2cba7dc48 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_i1 (gfc_array_i4 * const restrict, 
-       gfc_array_i1 * const restrict, const index_type * const restrict);
+       gfc_array_i1 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_i1);
 
 void
 maxloc1_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_i1 (gfc_array_i4 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_i1);
 
 void
 mmaxloc1_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_i1 (gfc_array_i4 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_i1);
 
 void
 smaxloc1_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_i1 (retarray, array, pdim, back);
+#else
       maxloc1_4_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e05a9ace697e0fc807e4e8ce69d7faa563854750..14b5e5578b8b11e7bcba910079f44237a25e97e2 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_i16 (gfc_array_i4 * const restrict, 
-       gfc_array_i16 * const restrict, const index_type * const restrict);
+       gfc_array_i16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_i16);
 
 void
 maxloc1_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_i16 (gfc_array_i4 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_i16);
 
 void
 mmaxloc1_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_i16 (gfc_array_i4 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_i16);
 
 void
 smaxloc1_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_i16 (retarray, array, pdim, back);
+#else
       maxloc1_4_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 38879170d9b4b73db742f850e4f359c9f0001427..9d5a98ed341228f53fe6d8185e1dbf9d6615f76e 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_i2 (gfc_array_i4 * const restrict, 
-       gfc_array_i2 * const restrict, const index_type * const restrict);
+       gfc_array_i2 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_i2);
 
 void
 maxloc1_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_i2 (gfc_array_i4 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_i2);
 
 void
 mmaxloc1_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_i2 (gfc_array_i4 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_i2);
 
 void
 smaxloc1_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_i2 (retarray, array, pdim, back);
+#else
       maxloc1_4_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index bc8a7fd31d80a2b88a995301f68685a2de7c487f..23d702850f435208879e830f7af2b315ff7edba2 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_i4 (gfc_array_i4 * const restrict, 
-       gfc_array_i4 * const restrict, const index_type * const restrict);
+       gfc_array_i4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_i4);
 
 void
 maxloc1_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_i4 (gfc_array_i4 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_i4);
 
 void
 mmaxloc1_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_i4 (gfc_array_i4 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_i4);
 
 void
 smaxloc1_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_i4 (retarray, array, pdim, back);
+#else
       maxloc1_4_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e1d2aee527700488706a06c03d5f19017f65b530..178a20aa2ff576d4ffc7fddeb59c6a58efd24ea7 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_i8 (gfc_array_i4 * const restrict, 
-       gfc_array_i8 * const restrict, const index_type * const restrict);
+       gfc_array_i8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_i8);
 
 void
 maxloc1_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_i8 (gfc_array_i4 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_i8);
 
 void
 mmaxloc1_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_i8 (gfc_array_i4 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_i8);
 
 void
 smaxloc1_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_i8 (retarray, array, pdim, back);
+#else
       maxloc1_4_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 03d55cce21b20bc8298ae71b1228359e6acc91ae..f35961338bfcd38621ca6b14c364b6ae9539018c 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_r10 (gfc_array_i4 * const restrict, 
-       gfc_array_r10 * const restrict, const index_type * const restrict);
+       gfc_array_r10 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_r10);
 
 void
 maxloc1_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_r10 (gfc_array_i4 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_r10);
 
 void
 mmaxloc1_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_r10 (gfc_array_i4 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_r10);
 
 void
 smaxloc1_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_r10 (retarray, array, pdim, back);
+#else
       maxloc1_4_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 1d86824bf78ff1738d5259fd60ba30ff396d81d5..a0f283e7cecf11310270e55ced18ef87daaa6840 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_r16 (gfc_array_i4 * const restrict, 
-       gfc_array_r16 * const restrict, const index_type * const restrict);
+       gfc_array_r16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_r16);
 
 void
 maxloc1_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_r16 (gfc_array_i4 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_r16);
 
 void
 mmaxloc1_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_r16 (gfc_array_i4 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_r16);
 
 void
 smaxloc1_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_r16 (retarray, array, pdim, back);
+#else
       maxloc1_4_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 8dcae97b3ed3877ae7397a944b66c24c7d3cbf5c..aeb4b8f106862bd19af89ba5b06f51b0dcfe3f3d 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_r4 (gfc_array_i4 * const restrict, 
-       gfc_array_r4 * const restrict, const index_type * const restrict);
+       gfc_array_r4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_r4);
 
 void
 maxloc1_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_r4 (gfc_array_i4 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_r4);
 
 void
 mmaxloc1_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_r4 (gfc_array_i4 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_r4);
 
 void
 smaxloc1_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_r4 (retarray, array, pdim, back);
+#else
       maxloc1_4_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 9c0f5b158af46eb108e81924a026a0e517e4b712..43852049c9cd9a44b6fa8e11e9d110fb8008b55c 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_4_r8 (gfc_array_i4 * const restrict, 
-       gfc_array_r8 * const restrict, const index_type * const restrict);
+       gfc_array_r8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_4_r8);
 
 void
 maxloc1_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_r8 (gfc_array_i4 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_4_r8);
 
 void
 mmaxloc1_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_r8 (gfc_array_i4 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_4_r8);
 
 void
 smaxloc1_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_r8 (retarray, array, pdim, back);
+#else
       maxloc1_4_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a882a7be43677cccc869312cd14bf0c8cebf006b..b7b7d8cfe935e2b0a449ebad39d827d1010580fe 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void maxloc1_4_s1 (gfc_array_i4 * const restrict, 
-       gfc_array_s1 * const restrict, const index_type * const restrict,
+       gfc_array_s1 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc1_4_s1);
 
 void
 maxloc1_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ maxloc1_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ maxloc1_4_s1 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_s1 (gfc_array_i4 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mmaxloc1_4_s1);
 
 void
 mmaxloc1_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mmaxloc1_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mmaxloc1_4_s1 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_s1 (gfc_array_i4 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc1_4_s1);
 
 void
 smaxloc1_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ smaxloc1_4_s1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_s1 (retarray, array, pdim, back, string_len);
+#else
       maxloc1_4_s1 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index acc989ce1abf7dbf086bfa0af539d1ef9e92dbba..da7594993d19f4fd80611f0de0c7605b8152b4a9 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void maxloc1_4_s4 (gfc_array_i4 * const restrict, 
-       gfc_array_s4 * const restrict, const index_type * const restrict,
+       gfc_array_s4 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc1_4_s4);
 
 void
 maxloc1_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ maxloc1_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ maxloc1_4_s4 (gfc_array_i4 * const restrict retarray,
 
 extern void mmaxloc1_4_s4 (gfc_array_i4 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mmaxloc1_4_s4);
 
 void
 mmaxloc1_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mmaxloc1_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mmaxloc1_4_s4 (gfc_array_i4 * const restrict retarray,
 
 extern void smaxloc1_4_s4 (gfc_array_i4 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc1_4_s4);
 
 void
 smaxloc1_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ smaxloc1_4_s4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_4_s4 (retarray, array, pdim, back, string_len);
+#else
       maxloc1_4_s4 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 8087789597159246025f085938fa65eb182ef7a2..fa5bc4aadfd347cb3afb3b76676898a2dc9350da 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_i1 (gfc_array_i8 * const restrict, 
-       gfc_array_i1 * const restrict, const index_type * const restrict);
+       gfc_array_i1 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_i1);
 
 void
 maxloc1_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_i1 (gfc_array_i8 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_i1);
 
 void
 mmaxloc1_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_i1 (gfc_array_i8 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_i1);
 
 void
 smaxloc1_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_i1 (retarray, array, pdim, back);
+#else
       maxloc1_8_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 71ad13c68bd92e5c8e960b0420d75a67316f8467..2cf75312ece95e53d93b9047f518e48daa39d3d2 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_i16 (gfc_array_i8 * const restrict, 
-       gfc_array_i16 * const restrict, const index_type * const restrict);
+       gfc_array_i16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_i16);
 
 void
 maxloc1_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_i16 (gfc_array_i8 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_i16);
 
 void
 mmaxloc1_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_i16 (gfc_array_i8 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_i16);
 
 void
 smaxloc1_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_i16 (retarray, array, pdim, back);
+#else
       maxloc1_8_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index d89b74f4c1418f2ae919f59c202cfbcebbc5875d..e32eafe2f057f1062323aa656528c0be003eef0e 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_i2 (gfc_array_i8 * const restrict, 
-       gfc_array_i2 * const restrict, const index_type * const restrict);
+       gfc_array_i2 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_i2);
 
 void
 maxloc1_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_i2 (gfc_array_i8 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_i2);
 
 void
 mmaxloc1_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_i2 (gfc_array_i8 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_i2);
 
 void
 smaxloc1_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_i2 (retarray, array, pdim, back);
+#else
       maxloc1_8_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index df4b218e9fb6f145fe91c66cd75c0f2e5cc69677..e348550787e8f7c221f634a1a9cca121db6d25d8 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_i4 (gfc_array_i8 * const restrict, 
-       gfc_array_i4 * const restrict, const index_type * const restrict);
+       gfc_array_i4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_i4);
 
 void
 maxloc1_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_i4 (gfc_array_i8 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_i4);
 
 void
 mmaxloc1_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_i4 (gfc_array_i8 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_i4);
 
 void
 smaxloc1_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_i4 (retarray, array, pdim, back);
+#else
       maxloc1_8_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 946e4ca3645164943ef71ba452709f043469af2d..802b74d94612866eb44b58c5ecb550a768f040d1 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_i8 (gfc_array_i8 * const restrict, 
-       gfc_array_i8 * const restrict, const index_type * const restrict);
+       gfc_array_i8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_i8);
 
 void
 maxloc1_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_i8 (gfc_array_i8 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_i8);
 
 void
 mmaxloc1_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_i8 (gfc_array_i8 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_i8);
 
 void
 smaxloc1_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_i8 (retarray, array, pdim, back);
+#else
       maxloc1_8_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a7db332441d11e4aba7b98b9a47eb2038892fe8a..bc5f1b1af2c0496fe8656d5d83db00ee68199bb1 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_r10 (gfc_array_i8 * const restrict, 
-       gfc_array_r10 * const restrict, const index_type * const restrict);
+       gfc_array_r10 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_r10);
 
 void
 maxloc1_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_r10 (gfc_array_i8 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_r10);
 
 void
 mmaxloc1_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_r10 (gfc_array_i8 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_r10);
 
 void
 smaxloc1_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_r10 (retarray, array, pdim, back);
+#else
       maxloc1_8_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e118f12f820c3c8254e1447e70d261041730c366..54d12030c11345d6d50d3e54df6576be51043065 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_r16 (gfc_array_i8 * const restrict, 
-       gfc_array_r16 * const restrict, const index_type * const restrict);
+       gfc_array_r16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_r16);
 
 void
 maxloc1_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_r16 (gfc_array_i8 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_r16);
 
 void
 mmaxloc1_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_r16 (gfc_array_i8 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_r16);
 
 void
 smaxloc1_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_r16 (retarray, array, pdim, back);
+#else
       maxloc1_8_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index b97cd4c3f042a070fb5eaf33d1cb3073fca89866..5895585c403691b6ca5cec5c9d2c7c54a4c57849 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_r4 (gfc_array_i8 * const restrict, 
-       gfc_array_r4 * const restrict, const index_type * const restrict);
+       gfc_array_r4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_r4);
 
 void
 maxloc1_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_r4 (gfc_array_i8 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_r4);
 
 void
 mmaxloc1_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_r4 (gfc_array_i8 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_r4);
 
 void
 smaxloc1_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_r4 (retarray, array, pdim, back);
+#else
       maxloc1_8_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 69c0c298bad08181b56118c206918294dcfb070f..8c79dd46ab072cc3bff640e927ec0c0f998474fd 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void maxloc1_8_r8 (gfc_array_i8 * const restrict, 
-       gfc_array_r8 * const restrict, const index_type * const restrict);
+       gfc_array_r8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(maxloc1_8_r8);
 
 void
 maxloc1_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_r8 (gfc_array_i8 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mmaxloc1_8_r8);
 
 void
 mmaxloc1_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mmaxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mmaxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_r8 (gfc_array_i8 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(smaxloc1_8_r8);
 
 void
 smaxloc1_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ smaxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_r8 (retarray, array, pdim, back);
+#else
       maxloc1_8_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e18ec1a4a614106c1240166d00ff1d49d13fa4c9..aab24491ba9ddc7768943553aff8a9a3f80d7c26 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void maxloc1_8_s1 (gfc_array_i8 * const restrict, 
-       gfc_array_s1 * const restrict, const index_type * const restrict,
+       gfc_array_s1 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc1_8_s1);
 
 void
 maxloc1_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ maxloc1_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ maxloc1_8_s1 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_s1 (gfc_array_i8 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mmaxloc1_8_s1);
 
 void
 mmaxloc1_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mmaxloc1_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mmaxloc1_8_s1 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_s1 (gfc_array_i8 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc1_8_s1);
 
 void
 smaxloc1_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ smaxloc1_8_s1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_s1 (retarray, array, pdim, back, string_len);
+#else
       maxloc1_8_s1 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index dbe40e962861bb2d6c666ef5898cbfdde3456e89..f02e2a545260f6496ee4e766a4c86e95ab1303ba 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void maxloc1_8_s4 (gfc_array_i8 * const restrict, 
-       gfc_array_s4 * const restrict, const index_type * const restrict,
+       gfc_array_s4 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc1_8_s4);
 
 void
 maxloc1_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ maxloc1_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ maxloc1_8_s4 (gfc_array_i8 * const restrict retarray,
 
 extern void mmaxloc1_8_s4 (gfc_array_i8 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mmaxloc1_8_s4);
 
 void
 mmaxloc1_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mmaxloc1_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mmaxloc1_8_s4 (gfc_array_i8 * const restrict retarray,
 
 extern void smaxloc1_8_s4 (gfc_array_i8 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc1_8_s4);
 
 void
 smaxloc1_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ smaxloc1_8_s4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxloc1_8_s4 (retarray, array, pdim, back, string_len);
+#else
       maxloc1_8_s4 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 1a4a88670c517b0e2d83711e3be7486ba075e17a..bfba7074bccb08d2c5851c4e0d6d746187d258c0 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
@@ -38,12 +39,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_16 maxloc2_16_s1 (gfc_array_s1 * const restrict,
+extern GFC_INTEGER_16 maxloc2_16_s1 (gfc_array_s1 * const restrict, GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc2_16_s1);
 
 GFC_INTEGER_16
-maxloc2_16_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
+maxloc2_16_s1 (gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +53,7 @@ maxloc2_16_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_1 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +76,13 @@ maxloc2_16_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_16 mmaxloc2_16_s1 (gfc_array_s1 * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                       gfc_charlen_type);
 export_proto(mmaxloc2_16_s1);
 
 GFC_INTEGER_16
 mmaxloc2_16_s1 (gfc_array_s1 * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -92,6 +95,7 @@ mmaxloc2_16_s1 (gfc_array_s1 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -141,15 +145,15 @@ mmaxloc2_16_s1 (gfc_array_s1 * const restrict array,
 }
 
 extern GFC_INTEGER_16 smaxloc2_16_s1 (gfc_array_s1 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc2_16_s1);
 
 GFC_INTEGER_16
 smaxloc2_16_s1 (gfc_array_s1 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return maxloc2_16_s1 (array, len);
+    return maxloc2_16_s1 (array, len, back);
   else
     return 0;
 }
index 31a6804c9d517020bec4f8a55334d9d9702407f4..cf1235e92c9bce349cd952080a9abdbdef7b3beb 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
@@ -38,12 +39,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_16 maxloc2_16_s4 (gfc_array_s4 * const restrict,
+extern GFC_INTEGER_16 maxloc2_16_s4 (gfc_array_s4 * const restrict, GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc2_16_s4);
 
 GFC_INTEGER_16
-maxloc2_16_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
+maxloc2_16_s4 (gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +53,7 @@ maxloc2_16_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_4 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +76,13 @@ maxloc2_16_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_16 mmaxloc2_16_s4 (gfc_array_s4 * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                       gfc_charlen_type);
 export_proto(mmaxloc2_16_s4);
 
 GFC_INTEGER_16
 mmaxloc2_16_s4 (gfc_array_s4 * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -92,6 +95,7 @@ mmaxloc2_16_s4 (gfc_array_s4 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -141,15 +145,15 @@ mmaxloc2_16_s4 (gfc_array_s4 * const restrict array,
 }
 
 extern GFC_INTEGER_16 smaxloc2_16_s4 (gfc_array_s4 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc2_16_s4);
 
 GFC_INTEGER_16
 smaxloc2_16_s4 (gfc_array_s4 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return maxloc2_16_s4 (array, len);
+    return maxloc2_16_s4 (array, len, back);
   else
     return 0;
 }
index e68f50a7a8f292855c0aa7bad0a561e300b8ef94..e88ecca6eb43a9ec18522032b4aecf59a82f5575 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
@@ -38,12 +39,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_4 maxloc2_4_s1 (gfc_array_s1 * const restrict,
+extern GFC_INTEGER_4 maxloc2_4_s1 (gfc_array_s1 * const restrict, GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc2_4_s1);
 
 GFC_INTEGER_4
-maxloc2_4_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
+maxloc2_4_s1 (gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +53,7 @@ maxloc2_4_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_1 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +76,13 @@ maxloc2_4_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_4 mmaxloc2_4_s1 (gfc_array_s1 * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                       gfc_charlen_type);
 export_proto(mmaxloc2_4_s1);
 
 GFC_INTEGER_4
 mmaxloc2_4_s1 (gfc_array_s1 * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -92,6 +95,7 @@ mmaxloc2_4_s1 (gfc_array_s1 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -141,15 +145,15 @@ mmaxloc2_4_s1 (gfc_array_s1 * const restrict array,
 }
 
 extern GFC_INTEGER_4 smaxloc2_4_s1 (gfc_array_s1 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc2_4_s1);
 
 GFC_INTEGER_4
 smaxloc2_4_s1 (gfc_array_s1 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return maxloc2_4_s1 (array, len);
+    return maxloc2_4_s1 (array, len, back);
   else
     return 0;
 }
index 104bfc6f251ba2b22589bedb3aead65c357cf0f6..adeba9321ec26bd411603f7443b3ab405322f4ec 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
@@ -38,12 +39,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_4 maxloc2_4_s4 (gfc_array_s4 * const restrict,
+extern GFC_INTEGER_4 maxloc2_4_s4 (gfc_array_s4 * const restrict, GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc2_4_s4);
 
 GFC_INTEGER_4
-maxloc2_4_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
+maxloc2_4_s4 (gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +53,7 @@ maxloc2_4_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_4 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +76,13 @@ maxloc2_4_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_4 mmaxloc2_4_s4 (gfc_array_s4 * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                       gfc_charlen_type);
 export_proto(mmaxloc2_4_s4);
 
 GFC_INTEGER_4
 mmaxloc2_4_s4 (gfc_array_s4 * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -92,6 +95,7 @@ mmaxloc2_4_s4 (gfc_array_s4 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -141,15 +145,15 @@ mmaxloc2_4_s4 (gfc_array_s4 * const restrict array,
 }
 
 extern GFC_INTEGER_4 smaxloc2_4_s4 (gfc_array_s4 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc2_4_s4);
 
 GFC_INTEGER_4
 smaxloc2_4_s4 (gfc_array_s4 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return maxloc2_4_s4 (array, len);
+    return maxloc2_4_s4 (array, len, back);
   else
     return 0;
 }
index 04c257ee235c4ec888a8f3ff191361b344efce53..1a32e13949aa3864c8a9f5339d52f72b5f78e2fc 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
@@ -38,12 +39,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_8 maxloc2_8_s1 (gfc_array_s1 * const restrict,
+extern GFC_INTEGER_8 maxloc2_8_s1 (gfc_array_s1 * const restrict, GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc2_8_s1);
 
 GFC_INTEGER_8
-maxloc2_8_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
+maxloc2_8_s1 (gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +53,7 @@ maxloc2_8_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_1 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +76,13 @@ maxloc2_8_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_8 mmaxloc2_8_s1 (gfc_array_s1 * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                       gfc_charlen_type);
 export_proto(mmaxloc2_8_s1);
 
 GFC_INTEGER_8
 mmaxloc2_8_s1 (gfc_array_s1 * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -92,6 +95,7 @@ mmaxloc2_8_s1 (gfc_array_s1 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -141,15 +145,15 @@ mmaxloc2_8_s1 (gfc_array_s1 * const restrict array,
 }
 
 extern GFC_INTEGER_8 smaxloc2_8_s1 (gfc_array_s1 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc2_8_s1);
 
 GFC_INTEGER_8
 smaxloc2_8_s1 (gfc_array_s1 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return maxloc2_8_s1 (array, len);
+    return maxloc2_8_s1 (array, len, back);
   else
     return 0;
 }
index fe7de5057ddbebee01f89a6bf19b001df6c17042..ae22a51c52748b8d4ff245dc6b299a7d6fe88566 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
@@ -38,12 +39,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_8 maxloc2_8_s4 (gfc_array_s4 * const restrict,
+extern GFC_INTEGER_8 maxloc2_8_s4 (gfc_array_s4 * const restrict, GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(maxloc2_8_s4);
 
 GFC_INTEGER_8
-maxloc2_8_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
+maxloc2_8_s4 (gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +53,7 @@ maxloc2_8_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_4 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +76,13 @@ maxloc2_8_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_8 mmaxloc2_8_s4 (gfc_array_s4 * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                       gfc_charlen_type);
 export_proto(mmaxloc2_8_s4);
 
 GFC_INTEGER_8
 mmaxloc2_8_s4 (gfc_array_s4 * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -92,6 +95,7 @@ mmaxloc2_8_s4 (gfc_array_s4 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -141,15 +145,15 @@ mmaxloc2_8_s4 (gfc_array_s4 * const restrict array,
 }
 
 extern GFC_INTEGER_8 smaxloc2_8_s4 (gfc_array_s4 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(smaxloc2_8_s4);
 
 GFC_INTEGER_8
 smaxloc2_8_s4 (gfc_array_s4 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return maxloc2_8_s4 (array, len);
+    return maxloc2_8_s4 (array, len, back);
   else
     return 0;
 }
index 88d80e11ad64aaa024b6338827ff14942d6b948e..2c6b865d60a266a6bc293854c7bd093f89313a1c 100644 (file)
@@ -51,6 +51,10 @@ maxval_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_i1 (retarray, array, pdim, back);
+#else
       maxval_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index c555085c712fb8e8dcdbfc213c5af2e53d166171..060463601a75865d7064d5d2a615ea667f5c4274 100644 (file)
@@ -51,6 +51,10 @@ maxval_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_i16 (retarray, array, pdim, back);
+#else
       maxval_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 159ec96615e5e6afd8d3ce1e1d16d80d391a18f3..bcd4343ae0847254281fe26ce30608a898242673 100644 (file)
@@ -51,6 +51,10 @@ maxval_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_i2 (retarray, array, pdim, back);
+#else
       maxval_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 70f8e905196382bf676f6c309d8531bd5abdd90d..bef1c291c3544cbc8b48349b040c489ab5fa3d89 100644 (file)
@@ -51,6 +51,10 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_i4 (retarray, array, pdim, back);
+#else
       maxval_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 49517bb4f9a67b4d02cfe59edbf17f8807692981..14deb70de4709cadeed9065935c5be0c0fe2f5b4 100644 (file)
@@ -51,6 +51,10 @@ maxval_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_i8 (retarray, array, pdim, back);
+#else
       maxval_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 683a6f9be2e497ba349153f4b2c73fda82f3d322..85d6d83b24ab89ea7e66cd9daac87b7e03fbbb9d 100644 (file)
@@ -51,6 +51,10 @@ maxval_r10 (gfc_array_r10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_r10 (gfc_array_r10 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_r10 (gfc_array_r10 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_r10 (retarray, array, pdim, back);
+#else
       maxval_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 1eaae8c5d34d8dbb9f66bbd4ff2a2cd2df6e0cae..18ef36725a8d78fa09c0fe9acb78268076bc7071 100644 (file)
@@ -51,6 +51,10 @@ maxval_r16 (gfc_array_r16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_r16 (gfc_array_r16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_r16 (gfc_array_r16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_r16 (retarray, array, pdim, back);
+#else
       maxval_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 72ac583bfa0b6d45261c4d263f4e1d3522c9dc2b..862fe633c0c67690cbdb8960cce76a008a09f448 100644 (file)
@@ -51,6 +51,10 @@ maxval_r4 (gfc_array_r4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_r4 (gfc_array_r4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_r4 (gfc_array_r4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_r4 (retarray, array, pdim, back);
+#else
       maxval_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index de58c877d38955e8a44c1166c13ab43556062673..9315483d39e19be8e820d72db1308cd6ea8cf206 100644 (file)
@@ -51,6 +51,10 @@ maxval_r8 (gfc_array_r8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mmaxval_r8 (gfc_array_r8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ smaxval_r8 (gfc_array_r8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      maxval_r8 (retarray, array, pdim, back);
+#else
       maxval_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index c958fdc3201b26e089f6892a1b52ce6936234455..88720df56f7f9e80fb34015a1c343b5985095b07 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i1 * const restrict array);
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_i1);
 
 void
 minloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i1 * const restrict array)
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_i1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_i1 (gfc_array_i16 * const restrict, 
-       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_i1);
 
 void
 mminloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_i1 (gfc_array_i16 * const restrict, 
-       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_i1);
 
 void
 sminloc0_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_i1 (retarray, array);
+      minloc0_16_i1 (retarray, array, back);
       return;
     }
 
index 82c86b5adfeff79d470413fa5115a35365724e26..4e2b6d0ca54b9ebfef2132ab7c796c6d4465b000 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i16 * const restrict array);
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_i16);
 
 void
 minloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i16 * const restrict array)
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_i16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_i16 (gfc_array_i16 * const restrict, 
-       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_i16);
 
 void
 mminloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_i16 (gfc_array_i16 * const restrict, 
-       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_i16);
 
 void
 sminloc0_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_i16 (retarray, array);
+      minloc0_16_i16 (retarray, array, back);
       return;
     }
 
index b32d560291d6c87ae586b1372731f81d107d5c60..c9032c7a97031f8741d988d762f95f1a40f253f6 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i2 * const restrict array);
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_i2);
 
 void
 minloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i2 * const restrict array)
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_i2 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_i2 (gfc_array_i16 * const restrict, 
-       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_i2);
 
 void
 mminloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_i2 (gfc_array_i16 * const restrict, 
-       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_i2);
 
 void
 sminloc0_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_i2 (retarray, array);
+      minloc0_16_i2 (retarray, array, back);
       return;
     }
 
index 977bbb6a59cab88b4a8ceec4d0d90ab70cb0494b..a27405a3ff6016fd59c16cdad9a02a68e43134ec 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i4 * const restrict array);
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_i4);
 
 void
 minloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i4 * const restrict array)
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_i4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_i4 (gfc_array_i16 * const restrict, 
-       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_i4);
 
 void
 mminloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_i4 (gfc_array_i16 * const restrict, 
-       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_i4);
 
 void
 sminloc0_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_i4 (retarray, array);
+      minloc0_16_i4 (retarray, array, back);
       return;
     }
 
index a55c97e2fec316694ccc43bc7e5cf78d20150e00..6874f66ae56b266af1269da1c092defd5a19774b 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i8 * const restrict array);
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_i8);
 
 void
 minloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_i8 * const restrict array)
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_i8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_i8 (gfc_array_i16 * const restrict, 
-       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_i8);
 
 void
 mminloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_i8 (gfc_array_i16 * const restrict, 
-       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_i8);
 
 void
 sminloc0_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_i8 (retarray, array);
+      minloc0_16_i8 (retarray, array, back);
       return;
     }
 
index 594e4337d464d997235dfb01a7295a7fb0d426c1..ad97459d4437d3e392bbb6fcffdb1cb6047627e9 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r10 * const restrict array);
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_r10);
 
 void
 minloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r10 * const restrict array)
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_r10 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_r10 (gfc_array_i16 * const restrict, 
-       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_r10);
 
 void
 mminloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_r10 (gfc_array_i16 * const restrict, 
-       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_r10);
 
 void
 sminloc0_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_r10 (retarray, array);
+      minloc0_16_r10 (retarray, array, back);
       return;
     }
 
index 22bf13173fb056f6f25058ab89beb8fb82785954..f8245ed30597083c9b0b0403c37e6ce286e65843 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r16 * const restrict array);
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_r16);
 
 void
 minloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r16 * const restrict array)
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_r16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_r16 (gfc_array_i16 * const restrict, 
-       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_r16);
 
 void
 mminloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_r16 (gfc_array_i16 * const restrict, 
-       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_r16);
 
 void
 sminloc0_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_r16 (retarray, array);
+      minloc0_16_r16 (retarray, array, back);
       return;
     }
 
index f7b8e9e6f9984f4a6e4fa4082e2809aa25c251e7..ed41783dd5e6508b79be3dce948476ce265d2299 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r4 * const restrict array);
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_r4);
 
 void
 minloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r4 * const restrict array)
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_r4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_r4 (gfc_array_i16 * const restrict, 
-       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_r4);
 
 void
 mminloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_r4 (gfc_array_i16 * const restrict, 
-       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_r4);
 
 void
 sminloc0_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_r4 (retarray, array);
+      minloc0_16_r4 (retarray, array, back);
       return;
     }
 
index 3be2ea9b7b0f04f4ee0852833b9036730c63907f..0799d4dfca8cfe8d7c389e2d442912726f235f78 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
 
 
 extern void minloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r8 * const restrict array);
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_16_r8);
 
 void
 minloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_r8 * const restrict array)
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_16_r8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_r8 (gfc_array_i16 * const restrict, 
-       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_16_r8);
 
 void
 mminloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_r8 (gfc_array_i16 * const restrict, 
-       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_16_r8);
 
 void
 sminloc0_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_16_r8 (retarray, array);
+      minloc0_16_r8 (retarray, array, back);
       return;
     }
 
index 524d27d1be224ca3f9890411a22e7174a53d48a9..e566d749fb7cfeab8b29f7269712cf7c13eb140b 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void minloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len);
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(minloc0_16_s1);
 
 void
 minloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len)
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ minloc0_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ minloc0_16_s1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_s1 (gfc_array_i16 * const restrict, 
-       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mminloc0_16_s1);
 
 void
 mminloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mminloc0_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mminloc0_16_s1 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_s1 (gfc_array_i16 * const restrict, 
-       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(sminloc0_16_s1);
 
 void
 sminloc0_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ sminloc0_16_s1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      minloc0_16_s1 (retarray, array, back, len);
+#else
       minloc0_16_s1 (retarray, array, len);
+#endif
       return;
     }
 
index 736eaa35d2c219b73fd9675ce8e2b40be5d5e919..2a0b13c240f92a14ddcde5a0ee83f8f067fb8a0d 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void minloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len);
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(minloc0_16_s4);
 
 void
 minloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len)
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ minloc0_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ minloc0_16_s4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void mminloc0_16_s4 (gfc_array_i16 * const restrict, 
-       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mminloc0_16_s4);
 
 void
 mminloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mminloc0_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mminloc0_16_s4 (gfc_array_i16 * const restrict retarray,
 
 
 extern void sminloc0_16_s4 (gfc_array_i16 * const restrict, 
-       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(sminloc0_16_s4);
 
 void
 sminloc0_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ sminloc0_16_s4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      minloc0_16_s4 (retarray, array, back, len);
+#else
       minloc0_16_s4 (retarray, array, len);
+#endif
       return;
     }
 
index acfbb9187773fbe4ed44d04095342418174001b3..577c9ddf6553ba44de1bd17e12af60de9876de19 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i1 * const restrict array);
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_i1);
 
 void
 minloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i1 * const restrict array)
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_i1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_i1 (gfc_array_i4 * const restrict, 
-       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_i1);
 
 void
 mminloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_i1 (gfc_array_i4 * const restrict, 
-       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_i1);
 
 void
 sminloc0_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_i1 (retarray, array);
+      minloc0_4_i1 (retarray, array, back);
       return;
     }
 
index a47b20ecea08dce6feabd810d00501b01ea10651..48da69e39822231f39a026064bb2049903cb9cde 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i16 * const restrict array);
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_i16);
 
 void
 minloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i16 * const restrict array)
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_i16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_i16 (gfc_array_i4 * const restrict, 
-       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_i16);
 
 void
 mminloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_i16 (gfc_array_i4 * const restrict, 
-       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_i16);
 
 void
 sminloc0_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_i16 (retarray, array);
+      minloc0_4_i16 (retarray, array, back);
       return;
     }
 
index 8b378bab78699bda90df8dc27f3bd21d579b6bab..815ea85c22197fb739cb0f4eb9e310a95bbb8dc3 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i2 * const restrict array);
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_i2);
 
 void
 minloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i2 * const restrict array)
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_i2 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_i2 (gfc_array_i4 * const restrict, 
-       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_i2);
 
 void
 mminloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_i2 (gfc_array_i4 * const restrict, 
-       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_i2);
 
 void
 sminloc0_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_i2 (retarray, array);
+      minloc0_4_i2 (retarray, array, back);
       return;
     }
 
index b91d2bf8e224cf82987c294ec7241c96d9770235..36b0a58f250af6f7f97ea642c65de91dad4ed5f3 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i4 * const restrict array);
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_i4);
 
 void
 minloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i4 * const restrict array)
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_i4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_i4 (gfc_array_i4 * const restrict, 
-       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_i4);
 
 void
 mminloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_i4 (gfc_array_i4 * const restrict, 
-       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_i4);
 
 void
 sminloc0_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_i4 (retarray, array);
+      minloc0_4_i4 (retarray, array, back);
       return;
     }
 
index ee87eaa872fbfe5d6a877acd03faeb607f8ba005..a66280cd0742355e55eeb81616e144b4b3795745 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i8 * const restrict array);
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_i8);
 
 void
 minloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_i8 * const restrict array)
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_i8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_i8 (gfc_array_i4 * const restrict, 
-       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_i8);
 
 void
 mminloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_i8 (gfc_array_i4 * const restrict, 
-       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_i8);
 
 void
 sminloc0_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_i8 (retarray, array);
+      minloc0_4_i8 (retarray, array, back);
       return;
     }
 
index 9d39606b7b8c4412972324045f5829a9bdb86ccc..461ad0d477ba0b1cd3c9a00f753c494f176836a7 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r10 * const restrict array);
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_r10);
 
 void
 minloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r10 * const restrict array)
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_r10 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_r10 (gfc_array_i4 * const restrict, 
-       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_r10);
 
 void
 mminloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_r10 (gfc_array_i4 * const restrict, 
-       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_r10);
 
 void
 sminloc0_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_r10 (retarray, array);
+      minloc0_4_r10 (retarray, array, back);
       return;
     }
 
index be920c3243faa8a208dca9b433ec348cb6e1d28c..27e6d1d6a423276e0e602635cb221377a485910f 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r16 * const restrict array);
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_r16);
 
 void
 minloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r16 * const restrict array)
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_r16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_r16 (gfc_array_i4 * const restrict, 
-       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_r16);
 
 void
 mminloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_r16 (gfc_array_i4 * const restrict, 
-       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_r16);
 
 void
 sminloc0_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_r16 (retarray, array);
+      minloc0_4_r16 (retarray, array, back);
       return;
     }
 
index f5beb64171bc57de767bba089e50dea990774941..1b85544a292f07530dc63134f42a4650f07c1c0a 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r4 * const restrict array);
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_r4);
 
 void
 minloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r4 * const restrict array)
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_r4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_r4 (gfc_array_i4 * const restrict, 
-       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_r4);
 
 void
 mminloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_r4 (gfc_array_i4 * const restrict, 
-       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_r4);
 
 void
 sminloc0_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_r4 (retarray, array);
+      minloc0_4_r4 (retarray, array, back);
       return;
     }
 
index 2f6973ce8fd3d3919a436f294fbf0b0a90eecce8..7c6d6bfbec2b091810fd3f8aac05fe4ab3a8a167 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
 
 
 extern void minloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r8 * const restrict array);
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_4_r8);
 
 void
 minloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_r8 * const restrict array)
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_4_r8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_r8 (gfc_array_i4 * const restrict, 
-       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_4_r8);
 
 void
 mminloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_r8 (gfc_array_i4 * const restrict, 
-       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_4_r8);
 
 void
 sminloc0_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_4_r8 (retarray, array);
+      minloc0_4_r8 (retarray, array, back);
       return;
     }
 
index 111ee09c86f60cfa737f6bd9323cbd0aab63e082..4d58df41b4f97ec08c26f797683a3b1f4f09cfcf 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void minloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len);
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(minloc0_4_s1);
 
 void
 minloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len)
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ minloc0_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ minloc0_4_s1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_s1 (gfc_array_i4 * const restrict, 
-       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mminloc0_4_s1);
 
 void
 mminloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mminloc0_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mminloc0_4_s1 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_s1 (gfc_array_i4 * const restrict, 
-       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(sminloc0_4_s1);
 
 void
 sminloc0_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ sminloc0_4_s1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      minloc0_4_s1 (retarray, array, back, len);
+#else
       minloc0_4_s1 (retarray, array, len);
+#endif
       return;
     }
 
index d5379df00e36cfc1f1e45ca98b0efb3503717411..bea56c06b3d3662d3c94f8513167ee393bd140d4 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void minloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len);
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(minloc0_4_s4);
 
 void
 minloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len)
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ minloc0_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ minloc0_4_s4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void mminloc0_4_s4 (gfc_array_i4 * const restrict, 
-       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mminloc0_4_s4);
 
 void
 mminloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mminloc0_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mminloc0_4_s4 (gfc_array_i4 * const restrict retarray,
 
 
 extern void sminloc0_4_s4 (gfc_array_i4 * const restrict, 
-       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(sminloc0_4_s4);
 
 void
 sminloc0_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ sminloc0_4_s4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      minloc0_4_s4 (retarray, array, back, len);
+#else
       minloc0_4_s4 (retarray, array, len);
+#endif
       return;
     }
 
index cf7f5c1af713976a3aed616bd93584701db0d93f..b0bccc89b991466558621aec513ae21877065289 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i1 * const restrict array);
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_i1);
 
 void
 minloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i1 * const restrict array)
+       gfc_array_i1 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_i1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_i1 (gfc_array_i8 * const restrict, 
-       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i1 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_i1);
 
 void
 mminloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_i1 (gfc_array_i8 * const restrict, 
-       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_i1);
 
 void
 sminloc0_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_i1 (retarray, array);
+      minloc0_8_i1 (retarray, array, back);
       return;
     }
 
index d703408f377eb212ff916997138061e49bc1571a..b4fb041b4a63bf462428aa86a7c1aa069c305e14 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i16 * const restrict array);
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_i16);
 
 void
 minloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i16 * const restrict array)
+       gfc_array_i16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_i16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_i16 (gfc_array_i8 * const restrict, 
-       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_i16);
 
 void
 mminloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_i16 (gfc_array_i8 * const restrict, 
-       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_i16);
 
 void
 sminloc0_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_i16 (retarray, array);
+      minloc0_8_i16 (retarray, array, back);
       return;
     }
 
index 003c33b32c2b9293594e024035afebdcb49b6b74..13b39040f053f488edbb3952b92900018686ef48 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i2 * const restrict array);
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_i2);
 
 void
 minloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i2 * const restrict array)
+       gfc_array_i2 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_i2 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_i2 (gfc_array_i8 * const restrict, 
-       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i2 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_i2);
 
 void
 mminloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_i2 (gfc_array_i8 * const restrict, 
-       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i2 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_i2);
 
 void
 sminloc0_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_i2 (retarray, array);
+      minloc0_8_i2 (retarray, array, back);
       return;
     }
 
index 4b2f245a8a43e8d1d982b07064cdcdc3e3313e2b..5d4dc06353e35eb792205aac35566dd5ee728686 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i4 * const restrict array);
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_i4);
 
 void
 minloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i4 * const restrict array)
+       gfc_array_i4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_i4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_i4 (gfc_array_i8 * const restrict, 
-       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_i4);
 
 void
 mminloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_i4 (gfc_array_i8 * const restrict, 
-       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_i4);
 
 void
 sminloc0_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_i4 (retarray, array);
+      minloc0_8_i4 (retarray, array, back);
       return;
     }
 
index 6f2dc2ece3ab8f0e033564f1a71532d6c8fb2477..d4cf9a4a977367a8ed60d2618cff7ddb7b44c3d4 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i8 * const restrict array);
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_i8);
 
 void
 minloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_i8 * const restrict array)
+       gfc_array_i8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_i8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_i8 (gfc_array_i8 * const restrict, 
-       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_i8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_i8);
 
 void
 mminloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_i8 (gfc_array_i8 * const restrict, 
-       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_i8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_i8);
 
 void
 sminloc0_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_i8 (retarray, array);
+      minloc0_8_i8 (retarray, array, back);
       return;
     }
 
index 1f08628eb067584b468dd592efe3e16b8c633edc..c74fe0f6e8bd812f36ab5edb0e62451e761925e2 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r10 * const restrict array);
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_r10);
 
 void
 minloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r10 * const restrict array)
+       gfc_array_r10 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_r10 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_r10 (gfc_array_i8 * const restrict, 
-       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r10 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_r10);
 
 void
 mminloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_r10 (gfc_array_i8 * const restrict, 
-       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r10 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_r10);
 
 void
 sminloc0_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_r10 (retarray, array);
+      minloc0_8_r10 (retarray, array, back);
       return;
     }
 
index e32fd136d02beb2d6511a2cb1b74fd4b90b8e47f..0ce3fd7b803d639bfe53ac6eff27fc862dbdfed9 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r16 * const restrict array);
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_r16);
 
 void
 minloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r16 * const restrict array)
+       gfc_array_r16 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_r16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_r16 (gfc_array_i8 * const restrict, 
-       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r16 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_r16);
 
 void
 mminloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_r16 (gfc_array_i8 * const restrict, 
-       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r16 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_r16);
 
 void
 sminloc0_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_r16 (retarray, array);
+      minloc0_8_r16 (retarray, array, back);
       return;
     }
 
index 533e7484aec6c5153741dbd819af3d4de2543e09..66c5b74e40ada80b1e0d8454162eb766b0896e81 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r4 * const restrict array);
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_r4);
 
 void
 minloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r4 * const restrict array)
+       gfc_array_r4 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_r4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_r4 (gfc_array_i8 * const restrict, 
-       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r4 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_r4);
 
 void
 mminloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_r4 (gfc_array_i8 * const restrict, 
-       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_r4);
 
 void
 sminloc0_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_r4 (retarray, array);
+      minloc0_8_r4 (retarray, array, back);
       return;
     }
 
index 1eb7423a67639ef392bf87b3f069410803799ab7..bd6b217f7f99817d70d3efc0238884ef465a2846 100644 (file)
@@ -24,18 +24,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
 
 
 extern void minloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r8 * const restrict array);
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4);
 export_proto(minloc0_8_r8);
 
 void
 minloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_r8 * const restrict array)
+       gfc_array_r8 * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -46,6 +47,7 @@ minloc0_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -167,13 +169,14 @@ minloc0_8_r8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_r8 (gfc_array_i8 * const restrict, 
-       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
+       gfc_array_r8 * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(mminloc0_8_r8);
 
 void
 mminloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -187,6 +190,7 @@ mminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -335,13 +339,13 @@ mminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_r8 (gfc_array_i8 * const restrict, 
-       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
+       gfc_array_r8 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(sminloc0_8_r8);
 
 void
 sminloc0_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -350,7 +354,7 @@ sminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
-      minloc0_8_r8 (retarray, array);
+      minloc0_8_r8 (retarray, array, back);
       return;
     }
 
index d7b6bee7784d40efc08d3283b3f30af361cab640..dd9be96f3dc7403e99787fb7938143f231ab88a9 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void minloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len);
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(minloc0_8_s1);
 
 void
 minloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s1 * const restrict array, gfc_charlen_type len)
+       gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ minloc0_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ minloc0_8_s1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_s1 (gfc_array_i8 * const restrict, 
-       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mminloc0_8_s1);
 
 void
 mminloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mminloc0_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mminloc0_8_s1 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_s1 (gfc_array_i8 * const restrict, 
-       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s1 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(sminloc0_8_s1);
 
 void
 sminloc0_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ sminloc0_8_s1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      minloc0_8_s1 (retarray, array, back, len);
+#else
       minloc0_8_s1 (retarray, array, len);
+#endif
       return;
     }
 
index ca1910c169e0cb16cc6407074d277add0120eae1..46d29ec0b88c505b151955e2cafd39a801075f67 100644 (file)
@@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 {
@@ -43,12 +45,12 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void minloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len);
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len);
 export_proto(minloc0_8_s4);
 
 void
 minloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
-       gfc_array_s4 * const restrict array, gfc_charlen_type len)
+       gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -59,6 +61,10 @@ minloc0_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -149,13 +155,15 @@ minloc0_8_s4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void mminloc0_8_s4 (gfc_array_i8 * const restrict, 
-       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, gfc_array_l1 * const restrict , GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(mminloc0_8_s4);
 
 void
 mminloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -169,6 +177,9 @@ mminloc0_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -282,13 +293,15 @@ mminloc0_8_s4 (gfc_array_i8 * const restrict retarray,
 
 
 extern void sminloc0_8_s4 (gfc_array_i8 * const restrict, 
-       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
+       gfc_array_s4 * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4 back,
+       gfc_charlen_type len);
 export_proto(sminloc0_8_s4);
 
 void
 sminloc0_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
@@ -297,7 +310,11 @@ sminloc0_8_s4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      minloc0_8_s4 (retarray, array, back, len);
+#else
       minloc0_8_s4 (retarray, array, len);
+#endif
       return;
     }
 
index e03ea37cd69bb54062e7ecaa75e167dd1ad0f247..20197c4ae0d24b2653817dd8d6099590103f15dc 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_i1 (gfc_array_i16 * const restrict, 
-       gfc_array_i1 * const restrict, const index_type * const restrict);
+       gfc_array_i1 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_i1);
 
 void
 minloc1_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_i1 (gfc_array_i16 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_i1);
 
 void
 mminloc1_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_i1 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_i1 (gfc_array_i16 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_i1);
 
 void
 sminloc1_16_i1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_i1 (retarray, array, pdim, back);
+#else
       minloc1_16_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 0ef0bdadd6406eb54f1bb17d7ab55d3acf1e3c72..fc718a894c6d43ecd037764e9ad0c46860320ee7 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_i16 (gfc_array_i16 * const restrict, 
-       gfc_array_i16 * const restrict, const index_type * const restrict);
+       gfc_array_i16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_i16);
 
 void
 minloc1_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_i16 (gfc_array_i16 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_i16);
 
 void
 mminloc1_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_i16 (gfc_array_i16 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_i16);
 
 void
 sminloc1_16_i16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_i16 (retarray, array, pdim, back);
+#else
       minloc1_16_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index df854ce9a3f8c9b5205c53e2a16f417f970bc3e1..e9352b1d7304ff6342b14c433bb1d908e439ef21 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_i2 (gfc_array_i16 * const restrict, 
-       gfc_array_i2 * const restrict, const index_type * const restrict);
+       gfc_array_i2 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_i2);
 
 void
 minloc1_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_i2 (gfc_array_i16 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_i2);
 
 void
 mminloc1_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_i2 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_i2 (gfc_array_i16 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_i2);
 
 void
 sminloc1_16_i2 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_i2 (retarray, array, pdim, back);
+#else
       minloc1_16_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 8c02e7a2a8697b70bed57706e9d22924097a5e67..9faa5b3947c39f05333ea45216ecae0eab08b0a7 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_i4 (gfc_array_i16 * const restrict, 
-       gfc_array_i4 * const restrict, const index_type * const restrict);
+       gfc_array_i4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_i4);
 
 void
 minloc1_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_i4 (gfc_array_i16 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_i4);
 
 void
 mminloc1_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_i4 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_i4 (gfc_array_i16 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_i4);
 
 void
 sminloc1_16_i4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_i4 (retarray, array, pdim, back);
+#else
       minloc1_16_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 938da8d7c8b9c670e0a24e9058f82981ce14c1ce..6ad4abedf04fd332fe4084ce0670747676bc489b 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_i8 (gfc_array_i16 * const restrict, 
-       gfc_array_i8 * const restrict, const index_type * const restrict);
+       gfc_array_i8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_i8);
 
 void
 minloc1_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_i8 (gfc_array_i16 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_i8);
 
 void
 mminloc1_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_i8 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_i8 (gfc_array_i16 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_i8);
 
 void
 sminloc1_16_i8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_i8 (retarray, array, pdim, back);
+#else
       minloc1_16_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index fbbcce6d4ec082c5f948332241c3ec462435bf12..930d077cdf9f144f13b4237e4b2d1f86ce1cb6f7 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_r10 (gfc_array_i16 * const restrict, 
-       gfc_array_r10 * const restrict, const index_type * const restrict);
+       gfc_array_r10 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_r10);
 
 void
 minloc1_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_r10 (gfc_array_i16 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_r10);
 
 void
 mminloc1_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_r10 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_r10 (gfc_array_i16 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_r10);
 
 void
 sminloc1_16_r10 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_r10 (retarray, array, pdim, back);
+#else
       minloc1_16_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 4d3df6c81cc51574bbabe87d685aa1481b66f354..2003d8ff9ac3ad2f036e73ccbe49f39f443c8910 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_r16 (gfc_array_i16 * const restrict, 
-       gfc_array_r16 * const restrict, const index_type * const restrict);
+       gfc_array_r16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_r16);
 
 void
 minloc1_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_r16 (gfc_array_i16 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_r16);
 
 void
 mminloc1_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_r16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_r16 (gfc_array_i16 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_r16);
 
 void
 sminloc1_16_r16 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_r16 (retarray, array, pdim, back);
+#else
       minloc1_16_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index ff62be42373d71083f6c68c919bc94fa7100a6b3..7b9698342cbb258fabcca2ab61675ad77e6ec7fa 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_r4 (gfc_array_i16 * const restrict, 
-       gfc_array_r4 * const restrict, const index_type * const restrict);
+       gfc_array_r4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_r4);
 
 void
 minloc1_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_r4 (gfc_array_i16 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_r4);
 
 void
 mminloc1_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_r4 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_r4 (gfc_array_i16 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_r4);
 
 void
 sminloc1_16_r4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_r4 (retarray, array, pdim, back);
+#else
       minloc1_16_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 51ea636c34ddfd02208215b2c5574ec8b79280f4..d6839157cb1441b7ce0d686bcda8f781e35d4ffd 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_16_r8 (gfc_array_i16 * const restrict, 
-       gfc_array_r8 * const restrict, const index_type * const restrict);
+       gfc_array_r8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_16_r8);
 
 void
 minloc1_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_r8 (gfc_array_i16 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_16_r8);
 
 void
 mminloc1_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_16_r8 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_r8 (gfc_array_i16 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_16_r8);
 
 void
 sminloc1_16_r8 (gfc_array_i16 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_r8 (retarray, array, pdim, back);
+#else
       minloc1_16_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 51d49c2ebf964173b6d1783356761ac6c1264c30..898d124fdd35c7865bab69f1d8353c1c8475bb48 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void minloc1_16_s1 (gfc_array_i16 * const restrict, 
-       gfc_array_s1 * const restrict, const index_type * const restrict,
+       gfc_array_s1 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(minloc1_16_s1);
 
 void
 minloc1_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ minloc1_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ minloc1_16_s1 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_s1 (gfc_array_i16 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mminloc1_16_s1);
 
 void
 mminloc1_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mminloc1_16_s1 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mminloc1_16_s1 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_s1 (gfc_array_i16 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc1_16_s1);
 
 void
 sminloc1_16_s1 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ sminloc1_16_s1 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_s1 (retarray, array, pdim, back, string_len);
+#else
       minloc1_16_s1 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index cebf6b330c0c60fce715a1f107062782edad841e..82eb258e00907c5ce44e2b4115ed711c41abe2ba 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void minloc1_16_s4 (gfc_array_i16 * const restrict, 
-       gfc_array_s4 * const restrict, const index_type * const restrict,
+       gfc_array_s4 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(minloc1_16_s4);
 
 void
 minloc1_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ minloc1_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ minloc1_16_s4 (gfc_array_i16 * const restrict retarray,
 
 extern void mminloc1_16_s4 (gfc_array_i16 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mminloc1_16_s4);
 
 void
 mminloc1_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mminloc1_16_s4 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mminloc1_16_s4 (gfc_array_i16 * const restrict retarray,
 
 extern void sminloc1_16_s4 (gfc_array_i16 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc1_16_s4);
 
 void
 sminloc1_16_s4 (gfc_array_i16 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ sminloc1_16_s4 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_16_s4 (retarray, array, pdim, back, string_len);
+#else
       minloc1_16_s4 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e9618771234ed722044a52be58d06d91282b51dc..b36f2681fe4bf69db54bcdbe7512a44c9774f1c9 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_i1 (gfc_array_i4 * const restrict, 
-       gfc_array_i1 * const restrict, const index_type * const restrict);
+       gfc_array_i1 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_i1);
 
 void
 minloc1_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_i1 (gfc_array_i4 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_i1);
 
 void
 mminloc1_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_i1 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_i1 (gfc_array_i4 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_i1);
 
 void
 sminloc1_4_i1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_i1 (retarray, array, pdim, back);
+#else
       minloc1_4_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 3ea294e0a6528622c78f5ce6efec62fcba6e2551..b4454e1aca746ff0f1b3bcd207285a650847a988 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_i16 (gfc_array_i4 * const restrict, 
-       gfc_array_i16 * const restrict, const index_type * const restrict);
+       gfc_array_i16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_i16);
 
 void
 minloc1_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_i16 (gfc_array_i4 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_i16);
 
 void
 mminloc1_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_i16 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_i16 (gfc_array_i4 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_i16);
 
 void
 sminloc1_4_i16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_i16 (retarray, array, pdim, back);
+#else
       minloc1_4_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 564c26265ee6632acfdbfeecc691b23e605f9ad0..f8ab77ccded5e53684890aadb715e38d6a9430ba 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_i2 (gfc_array_i4 * const restrict, 
-       gfc_array_i2 * const restrict, const index_type * const restrict);
+       gfc_array_i2 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_i2);
 
 void
 minloc1_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_i2 (gfc_array_i4 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_i2);
 
 void
 mminloc1_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_i2 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_i2 (gfc_array_i4 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_i2);
 
 void
 sminloc1_4_i2 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_i2 (retarray, array, pdim, back);
+#else
       minloc1_4_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 97dd9c2b2031f83fc4db1347795951090ddf69c1..6523d01fc9e0f4c070399754798166c16f25cc4e 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_i4 (gfc_array_i4 * const restrict, 
-       gfc_array_i4 * const restrict, const index_type * const restrict);
+       gfc_array_i4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_i4);
 
 void
 minloc1_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_i4 (gfc_array_i4 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_i4);
 
 void
 mminloc1_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_i4 (gfc_array_i4 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_i4);
 
 void
 sminloc1_4_i4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_i4 (retarray, array, pdim, back);
+#else
       minloc1_4_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 4c406326743808d0e1aa5c361b6f83f4f5e92030..ab1b6bae8b34342c2881471aaf5b20abaddcd138 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_i8 (gfc_array_i4 * const restrict, 
-       gfc_array_i8 * const restrict, const index_type * const restrict);
+       gfc_array_i8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_i8);
 
 void
 minloc1_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_i8 (gfc_array_i4 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_i8);
 
 void
 mminloc1_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_i8 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_i8 (gfc_array_i4 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_i8);
 
 void
 sminloc1_4_i8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_i8 (retarray, array, pdim, back);
+#else
       minloc1_4_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 01903a796d150ac5ec6e184ccdef4933c55554c2..a481ec459d3be66620f9b168207d7b0f4724e40c 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_r10 (gfc_array_i4 * const restrict, 
-       gfc_array_r10 * const restrict, const index_type * const restrict);
+       gfc_array_r10 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_r10);
 
 void
 minloc1_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_r10 (gfc_array_i4 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_r10);
 
 void
 mminloc1_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_r10 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_r10 (gfc_array_i4 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_r10);
 
 void
 sminloc1_4_r10 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_r10 (retarray, array, pdim, back);
+#else
       minloc1_4_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index f266ea7a91f4e76ba243047121688e2cb3236efa..f5fcb666c599a1c8688d275d01427603c919ac01 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_r16 (gfc_array_i4 * const restrict, 
-       gfc_array_r16 * const restrict, const index_type * const restrict);
+       gfc_array_r16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_r16);
 
 void
 minloc1_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_r16 (gfc_array_i4 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_r16);
 
 void
 mminloc1_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_r16 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_r16 (gfc_array_i4 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_r16);
 
 void
 sminloc1_4_r16 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_r16 (retarray, array, pdim, back);
+#else
       minloc1_4_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 3f680e57661682feec00d69d8546eb9c75f9c69b..212aa2541cb40f0a3df611a3ed6b6e5b2149585b 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_r4 (gfc_array_i4 * const restrict, 
-       gfc_array_r4 * const restrict, const index_type * const restrict);
+       gfc_array_r4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_r4);
 
 void
 minloc1_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_r4 (gfc_array_i4 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_r4);
 
 void
 mminloc1_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_r4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_r4 (gfc_array_i4 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_r4);
 
 void
 sminloc1_4_r4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_r4 (retarray, array, pdim, back);
+#else
       minloc1_4_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index dc425ef27bfdbe418518702b0abeac1ccc396702..1fa41f2e084f95a22678abe01c3e9b4eb7b89456 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_4_r8 (gfc_array_i4 * const restrict, 
-       gfc_array_r8 * const restrict, const index_type * const restrict);
+       gfc_array_r8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_4_r8);
 
 void
 minloc1_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_r8 (gfc_array_i4 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_4_r8);
 
 void
 mminloc1_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_4_r8 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_r8 (gfc_array_i4 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_4_r8);
 
 void
 sminloc1_4_r8 (gfc_array_i4 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_r8 (retarray, array, pdim, back);
+#else
       minloc1_4_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 0b8c0e838623e73c1ce951c4398506ec8e0a7cab..1b7e5514cc87fc1c3891e9e7a793b6f89515a27b 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void minloc1_4_s1 (gfc_array_i4 * const restrict, 
-       gfc_array_s1 * const restrict, const index_type * const restrict,
+       gfc_array_s1 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(minloc1_4_s1);
 
 void
 minloc1_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ minloc1_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ minloc1_4_s1 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_s1 (gfc_array_i4 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mminloc1_4_s1);
 
 void
 mminloc1_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mminloc1_4_s1 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mminloc1_4_s1 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_s1 (gfc_array_i4 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc1_4_s1);
 
 void
 sminloc1_4_s1 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ sminloc1_4_s1 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_s1 (retarray, array, pdim, back, string_len);
+#else
       minloc1_4_s1 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index c92f690fe30815374cda871517b1a19f52f700d7..b3c6010efdae4b154639ead0be6d7cefce07c8ce 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void minloc1_4_s4 (gfc_array_i4 * const restrict, 
-       gfc_array_s4 * const restrict, const index_type * const restrict,
+       gfc_array_s4 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(minloc1_4_s4);
 
 void
 minloc1_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ minloc1_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ minloc1_4_s4 (gfc_array_i4 * const restrict retarray,
 
 extern void mminloc1_4_s4 (gfc_array_i4 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mminloc1_4_s4);
 
 void
 mminloc1_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mminloc1_4_s4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mminloc1_4_s4 (gfc_array_i4 * const restrict retarray,
 
 extern void sminloc1_4_s4 (gfc_array_i4 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc1_4_s4);
 
 void
 sminloc1_4_s4 (gfc_array_i4 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ sminloc1_4_s4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_4_s4 (retarray, array, pdim, back, string_len);
+#else
       minloc1_4_s4 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 913a7a698f73696a27d42c41872a00291dd5edc2..66771b345231bbf366c9ad1d837176dfad60315a 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_i1 (gfc_array_i8 * const restrict, 
-       gfc_array_i1 * const restrict, const index_type * const restrict);
+       gfc_array_i1 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_i1);
 
 void
 minloc1_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_i1 (gfc_array_i8 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_i1);
 
 void
 mminloc1_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_i1 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_i1 (gfc_array_i8 * const restrict, 
        gfc_array_i1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_i1);
 
 void
 sminloc1_8_i1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_i1 (retarray, array, pdim, back);
+#else
       minloc1_8_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 218b20c74d5e4bf88ab2380625342f3c9f6af25e..8c7bc1908e2318b9e9e608daed151ab41914bae5 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_i16 (gfc_array_i8 * const restrict, 
-       gfc_array_i16 * const restrict, const index_type * const restrict);
+       gfc_array_i16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_i16);
 
 void
 minloc1_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_i16 (gfc_array_i8 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_i16);
 
 void
 mminloc1_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_i16 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_i16 (gfc_array_i8 * const restrict, 
        gfc_array_i16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_i16);
 
 void
 sminloc1_8_i16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_i16 (retarray, array, pdim, back);
+#else
       minloc1_8_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 191bccee5e292e2fd6ad1225cc27c0e776be883b..e31acb53b72826cc550e7d07e34b7b90a7cd7bdd 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_i2 (gfc_array_i8 * const restrict, 
-       gfc_array_i2 * const restrict, const index_type * const restrict);
+       gfc_array_i2 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_i2);
 
 void
 minloc1_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_i2 (gfc_array_i8 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_i2);
 
 void
 mminloc1_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_i2 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_i2 (gfc_array_i8 * const restrict, 
        gfc_array_i2 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_i2);
 
 void
 sminloc1_8_i2 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i2 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_i2 (retarray, array, pdim, back);
+#else
       minloc1_8_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index ff6178607208024e1fb9b1bee409b704385392bd..4402bdd8ffe75b8f27743a8fc468018a22da40a3 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_i4 (gfc_array_i8 * const restrict, 
-       gfc_array_i4 * const restrict, const index_type * const restrict);
+       gfc_array_i4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_i4);
 
 void
 minloc1_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_i4 (gfc_array_i8 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_i4);
 
 void
 mminloc1_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_i4 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_i4 (gfc_array_i8 * const restrict, 
        gfc_array_i4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_i4);
 
 void
 sminloc1_8_i4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_i4 (retarray, array, pdim, back);
+#else
       minloc1_8_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 42f917c6d15401b933681bbbb804ec28f4cf819f..172cbb5d138a781d0355e04018117fecec0c45dc 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_i8 (gfc_array_i8 * const restrict, 
-       gfc_array_i8 * const restrict, const index_type * const restrict);
+       gfc_array_i8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_i8);
 
 void
 minloc1_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_i8 (gfc_array_i8 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_i8);
 
 void
 mminloc1_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_i8 (gfc_array_i8 * const restrict, 
        gfc_array_i8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_i8);
 
 void
 sminloc1_8_i8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_i8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_i8 (retarray, array, pdim, back);
+#else
       minloc1_8_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 603f57ba2bad361b1aec6fbde2afc96983389f88..557e87616b61643f219cf0377863324fccaac342 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_r10 (gfc_array_i8 * const restrict, 
-       gfc_array_r10 * const restrict, const index_type * const restrict);
+       gfc_array_r10 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_r10);
 
 void
 minloc1_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_r10 (gfc_array_i8 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_r10);
 
 void
 mminloc1_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_r10 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_r10 (gfc_array_i8 * const restrict, 
        gfc_array_r10 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_r10);
 
 void
 sminloc1_8_r10 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r10 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_r10 (retarray, array, pdim, back);
+#else
       minloc1_8_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index cad0d001dc92d9c61b6d2e07ec124698754b14dc..184dd1e098f3883156a915d3e5ffd9948fbc1a62 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_r16 (gfc_array_i8 * const restrict, 
-       gfc_array_r16 * const restrict, const index_type * const restrict);
+       gfc_array_r16 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_r16);
 
 void
 minloc1_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_r16 (gfc_array_i8 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_r16);
 
 void
 mminloc1_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_r16 (gfc_array_i8 * const restrict, 
        gfc_array_r16 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_r16);
 
 void
 sminloc1_8_r16 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r16 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_r16 (retarray, array, pdim, back);
+#else
       minloc1_8_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 15d7482abe5da8f9f500a80884df2ceebf9742fe..fd81020925812a5a739c48a52d7012f3f7d74bbb 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_r4 (gfc_array_i8 * const restrict, 
-       gfc_array_r4 * const restrict, const index_type * const restrict);
+       gfc_array_r4 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_r4);
 
 void
 minloc1_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_r4 (gfc_array_i8 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_r4);
 
 void
 mminloc1_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_r4 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_r4 (gfc_array_i8 * const restrict, 
        gfc_array_r4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_r4);
 
 void
 sminloc1_8_r4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_r4 (retarray, array, pdim, back);
+#else
       minloc1_8_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 7cd1c9d6f5943c554eb7c3d2caffef974cf96402..fc0ff7c907691315a388299b2816bccdbe099315 100644 (file)
@@ -24,19 +24,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 #include "libgfortran.h"
+#include <assert.h>
 
 
 #if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 
 extern void minloc1_8_r8 (gfc_array_i8 * const restrict, 
-       gfc_array_r8 * const restrict, const index_type * const restrict);
+       gfc_array_r8 * const restrict, const index_type * const restrict, GFC_LOGICAL_4 back);
 export_proto(minloc1_8_r8);
 
 void
 minloc1_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
-       const index_type * const restrict pdim)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -51,6 +54,10 @@ minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -214,14 +221,14 @@ minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_r8 (gfc_array_i8 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back);
 export_proto(mminloc1_8_r8);
 
 void
 mminloc1_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -239,6 +246,9 @@ mminloc1_8_r8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -433,14 +443,14 @@ mminloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_r8 (gfc_array_i8 * const restrict, 
        gfc_array_r8 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back);
 export_proto(sminloc1_8_r8);
 
 void
 sminloc1_8_r8 (gfc_array_i8 * const restrict retarray, 
        gfc_array_r8 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -453,7 +463,11 @@ sminloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_r8 (retarray, array, pdim, back);
+#else
       minloc1_8_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 8428db2abb1c8fb09d826706bbbd00a7a6fae2e8..b5b4fd506746a04afa2b9ac2691f706319079db1 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
 }
 
 extern void minloc1_8_s1 (gfc_array_i8 * const restrict, 
-       gfc_array_s1 * const restrict, const index_type * const restrict,
+       gfc_array_s1 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(minloc1_8_s1);
 
 void
 minloc1_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ minloc1_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ minloc1_8_s1 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_s1 (gfc_array_i8 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mminloc1_8_s1);
 
 void
 mminloc1_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mminloc1_8_s1 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mminloc1_8_s1 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_s1 (gfc_array_i8 * const restrict, 
        gfc_array_s1 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc1_8_s1);
 
 void
 sminloc1_8_s1 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s1 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ sminloc1_8_s1 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_s1 (retarray, array, pdim, back, string_len);
+#else
       minloc1_8_s1 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 8042dd230265986b4045825b948530b33223c766..4181630eca276e3383d3a6da4f8410a234c1445b 100644 (file)
@@ -28,7 +28,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
+#define HAVE_BACK_ARG 1
+
 #include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
@@ -40,14 +43,15 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
 }
 
 extern void minloc1_8_s4 (gfc_array_i8 * const restrict, 
-       gfc_array_s4 * const restrict, const index_type * const restrict,
+       gfc_array_s4 * const restrict, const index_type * const restrict , GFC_LOGICAL_4 back,
        gfc_charlen_type);
 export_proto(minloc1_8_s4);
 
 void
 minloc1_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+       const index_type * const restrict pdim, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -62,6 +66,10 @@ minloc1_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -210,14 +218,15 @@ minloc1_8_s4 (gfc_array_i8 * const restrict retarray,
 
 extern void mminloc1_8_s4 (gfc_array_i8 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
+       gfc_array_l1 * const restrict, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(mminloc1_8_s4);
 
 void
 mminloc1_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -235,6 +244,9 @@ mminloc1_8_s4 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -411,14 +423,14 @@ mminloc1_8_s4 (gfc_array_i8 * const restrict retarray,
 
 extern void sminloc1_8_s4 (gfc_array_i8 * const restrict, 
        gfc_array_s4 * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
+       GFC_LOGICAL_4 *, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc1_8_s4);
 
 void
 sminloc1_8_s4 (gfc_array_i8 * const restrict retarray, 
        gfc_array_s4 * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask , GFC_LOGICAL_4 back, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -431,7 +443,11 @@ sminloc1_8_s4 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minloc1_8_s4 (retarray, array, pdim, back, string_len);
+#else
       minloc1_8_s4 (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 841aeeb6e5a7c9ae8928c5730612dbeb071a7a08..3685603ecc27304f18ef126fe1b3e463df932a85 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
 
@@ -38,11 +39,13 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_16 minloc2_16_s1 (gfc_array_s1 * const restrict, gfc_charlen_type);
+extern GFC_INTEGER_16 minloc2_16_s1 (gfc_array_s1 * const restrict, GFC_LOGICAL_4 back,
+       gfc_charlen_type);
 export_proto(minloc2_16_s1);
 
 GFC_INTEGER_16
-minloc2_16_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
+minloc2_16_s1 (gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -51,6 +54,7 @@ minloc2_16_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_1 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -73,12 +77,14 @@ minloc2_16_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_16 mminloc2_16_s1 (gfc_array_s1 * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                   gfc_charlen_type);
 export_proto(mminloc2_16_s1);
 
 GFC_INTEGER_16
 mminloc2_16_s1 (gfc_array_s1 * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -90,6 +96,7 @@ mminloc2_16_s1 (gfc_array_s1 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -139,15 +146,15 @@ mminloc2_16_s1 (gfc_array_s1 * const restrict array,
 }
 
 extern GFC_INTEGER_16 sminloc2_16_s1 (gfc_array_s1 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc2_16_s1);
 
 GFC_INTEGER_16
 sminloc2_16_s1 (gfc_array_s1 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return minloc2_16_s1 (array, len);
+    return minloc2_16_s1 (array, len, back);
   else
     return 0;
 }
index 7b716422e80b101f6b81e76fa440c43344d0175d..256784fd8cef68aa7d009de257db55e754aeabe5 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
 
@@ -38,11 +39,13 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_16 minloc2_16_s4 (gfc_array_s4 * const restrict, gfc_charlen_type);
+extern GFC_INTEGER_16 minloc2_16_s4 (gfc_array_s4 * const restrict, GFC_LOGICAL_4 back,
+       gfc_charlen_type);
 export_proto(minloc2_16_s4);
 
 GFC_INTEGER_16
-minloc2_16_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
+minloc2_16_s4 (gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -51,6 +54,7 @@ minloc2_16_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_4 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -73,12 +77,14 @@ minloc2_16_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_16 mminloc2_16_s4 (gfc_array_s4 * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                   gfc_charlen_type);
 export_proto(mminloc2_16_s4);
 
 GFC_INTEGER_16
 mminloc2_16_s4 (gfc_array_s4 * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -90,6 +96,7 @@ mminloc2_16_s4 (gfc_array_s4 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -139,15 +146,15 @@ mminloc2_16_s4 (gfc_array_s4 * const restrict array,
 }
 
 extern GFC_INTEGER_16 sminloc2_16_s4 (gfc_array_s4 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc2_16_s4);
 
 GFC_INTEGER_16
 sminloc2_16_s4 (gfc_array_s4 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return minloc2_16_s4 (array, len);
+    return minloc2_16_s4 (array, len, back);
   else
     return 0;
 }
index d5b88e17fbc250694912478965544317c45b8a9b..1ba34d1712e2aab6908dfc9146eea8cde46adad0 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
 
@@ -38,11 +39,13 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_4 minloc2_4_s1 (gfc_array_s1 * const restrict, gfc_charlen_type);
+extern GFC_INTEGER_4 minloc2_4_s1 (gfc_array_s1 * const restrict, GFC_LOGICAL_4 back,
+       gfc_charlen_type);
 export_proto(minloc2_4_s1);
 
 GFC_INTEGER_4
-minloc2_4_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
+minloc2_4_s1 (gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -51,6 +54,7 @@ minloc2_4_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_1 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -73,12 +77,14 @@ minloc2_4_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_4 mminloc2_4_s1 (gfc_array_s1 * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                   gfc_charlen_type);
 export_proto(mminloc2_4_s1);
 
 GFC_INTEGER_4
 mminloc2_4_s1 (gfc_array_s1 * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -90,6 +96,7 @@ mminloc2_4_s1 (gfc_array_s1 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -139,15 +146,15 @@ mminloc2_4_s1 (gfc_array_s1 * const restrict array,
 }
 
 extern GFC_INTEGER_4 sminloc2_4_s1 (gfc_array_s1 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc2_4_s1);
 
 GFC_INTEGER_4
 sminloc2_4_s1 (gfc_array_s1 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return minloc2_4_s1 (array, len);
+    return minloc2_4_s1 (array, len, back);
   else
     return 0;
 }
index 62137782e2d949d28046aad98779ba6d90f53d07..cd5053d71ff43a9486745669ec4db3641e408a7d 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
 
@@ -38,11 +39,13 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_4 minloc2_4_s4 (gfc_array_s4 * const restrict, gfc_charlen_type);
+extern GFC_INTEGER_4 minloc2_4_s4 (gfc_array_s4 * const restrict, GFC_LOGICAL_4 back,
+       gfc_charlen_type);
 export_proto(minloc2_4_s4);
 
 GFC_INTEGER_4
-minloc2_4_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
+minloc2_4_s4 (gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -51,6 +54,7 @@ minloc2_4_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_4 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -73,12 +77,14 @@ minloc2_4_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_4 mminloc2_4_s4 (gfc_array_s4 * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                   gfc_charlen_type);
 export_proto(mminloc2_4_s4);
 
 GFC_INTEGER_4
 mminloc2_4_s4 (gfc_array_s4 * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -90,6 +96,7 @@ mminloc2_4_s4 (gfc_array_s4 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -139,15 +146,15 @@ mminloc2_4_s4 (gfc_array_s4 * const restrict array,
 }
 
 extern GFC_INTEGER_4 sminloc2_4_s4 (gfc_array_s4 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc2_4_s4);
 
 GFC_INTEGER_4
 sminloc2_4_s4 (gfc_array_s4 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return minloc2_4_s4 (array, len);
+    return minloc2_4_s4 (array, len, back);
   else
     return 0;
 }
index 7aacd28f7db4cf2c951fb2826b20aecf854ec3a8..5c73d89f8e750873f284d4d784ba9d15937a15de 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
 
@@ -38,11 +39,13 @@ compare_fcn (const GFC_INTEGER_1 *a, const GFC_INTEGER_1 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_8 minloc2_8_s1 (gfc_array_s1 * const restrict, gfc_charlen_type);
+extern GFC_INTEGER_8 minloc2_8_s1 (gfc_array_s1 * const restrict, GFC_LOGICAL_4 back,
+       gfc_charlen_type);
 export_proto(minloc2_8_s1);
 
 GFC_INTEGER_8
-minloc2_8_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
+minloc2_8_s1 (gfc_array_s1 * const restrict array, GFC_LOGICAL_4 back,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -51,6 +54,7 @@ minloc2_8_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_1 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -73,12 +77,14 @@ minloc2_8_s1 (gfc_array_s1 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_8 mminloc2_8_s1 (gfc_array_s1 * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                   gfc_charlen_type);
 export_proto(mminloc2_8_s1);
 
 GFC_INTEGER_8
 mminloc2_8_s1 (gfc_array_s1 * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -90,6 +96,7 @@ mminloc2_8_s1 (gfc_array_s1 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -139,15 +146,15 @@ mminloc2_8_s1 (gfc_array_s1 * const restrict array,
 }
 
 extern GFC_INTEGER_8 sminloc2_8_s1 (gfc_array_s1 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc2_8_s1);
 
 GFC_INTEGER_8
 sminloc2_8_s1 (gfc_array_s1 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return minloc2_8_s1 (array, len);
+    return minloc2_8_s1 (array, len, back);
   else
     return 0;
 }
index c94bc740664e756585b6313e762d4b937b026a51..9b40c9140cb563471966a26750917d4381ce1312 100644 (file)
@@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include "libgfortran.h"
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
 
@@ -38,11 +39,13 @@ compare_fcn (const GFC_INTEGER_4 *a, const GFC_INTEGER_4 *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern GFC_INTEGER_8 minloc2_8_s4 (gfc_array_s4 * const restrict, gfc_charlen_type);
+extern GFC_INTEGER_8 minloc2_8_s4 (gfc_array_s4 * const restrict, GFC_LOGICAL_4 back,
+       gfc_charlen_type);
 export_proto(minloc2_8_s4);
 
 GFC_INTEGER_8
-minloc2_8_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
+minloc2_8_s4 (gfc_array_s4 * const restrict array, GFC_LOGICAL_4 back,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -51,6 +54,7 @@ minloc2_8_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
   const GFC_INTEGER_4 *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -73,12 +77,14 @@ minloc2_8_s4 (gfc_array_s4 * const restrict array, gfc_charlen_type len)
 }
 
 extern GFC_INTEGER_8 mminloc2_8_s4 (gfc_array_s4 * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask, GFC_LOGICAL_4 back,
+                   gfc_charlen_type);
 export_proto(mminloc2_8_s4);
 
 GFC_INTEGER_8
 mminloc2_8_s4 (gfc_array_s4 * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -90,6 +96,7 @@ mminloc2_8_s4 (gfc_array_s4 * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -139,15 +146,15 @@ mminloc2_8_s4 (gfc_array_s4 * const restrict array,
 }
 
 extern GFC_INTEGER_8 sminloc2_8_s4 (gfc_array_s4 * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type);
 export_proto(sminloc2_8_s4);
 
 GFC_INTEGER_8
 sminloc2_8_s4 (gfc_array_s4 * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
 {
   if (mask)
-    return minloc2_8_s4 (array, len);
+    return minloc2_8_s4 (array, len, back);
   else
     return 0;
 }
index f57c5abbad24a8bdbc2f7d44a06607c54857311f..7bb6f81b0e7241e8f927d435ead484821b2efc31 100644 (file)
@@ -51,6 +51,10 @@ minval_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_i1 (retarray, array, pdim, back);
+#else
       minval_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 11781a6f983b8cdefa843ef6ff33afa750972431..b2608bc102dfde845a19e14c2c1026f37f5e917b 100644 (file)
@@ -51,6 +51,10 @@ minval_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_i16 (retarray, array, pdim, back);
+#else
       minval_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index b7869858d37ce6c2687e3f66007a551cbd425e17..6539ae10b6013563fe68fe23d22b938aa0bb11e2 100644 (file)
@@ -51,6 +51,10 @@ minval_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_i2 (retarray, array, pdim, back);
+#else
       minval_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index ecd0b4e9d75e854186667532b9cf7d8c1a9b74c3..e2c16d2e8dab6475aef634077ab270e952dc549d 100644 (file)
@@ -51,6 +51,10 @@ minval_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_i4 (retarray, array, pdim, back);
+#else
       minval_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a4e8f78d950abf326a9c8a46d2bb858cefa585d7..9caafd97e04ceb2bf8fc55e784bb897528626bd9 100644 (file)
@@ -51,6 +51,10 @@ minval_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_i8 (retarray, array, pdim, back);
+#else
       minval_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 0ac2185019c4e5a782343c119c01aace41ae0148..308f64b25b30f241881c1dc65b3ced5bd81c04a3 100644 (file)
@@ -51,6 +51,10 @@ minval_r10 (gfc_array_r10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_r10 (gfc_array_r10 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_r10 (gfc_array_r10 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_r10 (retarray, array, pdim, back);
+#else
       minval_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index bee128970d630be99e689ab27c298be2a1ffb311..948aee092cf42c6ae6e9902221fefdcd960e1a29 100644 (file)
@@ -51,6 +51,10 @@ minval_r16 (gfc_array_r16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_r16 (gfc_array_r16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_r16 (gfc_array_r16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_r16 (retarray, array, pdim, back);
+#else
       minval_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index d47a9c8658af0672fa37b6f87b1cb6cdcbe08e5e..b52a3e80f4dc59df0903f41d21dab6a5fc20cbb2 100644 (file)
@@ -51,6 +51,10 @@ minval_r4 (gfc_array_r4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_r4 (gfc_array_r4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_r4 (gfc_array_r4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_r4 (retarray, array, pdim, back);
+#else
       minval_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 05528470e8de0fea3aff4c31ffeb57ac55608424..34caf05fc0c68ef695cf7bc71f50df0222019240 100644 (file)
@@ -51,6 +51,10 @@ minval_r8 (gfc_array_r8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -232,6 +236,9 @@ mminval_r8 (gfc_array_r8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -441,7 +448,11 @@ sminval_r8 (gfc_array_r8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      minval_r8 (retarray, array, pdim, back);
+#else
       minval_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 37b3a879cd92c46d1d701ade638ce9707c2d5a0e..b6e5a4a51d300b64e3aaebe9b6bd5c9f018400fc 100644 (file)
@@ -54,6 +54,10 @@ norm2_r10 (gfc_array_r10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index faa06ba4d000c488bf7c02a607248f91d53b22b9..32237dbd6d8c994dfeb59dad812fb70b81c0d152 100644 (file)
@@ -58,6 +58,10 @@ norm2_r16 (gfc_array_r16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index 22a006b8a3597b62a76f03b88d033e3b4b9e4e75..504d31306e9ba886e69bb39319d457031a554171 100644 (file)
@@ -54,6 +54,10 @@ norm2_r4 (gfc_array_r4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index 7b2a5ae0d7d06d1c384a304a5cb78443365fddda..60e707f920685dd8ee8b917183d5a337200e608f 100644 (file)
@@ -54,6 +54,10 @@ norm2_r8 (gfc_array_r8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index fe4e5c8245dfec2a096c4ddf5b87d9b424014c64..292079942503b1bf83c847edbd42a2fb277bed5e 100644 (file)
@@ -51,6 +51,10 @@ parity_l1 (gfc_array_l1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index b74882cc6d0dab7b5ca0ab369ad69afc116ab831..c1ac0b26f051974ff03651acfe84f961b49a3854 100644 (file)
@@ -51,6 +51,10 @@ parity_l16 (gfc_array_l16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index 9c0b0eb0f3962a8570b3018d5ed0efa334e59cf6..c588e721a6eadeb62ad9a83db6bbfb2358993e3b 100644 (file)
@@ -51,6 +51,10 @@ parity_l2 (gfc_array_l2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index 7506605e67ea4b8e147b01272dedb56d1667726b..0acb039c1af84c07922f681b3995cacca5723a44 100644 (file)
@@ -51,6 +51,10 @@ parity_l4 (gfc_array_l4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index 273c27285ed0b4fccd0fb8138dc249da7ad86b47..84623dffe1b178df9fcdffdc852edebc4c0d196b 100644 (file)
@@ -51,6 +51,10 @@ parity_l8 (gfc_array_l8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
index d78bab99765d62cb21968a62c871b22c016dbf2c..38e8251861e4ad6a114e54e4871d7aaae4793bc8 100644 (file)
@@ -51,6 +51,10 @@ product_c10 (gfc_array_c10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_c10 (gfc_array_c10 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_c10 (gfc_array_c10 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_c10 (retarray, array, pdim, back);
+#else
       product_c10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 7b6b1eedb5f31088b261535ef1d4c0ec57f54f17..d1c04ec9793ed6eafbffee38bc0c1072bba22264 100644 (file)
@@ -51,6 +51,10 @@ product_c16 (gfc_array_c16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_c16 (gfc_array_c16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_c16 (gfc_array_c16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_c16 (retarray, array, pdim, back);
+#else
       product_c16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index ddb28bc5e81ca9e673a1f6c331ec2141c16876dd..d19cfaf6d895676c70a0500b1021a088aea49edc 100644 (file)
@@ -51,6 +51,10 @@ product_c4 (gfc_array_c4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_c4 (gfc_array_c4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_c4 (gfc_array_c4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_c4 (retarray, array, pdim, back);
+#else
       product_c4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e1705bc9c3cb5220e3e6c519344777a8cbec36be..ed1e12afba755d2b078c2838cf785a76d4776d1d 100644 (file)
@@ -51,6 +51,10 @@ product_c8 (gfc_array_c8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_c8 (gfc_array_c8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_c8 (gfc_array_c8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_c8 (retarray, array, pdim, back);
+#else
       product_c8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 38f6f212d02eec9c19253397cc5448de3079d3b3..2e86e99e569d3b042e0530e19fb8183f856bfe57 100644 (file)
@@ -51,6 +51,10 @@ product_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_i1 (retarray, array, pdim, back);
+#else
       product_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 58c51fb6b2e1ab20470242795acce7ceaf61fc15..f23890ef740dccb3f98a6f457a26e856ffffe2cd 100644 (file)
@@ -51,6 +51,10 @@ product_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_i16 (retarray, array, pdim, back);
+#else
       product_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index b91ca7572954cc4126e500a6561aad93761449b3..762e5486ac6b404aea04dba335f813f26f0d9138 100644 (file)
@@ -51,6 +51,10 @@ product_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_i2 (retarray, array, pdim, back);
+#else
       product_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 246dc7e129b7ed8f28d951951f1298ac41323a28..ecf047029d5c3d2e693eb284e05ae855827db63b 100644 (file)
@@ -51,6 +51,10 @@ product_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_i4 (retarray, array, pdim, back);
+#else
       product_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a0e264f74c8a239345fd0bc0128c6a50bd1113b1..a9530ec6907706499ddeedb8a45d5fe8a31fc915 100644 (file)
@@ -51,6 +51,10 @@ product_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_i8 (retarray, array, pdim, back);
+#else
       product_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index decefd7509e4a33ab0cf09ce9cd9bda6e9841f85..613ed18e9e40926dbc0e0401b5cd8c77e57b8026 100644 (file)
@@ -51,6 +51,10 @@ product_r10 (gfc_array_r10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_r10 (gfc_array_r10 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_r10 (gfc_array_r10 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_r10 (retarray, array, pdim, back);
+#else
       product_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 66f3ef91d97a2f0fab2c0f312fb45fdc9e682c05..9befd51edc4b326e85b9a5fd2365bc37940f1231 100644 (file)
@@ -51,6 +51,10 @@ product_r16 (gfc_array_r16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_r16 (gfc_array_r16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_r16 (gfc_array_r16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_r16 (retarray, array, pdim, back);
+#else
       product_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 0f5f1f5d4ce75ba8c531786d554276473d48ca40..5e356ee8bfca03916a314a68ffdd7c14518c6a17 100644 (file)
@@ -51,6 +51,10 @@ product_r4 (gfc_array_r4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_r4 (gfc_array_r4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_r4 (gfc_array_r4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_r4 (retarray, array, pdim, back);
+#else
       product_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 75ed99c501a4d84629a8a196cc9aed594272c2d5..4e98cfa113ba5b6342276a10f5882860ff90c949 100644 (file)
@@ -51,6 +51,10 @@ product_r8 (gfc_array_r8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ mproduct_r8 (gfc_array_r8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ sproduct_r8 (gfc_array_r8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      product_r8 (retarray, array, pdim, back);
+#else
       product_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 9083745614cfd67b76e1c4c3e18f5432bd0992ac..6923594e01fcb0d474076370452f27c49b89f74c 100644 (file)
@@ -51,6 +51,10 @@ sum_c10 (gfc_array_c10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_c10 (gfc_array_c10 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_c10 (gfc_array_c10 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_c10 (retarray, array, pdim, back);
+#else
       sum_c10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 15c2d6b4f10af94667e8a49fb22d3e1f7fb6ce80..4ed50d04dd816a3a6d25dca43928251f8e155f2e 100644 (file)
@@ -51,6 +51,10 @@ sum_c16 (gfc_array_c16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_c16 (gfc_array_c16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_c16 (gfc_array_c16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_c16 (retarray, array, pdim, back);
+#else
       sum_c16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 654ed6098a06559cd4bc9289ee8dc4fd0f715c56..9d5516a3b4a8d2e26cf8cabf91d2699c22b346a6 100644 (file)
@@ -51,6 +51,10 @@ sum_c4 (gfc_array_c4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_c4 (gfc_array_c4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_c4 (gfc_array_c4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_c4 (retarray, array, pdim, back);
+#else
       sum_c4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 1313c5d72ae0eddd02594c71d8c453f54ae9d58d..84684cbcd2e209fc7ff5d4a713488b0a723622b3 100644 (file)
@@ -51,6 +51,10 @@ sum_c8 (gfc_array_c8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_c8 (gfc_array_c8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_c8 (gfc_array_c8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_c8 (retarray, array, pdim, back);
+#else
       sum_c8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a6d3043ef6bc01b75065eaee754646adb1314e43..f4407028de57898a79cab8c10649ad8795ab1179 100644 (file)
@@ -51,6 +51,10 @@ sum_i1 (gfc_array_i1 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_i1 (gfc_array_i1 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_i1 (gfc_array_i1 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_i1 (retarray, array, pdim, back);
+#else
       sum_i1 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index d8f80b0bcda53641131212643ab61109104d1f43..570f8f2c4410ab0eff647c78e43923816e2ee105 100644 (file)
@@ -51,6 +51,10 @@ sum_i16 (gfc_array_i16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_i16 (gfc_array_i16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_i16 (gfc_array_i16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_i16 (retarray, array, pdim, back);
+#else
       sum_i16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 49209c4d68133bcfabd9290fa95892ec161d8352..ea70d50888672398e2b50172f2c3133de733c5ee 100644 (file)
@@ -51,6 +51,10 @@ sum_i2 (gfc_array_i2 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_i2 (gfc_array_i2 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_i2 (gfc_array_i2 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_i2 (retarray, array, pdim, back);
+#else
       sum_i2 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 39954d179cf8c791606f65580f9b7c95a7bad5ca..4915ec9feb44868393759a7ce7519d1f6fdece63 100644 (file)
@@ -51,6 +51,10 @@ sum_i4 (gfc_array_i4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_i4 (gfc_array_i4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_i4 (gfc_array_i4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_i4 (retarray, array, pdim, back);
+#else
       sum_i4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 6fb7d9b967cf258613719b9e1407aa6a34a36c8c..53f6ec24fd4896bec671597caee14614cf7ecc16 100644 (file)
@@ -51,6 +51,10 @@ sum_i8 (gfc_array_i8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_i8 (gfc_array_i8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_i8 (gfc_array_i8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_i8 (retarray, array, pdim, back);
+#else
       sum_i8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index dcafdec8d8e86cfd62a3255cfb4603177f56cd68..9552ed84cc8858abd7d67df1e549984cf529e9b4 100644 (file)
@@ -51,6 +51,10 @@ sum_r10 (gfc_array_r10 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_r10 (gfc_array_r10 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_r10 (gfc_array_r10 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_r10 (retarray, array, pdim, back);
+#else
       sum_r10 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index e230e6107c736fb7263c00e1966dbf383915814f..6c8320691bfebc08b12dccc0ae4914c25d58a5c3 100644 (file)
@@ -51,6 +51,10 @@ sum_r16 (gfc_array_r16 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_r16 (gfc_array_r16 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_r16 (gfc_array_r16 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_r16 (retarray, array, pdim, back);
+#else
       sum_r16 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a2bca49e35cf7d6855e5513e59e8b09690d2eb09..1595336bf309cd39335084406663695a15855508 100644 (file)
@@ -51,6 +51,10 @@ sum_r4 (gfc_array_r4 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_r4 (gfc_array_r4 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_r4 (gfc_array_r4 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_r4 (retarray, array, pdim, back);
+#else
       sum_r4 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index 7c2836e54598cd176015d748444cc407b2ba5a5d..7c8a186ce761bc81e9e4769b0e65591be1d084fb 100644 (file)
@@ -51,6 +51,10 @@ sum_r8 (gfc_array_r8 * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -218,6 +222,9 @@ msum_r8 (gfc_array_r8 * const restrict retarray,
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -399,7 +406,11 @@ ssum_r8 (gfc_array_r8 * const restrict retarray,
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      sum_r8 (retarray, array, pdim, back);
+#else
       sum_r8 (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index c62a1f734cb643a89fa223ea9d75b4fa38cef16d..9711925ed9943df27a1d789de94ed7d2d8c14687 100644 (file)
@@ -13,23 +13,27 @@ compare_fcn (const atype_name *a, const atype_name *b, gfc_charlen_type n)
 
 }
 
-extern void name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, gfc_charlen_type len);
-export_proto(name`'rtype_qual`_'atype_code);
+extern void name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array'back_arg`, gfc_charlen_type len);
+export_proto('name`'rtype_qual`_'atype_code);
 
 void
-name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, gfc_charlen_type len)
+name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array'back_arg`, gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type sstride[GFC_MAX_DIMENSIONS];
   index_type dstride;
-  const atype_name *base;
+  const 'atype_name *base;
   rtype_name * restrict dest;
   index_type rank;
   index_type n;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
+
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -112,27 +116,32 @@ define(FINISH_FOREACH_FUNCTION,
 }')dnl
 define(START_MASKED_FOREACH_FUNCTION,
 `
-extern void `m'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, gfc_array_l1 * const restrict, gfc_charlen_type len);
-export_proto(`m'name`'rtype_qual`_'atype_code);
+extern void `m'name`'rtype_qual`_'atype_code` ('rtype` * const restrict, 
+       'atype` * const restrict, gfc_array_l1 * const restrict 'back_arg`,
+       gfc_charlen_type len);
+export_proto(m'name`'rtype_qual`_'atype_code`);
 
 void
-`m'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array,
-       gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+m'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array,
+       gfc_array_l1 * const restrict mask'back_arg`,
+       gfc_charlen_type len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type sstride[GFC_MAX_DIMENSIONS];
   index_type mstride[GFC_MAX_DIMENSIONS];
   index_type dstride;
-  rtype_name *dest;
+  'rtype_name *dest;
   const atype_name *base;
   GFC_LOGICAL_1 *mbase;
   int rank;
   index_type n;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -243,23 +252,29 @@ $2
 FINISH_MASKED_FOREACH_FUNCTION')dnl
 define(SCALAR_FOREACH_FUNCTION,
 `
-extern void `s'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, GFC_LOGICAL_4 *, gfc_charlen_type len);
-export_proto(`s'name`'rtype_qual`_'atype_code);
+extern void `s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict, 
+       'atype` * const restrict, GFC_LOGICAL_4 *'back_arg`,
+       gfc_charlen_type len);
+export_proto(s'name`'rtype_qual`_'atype_code);
 
 void
-`s'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array,
-       GFC_LOGICAL_4 * mask, gfc_charlen_type len)
+`s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array,
+       GFC_LOGICAL_4 * mask'back_arg`,
+       gfc_charlen_type len)
 {
   index_type rank;
   index_type dstride;
   index_type n;
-  rtype_name *dest;
+  'rtype_name *dest;
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG    
+      name`'rtype_qual`_'atype_code (retarray, array, back, len);
+#else
       name`'rtype_qual`_'atype_code (retarray, array, len);
+#endif
       return;
     }
 
index 2b9e7dd73f3355162d9e841c9d3f31884089c824..e6365ccc3ef4316858e69a36942b975d783ecf81 100644 (file)
@@ -5,12 +5,12 @@ dnl Distributed under the GNU GPL with exception.  See COPYING for details.
 define(START_FOREACH_FUNCTION,
 `
 extern void name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array);
+       atype * const restrict array, GFC_LOGICAL_4);
 export_proto(name`'rtype_qual`_'atype_code);
 
 void
 name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array)
+       atype * const restrict array, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -21,6 +21,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
   index_type rank;
   index_type n;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -104,13 +105,14 @@ define(FINISH_FOREACH_FUNCTION,
 define(START_MASKED_FOREACH_FUNCTION,
 `
 extern void `m'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, gfc_array_l1 * const restrict);
+       atype * const restrict, gfc_array_l1 * const restrict,
+       GFC_LOGICAL_4);
 export_proto(`m'name`'rtype_qual`_'atype_code);
 
 void
 `m'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
        atype * const restrict array,
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask, GFC_LOGICAL_4 back)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
@@ -124,6 +126,7 @@ void
   index_type n;
   int mask_kind;
 
+  assert(back == 0);
   rank = GFC_DESCRIPTOR_RANK (array);
   if (rank <= 0)
     runtime_error ("Rank of array needs to be > 0");
@@ -235,13 +238,13 @@ FINISH_MASKED_FOREACH_FUNCTION')dnl
 define(SCALAR_FOREACH_FUNCTION,
 `
 extern void `s'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, GFC_LOGICAL_4 *);
+       atype * const restrict, GFC_LOGICAL_4 *, GFC_LOGICAL_4);
 export_proto(`s'name`'rtype_qual`_'atype_code);
 
 void
 `s'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
        atype * const restrict array,
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask, GFC_LOGICAL_4 back)
 {
   index_type rank;
   index_type dstride;
@@ -250,7 +253,7 @@ void
 
   if (*mask)
     {
-      name`'rtype_qual`_'atype_code (retarray, array);
+      name`'rtype_qual`_'atype_code (retarray, array, back);
       return;
     }
 
index 0f0c28fa4167332207f1de4ccac215ea976c0bdf..9b4d96ab62246498dc7f26a6016c0cb383f24377 100644 (file)
@@ -19,6 +19,7 @@ dnl You should not return or break from the inner loop of the implementation.
 dnl Care should also be taken to avoid using the names defined in iparm.m4
 define(START_ARRAY_FUNCTION,
 `#include <string.h>
+#include <assert.h>
 
 static inline int
 compare_fcn (const atype_name *a, const atype_name *b, gfc_charlen_type n)
@@ -29,21 +30,22 @@ compare_fcn (const atype_name *a, const atype_name *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern void name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, const index_type * const restrict,
+extern void name`'rtype_qual`_'atype_code (rtype` * const restrict, 
+       'atype` * const restrict, const index_type * const restrict 'back_arg`,
        gfc_charlen_type);
-export_proto(name`'rtype_qual`_'atype_code);
+export_proto('name`'rtype_qual`_'atype_code`);
 
 void
-name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, 
-       const index_type * const restrict pdim, gfc_charlen_type string_len)
+'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array, 
+       const index_type * const restrict pdim'back_arg`,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type sstride[GFC_MAX_DIMENSIONS];
   index_type dstride[GFC_MAX_DIMENSIONS];
-  const atype_name * restrict base;
+  const 'atype_name * restrict base;
   rtype_name * restrict dest;
   index_type rank;
   index_type n;
@@ -52,6 +54,10 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -192,23 +198,24 @@ define(FINISH_ARRAY_FUNCTION,
 }')dnl
 define(START_MASKED_ARRAY_FUNCTION,
 `
-extern void `m'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict, gfc_charlen_type);
-export_proto(`m'name`'rtype_qual`_'atype_code);
+extern void `m'name`'rtype_qual`_'atype_code` ('rtype` * const restrict, 
+       'atype` * const restrict, const index_type * const restrict,
+       gfc_array_l1 * const restrict'back_arg`, gfc_charlen_type);
+export_proto(m'name`'rtype_qual`_'atype_code`);
 
 void
-`m'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, 
+m'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask, gfc_charlen_type string_len)
+       gfc_array_l1 * const restrict mask'back_arg`,
+       gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type sstride[GFC_MAX_DIMENSIONS];
   index_type dstride[GFC_MAX_DIMENSIONS];
   index_type mstride[GFC_MAX_DIMENSIONS];
-  rtype_name * restrict dest;
+  'rtype_name * restrict dest;
   const atype_name * restrict base;
   const GFC_LOGICAL_1 * restrict mbase;
   index_type rank;
@@ -219,6 +226,9 @@ void
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -377,21 +387,21 @@ define(FINISH_MASKED_ARRAY_FUNCTION,
 }')dnl
 define(SCALAR_ARRAY_FUNCTION,
 `
-extern void `s'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *, gfc_charlen_type);
-export_proto(`s'name`'rtype_qual`_'atype_code);
+extern void `s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict, 
+       'atype` * const restrict, const index_type * const restrict,
+       GFC_LOGICAL_4 *'back_arg`, gfc_charlen_type);
+export_proto(s'name`'rtype_qual`_'atype_code`);
 
 void
-`s'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, 
+s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask, gfc_charlen_type string_len)
+       GFC_LOGICAL_4 * mask 'back_arg`, gfc_charlen_type string_len)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type dstride[GFC_MAX_DIMENSIONS];
-  rtype_name * restrict dest;
+  'rtype_name * restrict dest;
   index_type rank;
   index_type n;
   index_type dim;
@@ -399,7 +409,11 @@ void
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      name`'rtype_qual`_'atype_code (retarray, array, pdim, back, string_len);
+#else
       name`'rtype_qual`_'atype_code (retarray, array, pdim, string_len);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index fa10a8b84cb968c88d1ab809f8e8dc4d017889bd..8df072da033fc3272a596380e772ce660d815389 100644 (file)
@@ -20,19 +20,19 @@ dnl Care should also be taken to avoid using the names defined in iparm.m4
 define(START_ARRAY_FUNCTION,
 `
 extern void name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, const index_type * const restrict);
-export_proto(name`'rtype_qual`_'atype_code);
+       atype` * const restrict, const 'index_type` * const restrict'back_arg`);
+export_proto('name`'rtype_qual`_'atype_code);
 
 void
-name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, 
-       const index_type * const restrict pdim)
+name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array, 
+       const index_type * const restrict pdim'back_arg`)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type sstride[GFC_MAX_DIMENSIONS];
   index_type dstride[GFC_MAX_DIMENSIONS];
-  const atype_name * restrict base;
+  const 'atype_name * restrict base;
   rtype_name * restrict dest;
   index_type rank;
   index_type n;
@@ -41,6 +41,10 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
   index_type dim;
   int continue_loop;
 
+#ifdef HAVE_BACK_ARG
+  assert(back == 0);
+#endif
+
   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
   dim = (*pdim) - 1;
@@ -181,23 +185,23 @@ define(FINISH_ARRAY_FUNCTION,
 }')dnl
 define(START_MASKED_ARRAY_FUNCTION,
 `
-extern void `m'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, const index_type * const restrict,
-       gfc_array_l1 * const restrict);
-export_proto(`m'name`'rtype_qual`_'atype_code);
+extern void `m'name`'rtype_qual`_'atype_code` ('rtype` * const restrict, 
+       'atype` * const restrict, const 'index_type` * const restrict,
+       gfc_array_l1 * const restrict'back_arg`);
+export_proto(m'name`'rtype_qual`_'atype_code`);
 
 void
-`m'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, 
+m'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array, 
        const index_type * const restrict pdim, 
-       gfc_array_l1 * const restrict mask)
+       gfc_array_l1 * const restrict mask'back_arg`)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type sstride[GFC_MAX_DIMENSIONS];
   index_type dstride[GFC_MAX_DIMENSIONS];
   index_type mstride[GFC_MAX_DIMENSIONS];
-  rtype_name * restrict dest;
+  'rtype_name * restrict dest;
   const atype_name * restrict base;
   const GFC_LOGICAL_1 * restrict mbase;
   index_type rank;
@@ -208,6 +212,9 @@ void
   index_type mdelta;
   int mask_kind;
 
+#ifdef HAVE_BACK_ARG
+  assert (back == 0);
+#endif
   dim = (*pdim) - 1;
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
 
@@ -366,21 +373,21 @@ define(FINISH_MASKED_ARRAY_FUNCTION,
 }')dnl
 define(SCALAR_ARRAY_FUNCTION,
 `
-extern void `s'name`'rtype_qual`_'atype_code (rtype * const restrict, 
-       atype * const restrict, const index_type * const restrict,
-       GFC_LOGICAL_4 *);
-export_proto(`s'name`'rtype_qual`_'atype_code);
+extern void `s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict, 
+       'atype` * const restrict, const index_type * const restrict,
+       GFC_LOGICAL_4 *'back_arg`);
+export_proto(s'name`'rtype_qual`_'atype_code);
 
 void
-`s'name`'rtype_qual`_'atype_code (rtype * const restrict retarray, 
-       atype * const restrict array, 
+`s'name`'rtype_qual`_'atype_code` ('rtype` * const restrict retarray, 
+       'atype` * const restrict array, 
        const index_type * const restrict pdim, 
-       GFC_LOGICAL_4 * mask)
+       GFC_LOGICAL_4 * mask'back_arg`)
 {
   index_type count[GFC_MAX_DIMENSIONS];
   index_type extent[GFC_MAX_DIMENSIONS];
   index_type dstride[GFC_MAX_DIMENSIONS];
-  rtype_name * restrict dest;
+  'rtype_name * restrict dest;
   index_type rank;
   index_type n;
   index_type dim;
@@ -388,7 +395,11 @@ void
 
   if (*mask)
     {
+#ifdef HAVE_BACK_ARG
+      name`'rtype_qual`_'atype_code (retarray, array, pdim, back);
+#else
       name`'rtype_qual`_'atype_code (retarray, array, pdim);
+#endif
       return;
     }
   /* Make dim zero based to avoid confusion.  */
index a5596c98a16636208ffe08e93dbfe9d30241866b..23f05ce443453cb55df1ca3ceafc3b8bc14a5fab 100644 (file)
@@ -36,3 +36,5 @@ define(`upcase', `translit(`$*', `a-z', `A-Z')')dnl
 define(`u_name',`regexp(upcase(name),`\([A-Z]*\)',`\1')')dnl
 define(rtype_ccode,ifelse(rtype_letter,`i',rtype_kind,rtype_code))dnl
 define(initval,ifelse(index(name,`maxval'),0,0,index(name,`minval'),0,255))dnl
+define(back_arg,ifelse(index(name,`maxloc'),0,``, GFC_LOGICAL_4 back'',dnl
+index(name,`minloc'),0,``, GFC_LOGICAL_4 back''))dnl
index 05e50e920527de41faed43475b4366a2c5b61bac..98d898f86a7ea72d99d0ad55ecce534378634ebb 100644 (file)
@@ -23,7 +23,8 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-#include "libgfortran.h"'
+#include "libgfortran.h"
+#include <assert.h>'
 
 include(iparm.m4)dnl
 include(iforeach.m4)dnl
index 95bba3c8593467650e34541312fc0bda197dc21f..3c30a666feb3fe57fa62bddfb3452d383df6bf9f 100644 (file)
@@ -34,6 +34,8 @@ include(iforeach-s.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
 
+#define HAVE_BACK_ARG 1
+
 FOREACH_FUNCTION(
 `  const atype_name *maxval;
    maxval = base;'
index 37e07726b03bbffa7d6236699317cb1048464c39..324a699c0bb9d6b83907c1508ba4f0e92f850697 100644 (file)
@@ -23,13 +23,16 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-#include "libgfortran.h"'
+#include "libgfortran.h"
+#include <assert.h>'
 
 include(iparm.m4)dnl
 include(ifunction.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
 
+#define HAVE_BACK_ARG 1
+
 ARRAY_FUNCTION(0,
 `      atype_name maxval;
 #if defined ('atype_inf`)
index 31b544476c5e47f6de5c00e80a4fc248c72158c4..23da4abf068980aa96433f1ae6743f55c4845ad6 100644 (file)
@@ -30,6 +30,8 @@ include(ifunction-s.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
 
+#define HAVE_BACK_ARG 1
+
 ARRAY_FUNCTION(0,
 `      const atype_name *maxval;
        maxval = base;
index 4af5eeb9a139e20c663973d22e3591176b71fee1..5138f696ec373426712048960abe5a29b1f5a90a 100644 (file)
@@ -25,7 +25,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #include "libgfortran.h"
 #include <stdlib.h>
-#include <string.h>'
+#include <string.h>
+#include <assert.h>'
 include(iparm.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)
@@ -39,12 +40,12 @@ compare_fcn (const 'atype_name` *a, const 'atype_name` *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern 'rtype_name` 'name`'rtype_qual`_'atype_code` ('atype` * const restrict,
+extern 'rtype_name` 'name`'rtype_qual`_'atype_code` ('atype` * const restrict'back_arg`,
        gfc_charlen_type);
 export_proto('name`'rtype_qual`_'atype_code`);
 
 'rtype_name`
-'name`'rtype_qual`_'atype_code` ('atype` * const restrict array, gfc_charlen_type len)
+'name`'rtype_qual`_'atype_code` ('atype` * const restrict array'back_arg`, gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -53,6 +54,7 @@ export_proto('name`'rtype_qual`_'atype_code`);
   const 'atype_name` *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -75,12 +77,13 @@ export_proto('name`'rtype_qual`_'atype_code`);
 }
 
 extern 'rtype_name` m'name`'rtype_qual`_'atype_code` ('atype` * const restrict,
-                               gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                               gfc_array_l1 *const restrict mask'back_arg`,
+                       gfc_charlen_type);
 export_proto(m'name`'rtype_qual`_'atype_code`);
 
 'rtype_name`
 m'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
-                                gfc_array_l1 * const restrict mask,
+                                gfc_array_l1 * const restrict mask'back_arg`,
                                 gfc_charlen_type len)
 {
   index_type ret;
@@ -93,6 +96,7 @@ m'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -142,15 +146,15 @@ m'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
 }
 
 extern 'rtype_name` s'name`'rtype_qual`_'atype_code` ('atype` * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type);
 export_proto(s'name`'rtype_qual`_'atype_code`);
 
 'rtype_name`
 s'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type len)
 {
   if (mask)
-    return 'name`'rtype_qual`_'atype_code` (array, len);
+    return 'name`'rtype_qual`_'atype_code` (array, len, back);
   else
     return 0;
 }
index e40821ed19d8dad0197b0df37cd9c8c6d80e0b9b..78c60d979eea1432e59e6742502e9a2f07b86ed4 100644 (file)
@@ -23,7 +23,8 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-#include "libgfortran.h"'
+#include "libgfortran.h"
+#include <assert.h>'
 
 include(iparm.m4)dnl
 include(iforeach.m4)dnl
index 3b3fcf5cb7c9d1d0ec40e8c160b87a9250d7aec0..c4b9f461ac8871297f0eee464b1c7c9b274ed0bf 100644 (file)
@@ -34,6 +34,8 @@ include(iforeach-s.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
 
+#define HAVE_BACK_ARG 1
+
 FOREACH_FUNCTION(
 `  const atype_name *minval;
    minval = base;'
index fafa1a9a03577e66c3f6313611a00d3986b09f27..ebf52f09d5f9bc9f49101694baa312043400f019 100644 (file)
@@ -23,13 +23,16 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-#include "libgfortran.h"'
+#include "libgfortran.h"
+#include <assert.h>'
 
 include(iparm.m4)dnl
 include(ifunction.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
 
+#define HAVE_BACK_ARG 1
+
 ARRAY_FUNCTION(0,
 `      atype_name minval;
 #if defined ('atype_inf`)
index f2dc8c3e33db2603a68d2c8b03dded2a2097152f..6e46631ab8b1955d917e89fcec6edec8a77a4238 100644 (file)
@@ -30,6 +30,8 @@ include(ifunction-s.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
 
+#define HAVE_BACK_ARG 1
+
 ARRAY_FUNCTION(0,
 `      const atype_name *minval;
        minval = base;
index c4855676c324ff01186b1ac882da5b6cce7e4854..2df71bb34b94940fb99bf6d0b1458c6658672ae9 100644 (file)
@@ -25,7 +25,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #include "libgfortran.h"
 #include <stdlib.h>
-#include <string.h>'
+#include <string.h>
+#include <assert.h>'
 include(iparm.m4)dnl
 
 `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)
@@ -39,11 +40,13 @@ compare_fcn (const 'atype_name` *a, const 'atype_name` *b, gfc_charlen_type n)
     return memcmp_char4 (a, b, n);
 }
 
-extern 'rtype_name` 'name`'rtype_qual`_'atype_code` ('atype` * const restrict, gfc_charlen_type);
+extern 'rtype_name` 'name`'rtype_qual`_'atype_code` ('atype` * const restrict'back_arg`,
+       gfc_charlen_type);
 export_proto('name`'rtype_qual`_'atype_code`);
 
 'rtype_name`
-'name`'rtype_qual`_'atype_code` ('atype` * const restrict array, gfc_charlen_type len)
+'name`'rtype_qual`_'atype_code` ('atype` * const restrict array'back_arg`,
+                               gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -52,6 +55,7 @@ export_proto('name`'rtype_qual`_'atype_code`);
   const 'atype_name` *maxval;
   index_type i;
 
+  assert(back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -74,12 +78,14 @@ export_proto('name`'rtype_qual`_'atype_code`);
 }
 
 extern 'rtype_name` m'name`'rtype_qual`_'atype_code` ('atype` * const restrict,
-                    gfc_array_l1 *const restrict mask, gfc_charlen_type);
+                    gfc_array_l1 *const restrict mask'back_arg`,
+                   gfc_charlen_type);
 export_proto(m'name`'rtype_qual`_'atype_code`);
 
 'rtype_name`
 m'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
-                                gfc_array_l1 * const restrict mask, gfc_charlen_type len)
+                                gfc_array_l1 * const restrict mask'back_arg`,
+                                gfc_charlen_type len)
 {
   index_type ret;
   index_type sstride;
@@ -91,6 +97,7 @@ m'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
   int mask_kind;
   index_type mstride;
 
+  assert (back == 0);
   extent = GFC_DESCRIPTOR_EXTENT(array,0);
   if (extent <= 0)
     return 0;
@@ -140,15 +147,15 @@ m'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
 }
 
 extern 'rtype_name` s'name`'rtype_qual`_'atype_code` ('atype` * const restrict,
-                               GFC_LOGICAL_4 *mask, gfc_charlen_type);
+                               GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type);
 export_proto(s'name`'rtype_qual`_'atype_code`);
 
 'rtype_name`
 s'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
-                                GFC_LOGICAL_4 *mask, gfc_charlen_type len)
+                                GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type len)
 {
   if (mask)
-    return 'name`'rtype_qual`_'atype_code` (array, len);
+    return 'name`'rtype_qual`_'atype_code` (array, len, back);
   else
     return 0;
 }