]> gcc.gnu.org Git - gcc.git/commitdiff
[multiple changes]
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 19 Jul 2009 15:07:21 +0000 (15:07 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 19 Jul 2009 15:07:21 +0000 (15:07 +0000)
2009-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/34670
PR libfortran/36874
* Makefile.am:  Add bounds.c
* libgfortran.h (bounds_equal_extents):  Add prototype.
(bounds_iforeach_return):  Likewise.
(bounds_ifunction_return):  Likewise.
(bounds_reduced_extents):  Likewise.
* runtime/bounds.c:  New file.
(bounds_iforeach_return):  New function; correct typo in
error message.
(bounds_ifunction_return):  New function.
(bounds_equal_extents):  New function.
(bounds_reduced_extents):  Likewise.
* intrinsics/cshift0.c (cshift0):  Use new functions
for bounds checking.
* intrinsics/eoshift0.c (eoshift0):  Likewise.
* intrinsics/eoshift2.c (eoshift2):  Likewise.
* m4/iforeach.m4:  Likewise.
* m4/eoshift1.m4:  Likewise.
* m4/eoshift3.m4:  Likewise.
* m4/cshift1.m4:  Likewise.
* m4/ifunction.m4:  Likewise.
* Makefile.in:  Regenerated.
* generated/cshift1_16.c: Regenerated.
* generated/cshift1_4.c: Regenerated.
* generated/cshift1_8.c: Regenerated.
* generated/eoshift1_16.c: Regenerated.
* generated/eoshift1_4.c: Regenerated.
* generated/eoshift1_8.c: Regenerated.
* generated/eoshift3_16.c: Regenerated.
* generated/eoshift3_4.c: Regenerated.
* generated/eoshift3_8.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_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_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/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_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_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/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_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_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/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_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_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/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/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.

2009-07-19   Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/34670
PR libfortran/36874
* gfortran.dg/cshift_bounds_1.f90:  New test.
* gfortran.dg/cshift_bounds_2.f90:  New test.
* gfortran.dg/cshift_bounds_3.f90:  New test.
* gfortran.dg/cshift_bounds_4.f90:  New test.
* gfortran.dg/eoshift_bounds_1.f90:  New test.
* gfortran.dg/maxloc_bounds_4.f90:  Correct typo in error message.
* gfortran.dg/maxloc_bounds_5.f90:  Correct typo in error message.
* gfortran.dg/maxloc_bounds_7.f90:  Correct typo in error message.

From-SVN: r149792

183 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/cshift_bounds_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/cshift_bounds_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/cshift_bounds_3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/cshift_bounds_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/maxloc_bounds_4.f90
gcc/testsuite/gfortran.dg/maxloc_bounds_5.f90
gcc/testsuite/gfortran.dg/maxloc_bounds_7.f90
libgfortran/ChangeLog
libgfortran/Makefile.am
libgfortran/Makefile.in
libgfortran/generated/cshift1_16.c
libgfortran/generated/cshift1_4.c
libgfortran/generated/cshift1_8.c
libgfortran/generated/eoshift1_16.c
libgfortran/generated/eoshift1_4.c
libgfortran/generated/eoshift1_8.c
libgfortran/generated/eoshift3_16.c
libgfortran/generated/eoshift3_4.c
libgfortran/generated/eoshift3_8.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_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_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/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_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_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/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_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_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/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_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_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/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/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/intrinsics/cshift0.c
libgfortran/intrinsics/eoshift0.c
libgfortran/intrinsics/eoshift2.c
libgfortran/libgfortran.h
libgfortran/m4/cshift1.m4
libgfortran/m4/eoshift1.m4
libgfortran/m4/eoshift3.m4
libgfortran/m4/iforeach.m4
libgfortran/m4/ifunction.m4
libgfortran/runtime/bounds.c [new file with mode: 0644]

index 6951c22e5bcad1aba72618b37af2c43133bc4357..a1ba3f1d774e068df8bf881c0a8c3aed239a0199 100644 (file)
@@ -1,3 +1,16 @@
+2009-07-19   Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR libfortran/34670
+       PR libfortran/36874
+       * gfortran.dg/cshift_bounds_1.f90:  New test.
+       * gfortran.dg/cshift_bounds_2.f90:  New test.
+       * gfortran.dg/cshift_bounds_3.f90:  New test.
+       * gfortran.dg/cshift_bounds_4.f90:  New test.
+       * gfortran.dg/eoshift_bounds_1.f90:  New test.
+       * gfortran.dg/maxloc_bounds_4.f90:  Correct typo in error message.
+       * gfortran.dg/maxloc_bounds_5.f90:  Correct typo in error message.
+       * gfortran.dg/maxloc_bounds_7.f90:  Correct typo in error message.
+
 2009-07-19  Jan Hubicka  <jh@suse.cz>
 
        PR tree-optimization/40676
diff --git a/gcc/testsuite/gfortran.dg/cshift_bounds_1.f90 b/gcc/testsuite/gfortran.dg/cshift_bounds_1.f90
new file mode 100644 (file)
index 0000000..5932004
--- /dev/null
@@ -0,0 +1,24 @@
+! { dg-do run }
+! { dg-options "-fbounds-check" }
+! Check that empty arrays are handled correctly in
+! cshift and eoshift
+program main
+  character(len=50) :: line
+  character(len=3), dimension(2,2) :: a, b
+  integer :: n1, n2
+  line = '-1-2'
+  read (line,'(2I2)') n1, n2
+  call foo(a, b, n1, n2)
+  a = 'abc'
+  write (line,'(4A)') eoshift(a, 3)
+  write (line,'(4A)') cshift(a, 3)
+  write (line,'(4A)') cshift(a(:,1:n1), 3)
+  write (line,'(4A)') eoshift(a(1:n2,:), 3)
+end program main
+
+subroutine foo(a, b, n1, n2)
+  character(len=3), dimension(2, n1) :: a
+  character(len=3), dimension(n2, 2) :: b
+  a = cshift(b,1)
+  a = eoshift(b,1)
+end subroutine foo
diff --git a/gcc/testsuite/gfortran.dg/cshift_bounds_2.f90 b/gcc/testsuite/gfortran.dg/cshift_bounds_2.f90
new file mode 100644 (file)
index 0000000..8d7e779
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do run }
+! { dg-options "-fbounds-check" }
+! { dg-shouldfail "Incorrect extent in return value of CSHIFT intrinsic in dimension 2: is 3, should be 2" }
+program main
+  integer, dimension(:,:), allocatable :: a, b
+  allocate (a(2,2))
+  allocate (b(2,3))
+  a = 1
+  b = cshift(a,1)
+end program main
+! { dg-output "Fortran runtime error: Incorrect extent in return value of CSHIFT intrinsic in dimension 2: is 3, should be 2" }
diff --git a/gcc/testsuite/gfortran.dg/cshift_bounds_3.f90 b/gcc/testsuite/gfortran.dg/cshift_bounds_3.f90
new file mode 100644 (file)
index 0000000..33e387f
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do run }
+! { dg-options "-fbounds-check" }
+! { dg-shouldfail "Incorrect size in SHIFT argument of CSHIFT intrinsic: should not be zero-sized" }
+program main
+  real, dimension(1,0) :: a, b, c
+  integer :: sp(3), i
+  a = 4.0
+  sp = 1
+  i = 1
+  b = cshift (a,sp(1:i)) ! Invalid
+end program main
+! { dg-output "Fortran runtime error: Incorrect size in SHIFT argument of CSHIFT intrinsic: should not be zero-sized" }
diff --git a/gcc/testsuite/gfortran.dg/cshift_bounds_4.f90 b/gcc/testsuite/gfortran.dg/cshift_bounds_4.f90
new file mode 100644 (file)
index 0000000..4a3fcfb
--- /dev/null
@@ -0,0 +1,13 @@
+! { dg-do run }
+! { dg-shouldfail "Incorrect extent in SHIFT argument of CSHIFT intrinsic in dimension 1: is 3, should be 2" }
+! { dg-options "-fbounds-check" }
+program main
+  integer, dimension(:,:), allocatable :: a, b
+  integer, dimension(:), allocatable :: sh
+  allocate (a(2,2))
+  allocate (b(2,2))
+  allocate (sh(3))
+  a = 1
+  b = cshift(a,sh)
+end program main
+! { dg-output "Fortran runtime error: Incorrect extent in SHIFT argument of CSHIFT intrinsic in dimension 1: is 3, should be 2" }
diff --git a/gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90 b/gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90
new file mode 100644 (file)
index 0000000..f323415
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do run }
+! { dg-options "-fbounds-check" }
+! { dg-shouldfail "Incorrect size in SHIFT argument of EOSHIFT intrinsic: should not be zero-sized" }
+program main
+  real, dimension(1,0) :: a, b, c
+  integer :: sp(3), i
+  a = 4.0
+  sp = 1
+  i = 1
+  b = eoshift (a,sp(1:i)) ! Invalid
+end program main
+! { dg-output "Fortran runtime error: Incorrect size in SHIFT argument of EOSHIFT intrinsic: should not be zero-sized" }
index 5a38813a72e9d7abed97b3ab6fc36e3b7fb22c12..7ba103d6168ad4e3d32a05c3721fd719ba6a6242 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do run }
 ! { dg-options "-fbounds-check" }
-! { dg-shouldfail "Incorrect extent in return value of MAXLOC intrnisic: is 3, should be 2" }
+! { dg-shouldfail "Incorrect extent in return value of MAXLOC intrinsic: is 3, should be 2" }
 module tst
 contains
   subroutine foo(res)
@@ -18,6 +18,6 @@ program main
   integer :: res(3)
   call foo(res)
 end program main
-! { dg-output "Fortran runtime error: Incorrect extent in return value of MAXLOC intrnisic: is 3, should be 2" }
+! { dg-output "Fortran runtime error: Incorrect extent in return value of MAXLOC intrinsic: is 3, should be 2" }
 ! { dg-final { cleanup-modules "tst" } }
 
index 42e19e5a1e099cb59b7ed27026845f47304cb366..34d06da55ac09cd7d0b8c487d1c5bd3e4c10b20e 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do run }
 ! { dg-options "-fbounds-check" }
-! { dg-shouldfail "Incorrect extent in return value of MAXLOC intrnisic: is 3, should be 2" }
+! { dg-shouldfail "Incorrect extent in return value of MAXLOC intrinsic: is 3, should be 2" }
 module tst
 contains
   subroutine foo(res)
@@ -18,5 +18,5 @@ program main
   integer :: res(3)
   call foo(res)
 end program main
-! { dg-output "Fortran runtime error: Incorrect extent in return value of MAXLOC intrnisic: is 3, should be 2" }
+! { dg-output "Fortran runtime error: Incorrect extent in return value of MAXLOC intrinsic: is 3, should be 2" }
 ! { dg-final { cleanup-modules "tst" } }
index 2194eee35a40854b5bc19e6c3a87a7bbc61b418a..817bf8fac399562aabc47e5a788c7920b81e2945 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do run }
 ! { dg-options "-fbounds-check" }
-! { dg-shouldfail "Incorrect extent in return value of MAXLOC intrnisic: is 3, should be 2" }
+! { dg-shouldfail "Incorrect extent in return value of MAXLOC intrinsic: is 3, should be 2" }
 module tst
 contains
   subroutine foo(res)
@@ -18,5 +18,5 @@ program main
   integer :: res(3)
   call foo(res)
 end program main
-! { dg-output "Fortran runtime error: Incorrect extent in return value of MAXLOC intrnisic: is 3, should be 2" }
+! { dg-output "Fortran runtime error: Incorrect extent in return value of MAXLOC intrinsic: is 3, should be 2" }
 ! { dg-final { cleanup-modules "tst" } }
index 23746839c5de78bf86ce163e5bdf1b1ab39cb516..8231ed1588c18dc1bc11fad861b6d5f98f96ffd4 100644 (file)
@@ -1,3 +1,190 @@
+2009-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR libfortran/34670
+       PR libfortran/36874
+       * Makefile.am:  Add bounds.c
+       * libgfortran.h (bounds_equal_extents):  Add prototype.
+       (bounds_iforeach_return):  Likewise.
+       (bounds_ifunction_return):  Likewise.
+       (bounds_reduced_extents):  Likewise.
+       * runtime/bounds.c:  New file.
+       (bounds_iforeach_return):  New function; correct typo in
+       error message.
+       (bounds_ifunction_return):  New function.
+       (bounds_equal_extents):  New function.
+       (bounds_reduced_extents):  Likewise.
+       * intrinsics/cshift0.c (cshift0):  Use new functions
+       for bounds checking.
+       * intrinsics/eoshift0.c (eoshift0):  Likewise.
+       * intrinsics/eoshift2.c (eoshift2):  Likewise.
+       * m4/iforeach.m4:  Likewise.
+       * m4/eoshift1.m4:  Likewise.
+       * m4/eoshift3.m4:  Likewise.
+       * m4/cshift1.m4:  Likewise.
+       * m4/ifunction.m4:  Likewise.
+       * Makefile.in:  Regenerated.
+       * generated/cshift1_16.c: Regenerated.
+       * generated/cshift1_4.c: Regenerated.
+       * generated/cshift1_8.c: Regenerated.
+       * generated/eoshift1_16.c: Regenerated.
+       * generated/eoshift1_4.c: Regenerated.
+       * generated/eoshift1_8.c: Regenerated.
+       * generated/eoshift3_16.c: Regenerated.
+       * generated/eoshift3_4.c: Regenerated.
+       * generated/eoshift3_8.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_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_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/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_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_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/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_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_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/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_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_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/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/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.
+
 2009-07-17  Janne Blomqvist  <jb@gcc.gnu.org>
            Jerry DeLisle  <jvdelisle@gcc.gnu.org>
                
index f5f92dfb4325a4b98f7ea1362efe0800eef43088..4a974ba00669b667518ba12d9912bde4e5ebf9e1 100644 (file)
@@ -122,6 +122,7 @@ runtime/in_unpack_generic.c
 
 gfor_src= \
 runtime/backtrace.c \
+runtime/bounds.c \
 runtime/compile_options.c \
 runtime/convert_char.c \
 runtime/environ.c \
index ce2b5a21cb12cad2812463e0bdc6d0f999fa750e..7741c324aafb33ca2d76da84b1150c13a01f27ad 100644 (file)
@@ -78,7 +78,7 @@ myexeclibLTLIBRARIES_INSTALL = $(INSTALL)
 toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(myexeclib_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
 libgfortran_la_LIBADD =
-am__libgfortran_la_SOURCES_DIST = runtime/backtrace.c \
+am__libgfortran_la_SOURCES_DIST = runtime/backtrace.c runtime/bounds.c \
        runtime/compile_options.c runtime/convert_char.c \
        runtime/environ.c runtime/error.c runtime/fpu.c runtime/main.c \
        runtime/memory.c runtime/pause.c runtime/stop.c \
@@ -580,9 +580,9 @@ am__libgfortran_la_SOURCES_DIST = runtime/backtrace.c \
        $(srcdir)/generated/misc_specifics.F90 intrinsics/dprod_r8.f90 \
        intrinsics/f2c_specifics.F90 libgfortran_c.c $(filter-out \
        %.c,$(prereq_SRC))
-am__objects_1 = backtrace.lo compile_options.lo convert_char.lo \
-       environ.lo error.lo fpu.lo main.lo memory.lo pause.lo stop.lo \
-       string.lo select.lo
+am__objects_1 = backtrace.lo bounds.lo compile_options.lo \
+       convert_char.lo environ.lo error.lo fpu.lo main.lo memory.lo \
+       pause.lo stop.lo string.lo select.lo
 am__objects_2 = all_l1.lo all_l2.lo all_l4.lo all_l8.lo all_l16.lo
 am__objects_3 = any_l1.lo any_l2.lo any_l4.lo any_l8.lo any_l16.lo
 am__objects_4 = count_1_l.lo count_2_l.lo count_4_l.lo count_8_l.lo \
@@ -1050,6 +1050,7 @@ runtime/in_unpack_generic.c
 
 gfor_src = \
 runtime/backtrace.c \
+runtime/bounds.c \
 runtime/compile_options.c \
 runtime/convert_char.c \
 runtime/environ.c \
@@ -1806,6 +1807,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/associated.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backtrace.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bit_intrinsics.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bounds.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c99_functions.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chdir.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Plo@am__quote@
@@ -2678,6 +2680,13 @@ backtrace.lo: runtime/backtrace.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backtrace.lo `test -f 'runtime/backtrace.c' || echo '$(srcdir)/'`runtime/backtrace.c
 
+bounds.lo: runtime/bounds.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bounds.lo -MD -MP -MF "$(DEPDIR)/bounds.Tpo" -c -o bounds.lo `test -f 'runtime/bounds.c' || echo '$(srcdir)/'`runtime/bounds.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/bounds.Tpo" "$(DEPDIR)/bounds.Plo"; else rm -f "$(DEPDIR)/bounds.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='runtime/bounds.c' object='bounds.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bounds.lo `test -f 'runtime/bounds.c' || echo '$(srcdir)/'`runtime/bounds.c
+
 compile_options.lo: runtime/compile_options.c
 @am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT compile_options.lo -MD -MP -MF "$(DEPDIR)/compile_options.Tpo" -c -o compile_options.lo `test -f 'runtime/compile_options.c' || echo '$(srcdir)/'`runtime/compile_options.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/compile_options.Tpo" "$(DEPDIR)/compile_options.Plo"; else rm -f "$(DEPDIR)/compile_options.Tpo"; exit 1; fi
index df97dfa6b76866f7f17f38dad41e3333452acfd9..b2cb7f17ce47fec325e83816956be3dc695139fa 100644 (file)
@@ -98,6 +98,17 @@ cshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
         }
     }
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "CSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "CSHIFT");
+    }
 
   if (arraysize == 0)
     return;
index f048e8e401f17ccf659c470c75e5d9fdd2d7f4d5..30f3d99dc35430b42e6f258139057997c4ca74ef 100644 (file)
@@ -98,6 +98,17 @@ cshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
         }
     }
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "CSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "CSHIFT");
+    }
 
   if (arraysize == 0)
     return;
index 9667728f3921b5d959cd1efe01d8c55e65a51c33..c3bf473e49c1de572548d2d67268779f4daf1f15 100644 (file)
@@ -98,6 +98,17 @@ cshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
         }
     }
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "CSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "CSHIFT");
+    }
 
   if (arraysize == 0)
     return;
index 02365cc237534f0de4cf73f63f377c6125a12363..a14bd2927153128e7fb1ef86fd365c74c7f89a41 100644 (file)
@@ -62,6 +62,7 @@ eoshift1 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   GFC_INTEGER_16 sh;
   GFC_INTEGER_16 delta;
@@ -82,11 +83,12 @@ eoshift1 (gfc_array_char * const restrict ret,
   extent[0] = 1;
   count[0] = 0;
 
+  arraysize = size0 ((array_t *) array);
   if (ret->data == NULL)
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -104,13 +106,27 @@ eoshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
     }
 
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
+    }
+
+  if (arraysize == 0)
+    return;
+
   n = 0;
   for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
     {
index e703db477861570617677de6b6f192ab26b67126..06bc309c4a845b8c033e6e8bd2c80e5c584eb386 100644 (file)
@@ -62,6 +62,7 @@ eoshift1 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   GFC_INTEGER_4 sh;
   GFC_INTEGER_4 delta;
@@ -82,11 +83,12 @@ eoshift1 (gfc_array_char * const restrict ret,
   extent[0] = 1;
   count[0] = 0;
 
+  arraysize = size0 ((array_t *) array);
   if (ret->data == NULL)
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -104,13 +106,27 @@ eoshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
     }
 
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
+    }
+
+  if (arraysize == 0)
+    return;
+
   n = 0;
   for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
     {
index f8922b344a5c546b92092b9f624ece34d1bb9da1..3e9162d0f085529c9235be56c378f670d20bc8f7 100644 (file)
@@ -62,6 +62,7 @@ eoshift1 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   GFC_INTEGER_8 sh;
   GFC_INTEGER_8 delta;
@@ -82,11 +83,12 @@ eoshift1 (gfc_array_char * const restrict ret,
   extent[0] = 1;
   count[0] = 0;
 
+  arraysize = size0 ((array_t *) array);
   if (ret->data == NULL)
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -104,13 +106,27 @@ eoshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
     }
 
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
+    }
+
+  if (arraysize == 0)
+    return;
+
   n = 0;
   for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
     {
index c3efae9acbfeebea3b7b23b94ec5621e5c773d73..ec21d1ec14dc1cf22455158eab8007d365ab3ab7 100644 (file)
@@ -66,6 +66,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   GFC_INTEGER_16 sh;
   GFC_INTEGER_16 delta;
@@ -76,6 +77,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   soffset = 0;
   roffset = 0;
 
+  arraysize = size0 ((array_t *) array);
   size = GFC_DESCRIPTOR_SIZE(array);
 
   if (pwhich)
@@ -87,7 +89,7 @@ eoshift3 (gfc_array_char * const restrict ret,
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -105,13 +107,26 @@ eoshift3 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
     }
 
+  if (arraysize == 0)
+    return;
 
   extent[0] = 1;
   count[0] = 0;
index 5038c0916bd9404165b7ed8dca7f9dd43852173f..ce4cede1f1d0dd57b2ea1ae5a7028bfff071e516 100644 (file)
@@ -66,6 +66,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   GFC_INTEGER_4 sh;
   GFC_INTEGER_4 delta;
@@ -76,6 +77,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   soffset = 0;
   roffset = 0;
 
+  arraysize = size0 ((array_t *) array);
   size = GFC_DESCRIPTOR_SIZE(array);
 
   if (pwhich)
@@ -87,7 +89,7 @@ eoshift3 (gfc_array_char * const restrict ret,
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -105,13 +107,26 @@ eoshift3 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
     }
 
+  if (arraysize == 0)
+    return;
 
   extent[0] = 1;
   count[0] = 0;
index f745a1d268f771bcfc3f78410808f263e8728ac0..4af36f72bb49e614a525439d95dfbb55a0e85b31 100644 (file)
@@ -66,6 +66,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   GFC_INTEGER_8 sh;
   GFC_INTEGER_8 delta;
@@ -76,6 +77,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   soffset = 0;
   roffset = 0;
 
+  arraysize = size0 ((array_t *) array);
   size = GFC_DESCRIPTOR_SIZE(array);
 
   if (pwhich)
@@ -87,7 +89,7 @@ eoshift3 (gfc_array_char * const restrict ret,
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -105,13 +107,26 @@ eoshift3 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
     }
 
+  if (arraysize == 0)
+    return;
 
   extent[0] = 1;
   count[0] = 0;
index b43f08337c70b64fb6142dce2175c07035be6f48..c9f58e33ea632059630700b1f73a7eaa248ca545 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 26941a741f93ff7952e9a1b908af4dcf6ea4a352..8adbc932279294586d769f959788d7377a2adc01 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index e1d329c583c0bf97146c512aa6026a2d4f7306b6..16849c273636d9df66e4815cfdaf6e95e845405c 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 4d1d0a11acde8bbe02440627c800d003e94a1a96..a6e979ce489a5f52e77b597b4753845a48f494df 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 12147a0e2fad92227cbe74b42f010b8058d47a0d..8e2d4bc0a3519f8094647c504b37de1cca32a2e4 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 33c73083cc7db54cd01fa7d172d22bfc9e33e1c0..d76e947aa0d81fcb7eb5ab27b11915bc4855ff87 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 4f4f290fee92bec665e1bca21c959ce5b8d72b2c..2e6dcf1dcfa7cf7f59b92131ed5cbe1dc8c99938 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 86cedb3a420a5c5a27ae20ce4793bf0018a0223f..5d1fe355fafccaed188d1edda862df988dca2e72 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 378024bff76809881b846b849a24c738e7d62192..dc489f311165568769d09f57557c7f854d10c6a1 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 7475059164c096afd0f50d9487c6d1142bd13a70..7cdd813391ee335c1ab34fdb0ebce8c23401ccbe 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 268f09af8def5d3fc00af74ab101207fe89b3adf..b2bc05307eb525afac56819fbf394196d8acf199 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 47fb135c50d9c50d05c64e860af9a5aba1323f89..fb3b40bd791e3a9fe29fde4e3e4205174acdf245 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 55bc2752131cf6a9139f403c3f93f2013c999f69..2a84c7f48975b35783096d881483527f58924bb0 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index f598f050fd47938988003b4e3b10a505f8b6d26e..2e1fa6daef82171cf702b1e0437e97a02b5b2b4b 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 5c99198b201f59d0ab6721054b91049b899e2aca..934337a6ac02d242e589556a81b354db21a0a8d5 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index c7609c35dc3b4869090406e98ebe8eb26bf8b442..c2660258a312c87d00eced31d41f3d6b79076edb 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 50f3c3b6d1a2593d5597238bcaf83077a98640af..a3499531d27fce0613027f43f68a6298ae31b62d 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 30dc2976c3e352821b5f39a84e201f3a8f648a81..7180bf8ce609fd7813c15823c7cd2984c741fe40 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index eb1737d23e3bc159a91db80a6774da3dd4a3d586..a850603e5c5e212f615545eed80f015d32df1e67 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 6690c2da4b75234180556c2659d7345003fd62e4..73683d89589cd0e3496dca651ec6325ada6d219f 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index b9bb230589f13abd682487d0fcb2eee9b98ee87c..3b8e793e4ceff2a0fde7b11e4e5f161bae89a1ad 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 57781469089ca3257fb468816bc9c9b932e01be9..1b0bc42bf6915afb20ed46955fc9f02fc3e3e4d4 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index ef7dedeb98467af6d665f6d08679e47ec61eb167..5bf95201d7c767e96f19ef691ad3051ab77ed42c 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 0c08d8e803a8debb40b2afd43b5380f637444bb1..28008d4a0c4ebd01e320bbd846002d3e7d2e04eb 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index da61d2b69835cec245222a023efcd15fc41c398e..04bfd57e1fc3f8e943cd0d54f12021d8370b1a5c 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index a26b110220d691742d6f5675f9910e340e8efa9e..238b8699bac668e8bd4072aead590f2d5e9e36b5 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 1198d624c54bd0227283e08d1a26917930f76775..16d9a45331a4427ff585e871b4641cc745ad9016 100644 (file)
@@ -63,21 +63,8 @@ maxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mmaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MAXLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MAXLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MAXLOC");
        }
     }
 
@@ -340,22 +300,10 @@ smaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MAXLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MAXLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index a776f4f1c7ae59aa0c8706e917764117d4d7fcf1..9be5cdd6d450a31efc1ffca31770e44c7876a1d0 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 827b3e6708c57a70c9aa284d35b52435d07410b7..9118f85c73c7ec5d392dd8e14c2b62c0016cb9ee 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 24a34e3343fd38cccf1391c6817c7bd662c3c993..66b24b0fadf3d2646c86c1f09ab14f3856b30063 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 0194f28fc27098e579321c65c56d41862ae089c2..3f6c952ebe6e9a999c50d2a6f66bfea03541d65b 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index bb1750028f1e2dc8e0167ee7a97def5a2f6fd760..141dc5142ef7c85608b0ee8f066906a677647237 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index dc8cd5dd425b966272c782b29413f3e57fb358a7..74bc4d305620c3ee0ead9bccdd98661a78e2c486 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 1664edb4b3527eeca84b6c94fa16a635be3c5a1b..cadca8bedb294e60a8a81f02e17db401af664cc0 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 58bfcc0f8ec37ae33785030af4de0bb9df0ab56e..f2afd83ab32b3eac4f34a74fd857b1673fef552a 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index d646d2547f8e9b63820000c1c47bcbd03fd95fa6..3da10665b72c32847601e4e3c8d47fe81c064749 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 39291ff4db39b8914b343c9a3b41b8d4fe052488..3a76e0ee626cbb90c7db79ff5b0525dc1ed65c47 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 059cacb22e5532d20911f0657eb0e3ce0b164d73..7c3bc2dd3fb5e857083c4b110fec067ce838540f 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 64cee3e872505689baba3994fe17d5501a618177..cdcdfa4383a412423a92f74937d6c25057983327 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index f8a843e5c5b391e208d56a77f029364450ebf101..bf60007dd2336b3a2086f5e333903c419d97b7a5 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 293c2a9cb2e122cc8ceb33c445bafee00dc73d3e..18edc044d998f46ac810debea20afd34bbeab2c3 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 89982795e818e1932563ed0a547088c6ec8ce26b..bae17fe5f36bfe527cf96cb6f07efba495f94807 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 191ba9982423ceec1381d8d999e9e7c8f0d699ef..811f01c2176c904c15f6bfae730e0b93d248e60e 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 1f445e7306a99074309916599aa24d84d8b66900..065770f1a7a693e0b953575b8c78c45fc95dcae5 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 170e3dfce1a8b8930d2af40dd408e0d111bc08f5..e083507934581e3707c1f67a019a770769d81003 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 9924b7188474121dab432133f4470da47387088c..b1d1f0e8dc8e7491851125ef91f5c2c46057b8fb 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 97946f3dd521bc9b1a972aacb14e3a31c807b8e9..3028b2de6fb8b0a889dee712f0a5e1d079987cbf 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index d343b0b36c35ce0f87a0d3ca52731d7bce1946c7..74d7fb306b4e303d8c45241d1aff64bc4175154d 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 682de41af38ea14bfe85358e11da1c32d5069285..fcf11b8ffbf4c4b793094ee903c8d92f55f70754 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index e17ecc49915634ae6267d733025f15129860234b..1210fb12a823a1c7fe1cb1462c77ebe431a0328c 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index cb4b69201ee8ea8436a43567007a0c1c8cd68119..e0873d2590eb802f577dbf298b05855435838c9d 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 5a99dafa388bfe790bf7fff872bb361772d37655..83d84c58ef1992e910c068d26a679c9276d833c0 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index ba88d8ee41806d30c1df295d7e7f8342a8b03325..94250d30a9dbc1b04a68111a60b4265789120cf5 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 6d05b43051d5a7bd40455f292a59555fe84c7de0..4b759782227d97ff06789c136914443d0414ee65 100644 (file)
@@ -120,19 +120,8 @@ maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mmaxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXLOC");
        }
     }
 
index 10193fdf95d016ec7893312b1e6ac597e9b5980e..cbffa3021aa75e3395ecb56a584b36632f61c1f5 100644 (file)
@@ -119,19 +119,8 @@ maxval_i1 (gfc_array_i1 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_i1 (gfc_array_i1 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 884ed6678f280a828f2a2fda04a611bc88af7a62..e0e53411e36ae7ec98ee46e9d05a79dc6adbff3d 100644 (file)
@@ -119,19 +119,8 @@ maxval_i16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_i16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 3abe6579749f9e5a69423b457b72c6c27ddaaac7..293a75f57cf41c27b6b4e53c6a52c7149d0514dd 100644 (file)
@@ -119,19 +119,8 @@ maxval_i2 (gfc_array_i2 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_i2 (gfc_array_i2 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 57aea5fb4291022c0a9b67aa38aae33af76e5556..4d105a0d57fc5e5a7221026e458ac43e7bd02187 100644 (file)
@@ -119,19 +119,8 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_i4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 9d7f57c1cba2257c886198ec2fea0322c184aa46..2ff17283e7950aca524affbe5b3c8bdfca6fa903 100644 (file)
@@ -119,19 +119,8 @@ maxval_i8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_i8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 2259e8e2be5c25181c89079769066432371c565f..356998b3027f6cd9001a26bce3be880481944f06 100644 (file)
@@ -119,19 +119,8 @@ maxval_r10 (gfc_array_r10 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_r10 (gfc_array_r10 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 7efdd65718c0b7e228ddd6587082949da0a0de0c..cf281085a16b92439b7cd5aa3f48fa888ee79b91 100644 (file)
@@ -119,19 +119,8 @@ maxval_r16 (gfc_array_r16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_r16 (gfc_array_r16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 623c25c7f8e4684115804d228a75c2df6258fbd4..b2541a2dc1b42e262e39855e52ef7b232e9c7d45 100644 (file)
@@ -119,19 +119,8 @@ maxval_r4 (gfc_array_r4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_r4 (gfc_array_r4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index bdbb26f06d00c2795ece41b0c7f906458be3af7a..8eb0b8684fbdfc3c01807d6780cfc7f1d7fbaf87 100644 (file)
@@ -119,19 +119,8 @@ maxval_r8 (gfc_array_r8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MAXVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mmaxval_r8 (gfc_array_r8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MAXVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MAXVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MAXVAL");
        }
     }
 
index 961beb924d37059372c550f2c75ce8af983cc4d7..7a505126bcd53e3d6bc8e0d35401a83a2ce5fd95 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_i1 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 7303592131cc02da0f240f4c69977cedb5445001..cfb4115b34f1920275181c82927088d0e1e595aa 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_i16 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index ee9f46c00b0ee8a1179a07ba9275728466bc0b51..6dbbfbb5105c58a0ffcc872a1d9093a4927afcd7 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_i2 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 6d07bbe2669d3fc8cd5ae10c47e3b76e8e68e478..811ad1fe324ff31eb0bc589e36bb82976f0cc337 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_i4 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index bbacc119ec13002f05be4362fab79bccf161898a..583f489d30c85469dce6c8d0f282c37ed0f4cb67 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_i8 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index a77efcdc5c749af61c74640d9daa687766e2928f..fa29e93e2f50d5450d1eca2eeff77a22706fa64a 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_r10 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 1d29e07f29729b4ae7ca47e9eda4f62b97bbae59..304ca7e95fcfbe7d770704b26378fe61c6f93cca 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_r16 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 1c451e9f76b9e26b401e7af98afac43bd5dca154..0ce5e08a6734ad3efdbd07e67157eadcbeab2181 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_r4 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index d6c7086958427dccb98df71b0ac86538560b5fba..8346be1ff4b47cc930c04aaa6a6f71a32c0e93a4 100644 (file)
@@ -63,21 +63,8 @@ minloc0_16_r8 (gfc_array_i16 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 418eb30d240050dbc1038c70ebd5f3e3664b3cbb..3a0b22ba71acc3654a93182345be6c7e148c1ca3 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_i1 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 9a23b27e3d8c17e1624d9a5d000b5693067b6894..cd947eb6f05ef153002cff0fe725d0d61ce6fb79 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_i16 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index df081acb8145b0531c36adbac7c51c2b38cdbd18..6d65cfb2421dd24ee6c4ac361ad723e01d0639ba 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_i2 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index b076dcf5955dd80f2a45915c7149a7d2f9821b5f..938d2e482087f59b26d1e24a90121835a12ea1df 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_i4 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 944694c5c9ded46ea5ca773cd16f79af8f03d5d1..b64024e45fcb9e8e51fa15d5dd4b9d93471c6d7a 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_i8 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 03b8fd43afbc82493b33daf4132de0e2603e94c9..e130e21d3c22f797936cb175974af76b03c9c9c8 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_r10 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 88059c623fe77b8416f4b08c144ee84e4e8a0d23..45ccb614ecb88cb425922c589144ba01cbd43d13 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_r16 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 0b1e642ba2346f551df127ad101b5d227bd292a5..6d8f74e29914026e25327a9d4a7b39fc4f857cdd 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_r4 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index a6843b1d8043af1fd60a220edd3ddfa53c0efdd0..eb01e685620011f66437a2e155693d157d270581 100644 (file)
@@ -63,21 +63,8 @@ minloc0_4_r8 (gfc_array_i4 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 5617affe49b6bde03938449e2cbee1de94456320..d4924e48f19e81493f318dede233d44e55211176 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_i1 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index bc2454a1367758b1e44303bba9647424760feed5..dad459a898f88907d9234aad860aa1b5d7f143d4 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_i16 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 198c9b90cb9e4a375b03a120a5da36a657ecd15c..20cb1f20b9bb2dddb9127e9b4025d4c56ae56574 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_i2 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index c62fbcb116616902702a14079f5884aa4ff1f29b..ca02f4fe379ae66fda221847b3ed5311208f676b 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_i4 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index ffc790088f9ca6ed79d62a476e9d95718c923bdb..dffaec6861b68103555c458137911392973fa61a 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_i8 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 68eb7b6ecab9801f31788d284b2ba61a12aec238..fe31ea91ec42605a27b9f557371bf13380a04c82 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_r10 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index da7ae0667049aee6c4d35dfbd738c98f43bfd766..365403c87f0fedc9220602cc130803d8cb827e71 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_r16 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index fbf5bab98af9f18085cc0f0585ad552a6d41de64..53c89b13f7fcb26a56277d0bfd4160500afdc355 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_r4 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 2dd4cfdf4061742c0ce605ed42f5c812e65d8b9e..ab553b24005b6528eb77cad49ff7077cb20ca511 100644 (file)
@@ -63,21 +63,8 @@ minloc0_8_r8 (gfc_array_i8 * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -186,38 +173,11 @@ mminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " MINLOC intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in MINLOC intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
-
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "MINLOC");
        }
     }
 
@@ -340,22 +300,10 @@ sminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in MINLOC intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "MINLOC");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 5a5ff5e39e224167c4078cf05d82c669795d634b..9177230a5ae56388bab3115e0e812079cd21b63f 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_i1 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 25d4ceaae51968962f72fa5eaa9e4661183bfe74..5ffebe29a481fb1e378ffe1fd242ca3021c9efd7 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_i16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 228a582ed09bfe355ab03abe6f4067f1d660e5f5..f1110c1b25470b5a3397fcbdbbfd2cd4d6797fe9 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_i2 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index c8652722a860a3c5339f27983918cb4597e6e842..86c0acf5a0c2ddbc6f48ab9cbc19a40aa9d8ce5f 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_i4 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index fa124441dd66be1b3da7b2791f75d597d562ca82..7e965bee56da613da199128a69f29ece4f713fe1 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_i8 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 15862a89cb54f5b903e2d7d383badaf422b9d248..e57462634c54457af5ecfcae7bc9a88577466ab3 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_r10 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index f0b452fa09d2288cf72f652c9026cf722c623dd3..08815d322f573f46cdb0a021e5b3251cc7455417 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_r16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 692259db8c8bb7ea5abe4aa8170a51a4b8857d5a..7f2967d6eb4df7e68c29dad5bebafe3631b0a033 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_r4 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index c0189da58f722710696dc55a72bdcae7312e3f78..4d6fa8b43ee49ead948c9b62d97c7dcfd96281c5 100644 (file)
@@ -120,19 +120,8 @@ minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_16_r8 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 164f7ec31a2488b70ec366f3b52b07081cf6d3b7..107ebea06cd30fc901f756c07042277280e398c3 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_i1 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 899f2029bd3441d5158d5e68df1579626b2a7e93..b84c52461e7f013724c50c2c49501f38b7cedad0 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_i16 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index f900506de74e06c05ddf6cbba3ed499ec2808b60..641b15d1d69fc3d97c68349311f458e4864da0aa 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_i2 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 7dedb8f1c5b1f1c8304b5c47dba1b7925dbf4717..c1daa5771b1b0c0e726bc2aede983197ffa04c99 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_i4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 70eaefa8ed6147b1d7b6391b943a68e8c55511bc..2229fc49a0d3c93711dad67fb7086420d202ac77 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_i8 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 1a0bdfa7ac157d0938cbeebf8f68411a9da03ede..ade388b399dfa27c7ac11dc6fdf61d107683535e 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_r10 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index b8849a56d352843f1a6791481672ffef280d3802..e6cf58be55103dd327e24dbbfd0ba620dbf31ce8 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_r16 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index cc382dba224a0f76aea138fbad2653d9cbd046a1..6aa23040294ba28ffe23c3b4abd642abd18cc5ba 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_r4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index c36567ffee6bd5718fe6d544a61eefc6146d28f8..ccc93f5e00e069a37f2e49534ec10e544095be16 100644 (file)
@@ -120,19 +120,8 @@ minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_4_r8 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 6e46c82b8638a14aa98c270e6253d24190c3eaac..86003e572e929c84c78922914df1ea172e6f68a2 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_i1 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 8e8410aa66914834f1c4ceb83fd2427451ee4c9e..8dab74cbd1fedca4c9b4bb744c19e9182484dad9 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_i16 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 2a33e3c1fb7eb60cfa96616bc1d93fffd92fb4f6..ba76fc1c269cb271faec4157c2ea51045faa4347 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_i2 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 70cdef68bc651e917882e0fa356ee66a2754a07d..03b57de804e5c1cedc4cde570f5df78551271a04 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_i4 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index c1a01e9e436ff03a9aa028090e56823dd873bd24..dc1c1fff4d24f9bd9cc505cabf550b1efcde764f 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_i8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index b5a6c8d2d267daa346e1aeee51efab6c3cf8d027..15f22542ec2a697932335b27aa0a4200c8418f1d 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_r10 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 0f4b036461d797fb85dc99c7ec7cf1f66308b737..64d1b26a7ee887d5432ea50365b2289647a88ae9 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 300b5bebf0d53f423ad6aa37198d52b08be4c6fa..00977886a97996fcaee20e9529ec629e5007d432 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_r4 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index da498f661ac813e975a33761f43ab5840fe310b6..05359143142170987fd4e04fc5db3e93aa825d03 100644 (file)
@@ -120,19 +120,8 @@ minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINLOC");
     }
 
   for (n = 0; n < rank; n++)
@@ -313,29 +302,10 @@ mminloc1_8_r8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINLOC intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINLOC");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINLOC");
        }
     }
 
index 437232a89daa802eeeada5a204e53df4dc43f5db..3f1c0a535715e7c6555914c31da1c1f892b46a2e 100644 (file)
@@ -119,19 +119,8 @@ minval_i1 (gfc_array_i1 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_i1 (gfc_array_i1 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index f0bd16fe00369a4e92d2c3da71de327b07196f88..6d0f20a7ea5bdd448f8cdacf2705042408ccaec5 100644 (file)
@@ -119,19 +119,8 @@ minval_i16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_i16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index 08fd3a60b77497cc5793b3e654c4f45099fbab68..c09e4535450755fd03fa276c1b9506fcce3e4eb7 100644 (file)
@@ -119,19 +119,8 @@ minval_i2 (gfc_array_i2 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_i2 (gfc_array_i2 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index d7e1ef93966f1636e845f5685d9393c75724ab0e..72c63705b502733fd06b7753030fff95a4531d15 100644 (file)
@@ -119,19 +119,8 @@ minval_i4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_i4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index 7b6fdc5e5ae83490ea6272ff0672a692e5eb46ab..fbdcec9c93b4a9cbead9fa4af242b54c63ecd087 100644 (file)
@@ -119,19 +119,8 @@ minval_i8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_i8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index 1f6a75f0f6ca26f6a35465356be96054d4ce9c57..8e1ba75654807e65a020df3da5bc56567119ca8d 100644 (file)
@@ -119,19 +119,8 @@ minval_r10 (gfc_array_r10 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_r10 (gfc_array_r10 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index 555d86fd66f5807946ea74dc9aac0c77d773c6d6..b028029583cd70533295409b6043bb1ff0a953ec 100644 (file)
@@ -119,19 +119,8 @@ minval_r16 (gfc_array_r16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_r16 (gfc_array_r16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index a7f729ee7320a1822831940f6e5651170fbd235f..d0236848eb19729420f9824fd3201413be1b0a69 100644 (file)
@@ -119,19 +119,8 @@ minval_r4 (gfc_array_r4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_r4 (gfc_array_r4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index 69afca1bc50b99c25e9fffdb0f5c0c74b6871df7..a86ce9403e07bf21d4d63302652c4b28ec0ab1cf 100644 (file)
@@ -119,19 +119,8 @@ minval_r8 (gfc_array_r8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "MINVAL");
     }
 
   for (n = 0; n < rank; n++)
@@ -307,29 +296,10 @@ mminval_r8 (gfc_array_r8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " MINVAL intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "MINVAL");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "MINVAL");
        }
     }
 
index 69f7f8b70268860e8ac8738d9eecaf6c3f1ce518..1f834f85d24315a1f55bf1672d8ee78df78f4b0b 100644 (file)
@@ -119,19 +119,8 @@ product_c10 (gfc_array_c10 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_c10 (gfc_array_c10 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index efaed2cebdbf9f118309a8895c38b5e6423d0150..20119fae10f60e50ed049d5082639b7b04eb7ba4 100644 (file)
@@ -119,19 +119,8 @@ product_c16 (gfc_array_c16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_c16 (gfc_array_c16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 505647ecd2e513a9407721c6badcfa166a5f36a9..231947f34aa226d3d9f2b956338f25c4b700d59e 100644 (file)
@@ -119,19 +119,8 @@ product_c4 (gfc_array_c4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_c4 (gfc_array_c4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 16c776ad839df7f798bbaa4f7b49afc669e266c1..e6f8dbbafa14c765f99f129064e1b6b41cc6ad93 100644 (file)
@@ -119,19 +119,8 @@ product_c8 (gfc_array_c8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_c8 (gfc_array_c8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index cbc1ab120af1bbe8c518d56a2edb9acedb84b5fb..4f9b5eb3b96b181cd832fd299169000b7417469a 100644 (file)
@@ -119,19 +119,8 @@ product_i1 (gfc_array_i1 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_i1 (gfc_array_i1 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index e3b8c2a07e0515bc929304693b87b5bd324beca8..a23a96a8323bcdcb48df784b9a01e12b543a6cef 100644 (file)
@@ -119,19 +119,8 @@ product_i16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_i16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 507d956cb81201f298d63a53775a025f323e3226..40bbe7233e584ed4d0341d1cdf8230b2b7201843 100644 (file)
@@ -119,19 +119,8 @@ product_i2 (gfc_array_i2 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_i2 (gfc_array_i2 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index d5af367956199a57b107ec6734a9ca605fdb9be7..0510fca4aba1b72465aaa452c6e63d0676d72f67 100644 (file)
@@ -119,19 +119,8 @@ product_i4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_i4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 3308d91dff96c3e800d369a946670bd2c9d8424d..b9bce58921cf3df3d117ce1b71102e8e65dc3eb0 100644 (file)
@@ -119,19 +119,8 @@ product_i8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_i8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 7bae90414b6b18d739a805993b96fb1d7f350894..afbf756f54491223acee7aeaf18453cd713526e6 100644 (file)
@@ -119,19 +119,8 @@ product_r10 (gfc_array_r10 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_r10 (gfc_array_r10 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index bb678725d7c939acf108284324ff2342ee04eeee..1b0723ed15a152dcecfd224cf08fdc0f625a6df4 100644 (file)
@@ -119,19 +119,8 @@ product_r16 (gfc_array_r16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_r16 (gfc_array_r16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 333c13d2ffed43291edf2640a53f11b73c216b90..2f5a8916e458e0a3686d61401e88ba16601d33d7 100644 (file)
@@ -119,19 +119,8 @@ product_r4 (gfc_array_r4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_r4 (gfc_array_r4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index 46258c00bbcf160b6509af9cea963366b5d2bc5b..88c49ff85da460655549ffe6454e8468f617c78c 100644 (file)
@@ -119,19 +119,8 @@ product_r8 (gfc_array_r8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "PRODUCT");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ mproduct_r8 (gfc_array_r8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " PRODUCT intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "PRODUCT");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "PRODUCT");
        }
     }
 
index c63bc695266ca3a1cdd284b622618589c1ef6350..9e32c8636b3605d8b1b82adeb8fa543335115c9a 100644 (file)
@@ -119,19 +119,8 @@ sum_c10 (gfc_array_c10 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_c10 (gfc_array_c10 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 9871d2d5d6a3ac3d1b533564daf73f481b0dd637..ade7d761ceb120f2c374d1be0bc34f54136b8d03 100644 (file)
@@ -119,19 +119,8 @@ sum_c16 (gfc_array_c16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_c16 (gfc_array_c16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 920a6fb492040055742319c0a6ca04679507d6b0..ac37cc88ec66e37d17b4989eff0cb3136139f78b 100644 (file)
@@ -119,19 +119,8 @@ sum_c4 (gfc_array_c4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_c4 (gfc_array_c4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index c3e79237fb3887631080083e1aca94e89db6af27..91db496587fa8ae6e4edca31420c9edf7addf10c 100644 (file)
@@ -119,19 +119,8 @@ sum_c8 (gfc_array_c8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_c8 (gfc_array_c8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 913d732fa7fc9ce68e4bb7cdda7de7998ba0dc0f..b6e10909aa77179bf564d1918fb192845aa9587d 100644 (file)
@@ -119,19 +119,8 @@ sum_i1 (gfc_array_i1 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_i1 (gfc_array_i1 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 060d45aa9ce4424abd81702c242d1313f3ad8807..481ef8e51fbc4865a41fecc84743bccf9d0344c8 100644 (file)
@@ -119,19 +119,8 @@ sum_i16 (gfc_array_i16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_i16 (gfc_array_i16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 5318283ccb8c0784274e84bf52106951b34388b0..a0d97890d6c9a3d877b1938ca0cf5bda1f44303c 100644 (file)
@@ -119,19 +119,8 @@ sum_i2 (gfc_array_i2 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_i2 (gfc_array_i2 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index e8c60c3870e256a9db62cc223c20978d352ebc65..06f2dee4d7b56aa14029cf7eaf012f451a2d81ab 100644 (file)
@@ -119,19 +119,8 @@ sum_i4 (gfc_array_i4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_i4 (gfc_array_i4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 9ee3e934bc713b892d71f9b722dbdbf22d01409a..9171c4c716e28d21fee227ddbad711f80096c627 100644 (file)
@@ -119,19 +119,8 @@ sum_i8 (gfc_array_i8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_i8 (gfc_array_i8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 6a283049bfa37beb5526bdb3d0a25be5a7854fa2..8d122129cc707f3d1e23eb6be7aeace91fa8bdb1 100644 (file)
@@ -119,19 +119,8 @@ sum_r10 (gfc_array_r10 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_r10 (gfc_array_r10 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 35296c1d0d8d9ceed8493321022d64173890425c..2cd6150e0f3287b2566d9d418d1baed1d2dbb09f 100644 (file)
@@ -119,19 +119,8 @@ sum_r16 (gfc_array_r16 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_r16 (gfc_array_r16 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index e7e2fe31b3a83c9636c8903d1bad648f9a34d2e5..b8a5e68e6291be4b29da28eea20893b598a59dea 100644 (file)
@@ -119,19 +119,8 @@ sum_r4 (gfc_array_r4 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_r4 (gfc_array_r4 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 86ae10924209d03ec89a3bddbb1555a21a1002b4..da9cec22372e43b36eaf875994cd906bdec69c7f 100644 (file)
@@ -119,19 +119,8 @@ sum_r8 (gfc_array_r8 * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "SUM");
     }
 
   for (n = 0; n < rank; n++)
@@ -306,29 +295,10 @@ msum_r8 (gfc_array_r8 * const restrict retarray,
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " SUM intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "SUM");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "SUM");
        }
     }
 
index 1b7dbc1cec9232d1a0cfd26d6a63de82c6a267f1..6adea76da3aea192e5a5c65181009c4f112ae46a 100644 (file)
@@ -87,14 +87,17 @@ cshift0 (gfc_array_char * ret, const gfc_array_char * array,
       if (arraysize > 0)
        ret->data = internal_malloc_size (size * arraysize);
       else
-       {
-         ret->data = internal_malloc_size (1);
-         return;
-       }
+       ret->data = internal_malloc_size (1);
     }
-  
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "CSHIFT");
+    }
+
   if (arraysize == 0)
     return;
+
   type_size = GFC_DTYPE_TYPE_SIZE (array);
 
   switch(type_size)
index 4b8082fdecab562a2ead6d61dbcb3b3a57c8b213..74ba5ab7a97f275887ea9071e76661754adc897d 100644 (file)
@@ -54,6 +54,7 @@ eoshift0 (gfc_array_char * ret, const gfc_array_char * array,
   index_type dim;
   index_type len;
   index_type n;
+  index_type arraysize;
 
   /* The compiler cannot figure out that these are set, initialize
      them to avoid warnings.  */
@@ -61,11 +62,12 @@ eoshift0 (gfc_array_char * ret, const gfc_array_char * array,
   soffset = 0;
   roffset = 0;
 
+  arraysize = size0 ((array_t *) array);
+
   if (ret->data == NULL)
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -83,13 +85,22 @@ eoshift0 (gfc_array_char * ret, const gfc_array_char * array,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
     }
 
+  if (arraysize == 0)
+    return;
+
   which = which - 1;
 
   extent[0] = 1;
index aa5ef5ad90fe9d9092dc269c1ed5cac0fa4c7b87..2fbf62e118c70675e7b6b83df54738a80efc1c63 100644 (file)
@@ -75,7 +75,6 @@ eoshift2 (gfc_array_char *ret, const gfc_array_char *array,
     {
       int i;
 
-      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -92,15 +91,20 @@ eoshift2 (gfc_array_char *ret, const gfc_array_char *array,
 
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
+         if (arraysize > 0)
+           ret->data = internal_malloc_size (size * arraysize);
+         else
+           ret->data = internal_malloc_size (1);
+
         }
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
     }
 
-  if (arraysize == 0 && filler == NULL)
+  if (arraysize == 0)
     return;
 
   which = which - 1;
index 517ee76d91de71353a60e9cc057a483ff365ffe3..acb02c413b22124e1ccf427fde0907b6949a5400 100644 (file)
@@ -1242,6 +1242,23 @@ typedef GFC_ARRAY_DESCRIPTOR (GFC_MAX_DIMENSIONS, void) array_t;
 extern index_type size0 (const array_t * array); 
 iexport_proto(size0);
 
+/* bounds.c */
+
+extern void bounds_equal_extents (array_t *, array_t *, const char *,
+                                 const char *);
+internal_proto(bounds_equal_extents);
+
+extern void bounds_reduced_extents (array_t *, array_t *, int, const char *,
+                            const char *intrinsic);
+internal_proto(bounds_reduced_extents);
+
+extern void bounds_iforeach_return (array_t *, array_t *, const char *);
+internal_proto(bounds_iforeach_return);
+
+extern void bounds_ifunction_return (array_t *, const index_type *,
+                                    const char *, const char *);
+internal_proto(bounds_ifunction_return);
+
 /* Internal auxiliary functions for cshift */
 
 void cshift0_i1 (gfc_array_i1 *, const gfc_array_i1 *, ssize_t, int);
index 22b61854ffe869d8954eb60c217223a10defd23b..49a4f73404a6dda89c198911cca078e32e0df641 100644 (file)
@@ -99,6 +99,17 @@ cshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
         }
     }
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "CSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "CSHIFT");
+    }
 
   if (arraysize == 0)
     return;
index 831277cf413901824e59e562425897f6859aab44..be9b1008a60fa7c2fa2d8e4037d4e9644c3f0cc7 100644 (file)
@@ -63,6 +63,7 @@ eoshift1 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   'atype_name` sh;
   'atype_name` delta;
@@ -83,11 +84,12 @@ eoshift1 (gfc_array_char * const restrict ret,
   extent[0] = 1;
   count[0] = 0;
 
+  arraysize = size0 ((array_t *) array);
   if (ret->data == NULL)
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -105,13 +107,27 @@ eoshift1 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
     }
 
+  if (unlikely (compile_options.bounds_check))
+    {
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
+    }
+
+  if (arraysize == 0)
+    return;
+
   n = 0;
   for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
     {
index e6b29599ef0318dc6b9c8ebe4354562b1669ca60..6fa3bd2f7dcf599651070b13e9d7072522afa4c6 100644 (file)
@@ -67,6 +67,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   index_type len;
   index_type n;
   index_type size;
+  index_type arraysize;
   int which;
   'atype_name` sh;
   'atype_name` delta;
@@ -77,6 +78,7 @@ eoshift3 (gfc_array_char * const restrict ret,
   soffset = 0;
   roffset = 0;
 
+  arraysize = size0 ((array_t *) array);
   size = GFC_DESCRIPTOR_SIZE(array);
 
   if (pwhich)
@@ -88,7 +90,7 @@ eoshift3 (gfc_array_char * const restrict ret,
     {
       int i;
 
-      ret->data = internal_malloc_size (size * size0 ((array_t *)array));
+      ret->data = internal_malloc_size (size * arraysize);
       ret->offset = 0;
       ret->dtype = array->dtype;
       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
@@ -106,13 +108,26 @@ eoshift3 (gfc_array_char * const restrict ret,
          GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
 
         }
+      if (arraysize > 0)
+       ret->data = internal_malloc_size (size * arraysize);
+      else
+       ret->data = internal_malloc_size (1);
+
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
+    {
+      bounds_equal_extents ((array_t *) ret, (array_t *) array,
+                                "return value", "EOSHIFT");
+    }
+
+  if (unlikely (compile_options.bounds_check))
     {
-      if (size0 ((array_t *) ret) == 0)
-       return;
+      bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+                             "SHIFT argument", "EOSHIFT");
     }
 
+  if (arraysize == 0)
+    return;
 
   extent[0] = 1;
   count[0] = 0;
index 0960d22aeb41a3e5e557dad9fc012001a6a45695..d86d298a3af54fc2be7d1bf33d8454f773a1da44 100644 (file)
@@ -35,21 +35,8 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
   else
     {
       if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in u_name intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " u_name intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       }
+        bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                               "u_name");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
@@ -150,38 +137,11 @@ void
     {
       if (unlikely (compile_options.bounds_check))
        {
-         int ret_rank, mask_rank;
-         index_type ret_extent;
-         int n;
-         index_type array_extent, mask_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in u_name intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-         if (ret_extent != rank)
-           runtime_error ("Incorrect extent in return value of"
-                          " u_name intrnisic: is %ld, should be %ld",
-                          (long int) ret_extent, (long int) rank);
-       
-         mask_rank = GFC_DESCRIPTOR_RANK (mask);
-         if (rank != mask_rank)
-           runtime_error ("rank of MASK argument in u_name intrnisic"
-                          "should be %ld, is %ld", (long int) rank,
-                          (long int) mask_rank);
 
-         for (n=0; n<rank; n++)
-           {
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " u_name intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                                 "u_name");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                                 "MASK argument", "u_name");
        }
     }
 
@@ -303,22 +263,10 @@ void
       retarray->offset = 0;
       retarray->data = internal_malloc_size (sizeof (rtype_name) * rank);
     }
-  else
+  else if (unlikely (compile_options.bounds_check))
     {
-      if (unlikely (compile_options.bounds_check))
-       {
-         int ret_rank;
-         index_type ret_extent;
-
-         ret_rank = GFC_DESCRIPTOR_RANK (retarray);
-         if (ret_rank != 1)
-           runtime_error ("rank of return array in u_name intrinsic"
-                          " should be 1, is %ld", (long int) ret_rank);
-
-         ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
-           if (ret_extent != rank)
-             runtime_error ("dimension of return array incorrect");
-       }
+       bounds_iforeach_return ((array_t *) retarray, (array_t *) array,
+                              "u_name");
     }
 
   dstride = GFC_DESCRIPTOR_STRIDE(retarray,0);
index 6785eb3c43f185b2748a3227f0c1aa77ad2cf58b..66b1d98b1adf90046566d3d3b64f167a805db9a8 100644 (file)
@@ -107,19 +107,8 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
                       (long int) rank);
 
       if (unlikely (compile_options.bounds_check))
-       {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " u_name intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-       }
+       bounds_ifunction_return ((array_t *) retarray, extent,
+                                "return value", "u_name");
     }
 
   for (n = 0; n < rank; n++)
@@ -294,29 +283,10 @@ void
 
       if (unlikely (compile_options.bounds_check))
        {
-         for (n=0; n < rank; n++)
-           {
-             index_type ret_extent;
-
-             ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,n);
-             if (extent[n] != ret_extent)
-               runtime_error ("Incorrect extent in return value of"
-                              " u_name intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) ret_extent, (long int) extent[n]);
-           }
-          for (n=0; n<= rank; n++)
-            {
-              index_type mask_extent, array_extent;
-
-             array_extent = GFC_DESCRIPTOR_EXTENT(array,n);
-             mask_extent = GFC_DESCRIPTOR_EXTENT(mask,n);
-             if (array_extent != mask_extent)
-               runtime_error ("Incorrect extent in MASK argument of"
-                              " u_name intrinsic in dimension %ld:"
-                              " is %ld, should be %ld", (long int) n + 1,
-                              (long int) mask_extent, (long int) array_extent);
-           }
+         bounds_ifunction_return ((array_t *) retarray, extent,
+                                  "return value", "u_name");
+         bounds_equal_extents ((array_t *) mask, (array_t *) array,
+                               "MASK argument", "u_name");
        }
     }
 
diff --git a/libgfortran/runtime/bounds.c b/libgfortran/runtime/bounds.c
new file mode 100644 (file)
index 0000000..8a7affd
--- /dev/null
@@ -0,0 +1,199 @@
+/* Copyright (C) 2009
+   Free Software Foundation, Inc.
+   Contributed by Thomas Koenig
+
+This file is part of the GNU Fortran runtime library (libgfortran).
+
+Libgfortran is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+Libgfortran is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+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 <assert.h>
+
+/* Auxiliary functions for bounds checking, mostly to reduce library size.  */
+
+/* Bounds checking for the return values of the iforeach functions (such
+   as maxloc and minloc).  The extent of ret_array must
+   must match the rank of array.  */
+
+void
+bounds_iforeach_return (array_t *retarray, array_t *array, const char *name)
+{
+  index_type rank;
+  index_type ret_rank;
+  index_type ret_extent;
+
+  ret_rank = GFC_DESCRIPTOR_RANK (retarray);
+
+  if (ret_rank != 1)
+    runtime_error ("Incorrect rank of return array in %s intrinsic:"
+                  "is %ld, should be 1", name, (long int) ret_rank);
+
+  rank = GFC_DESCRIPTOR_RANK (array);
+  ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
+  if (ret_extent != rank)
+    runtime_error ("Incorrect extent in return value of"
+                  " %s intrinsic: is %ld, should be %ld",
+                  name, (long int) ret_extent, (long int) rank);
+
+}
+
+/* Check the return of functions generated from ifunction.m4.
+   We check the array descriptor "a" against the extents precomputed
+   from ifunction.m4, and complain about the argument a_name in the
+   intrinsic function. */
+
+void
+bounds_ifunction_return (array_t * a, const index_type * extent,
+                        const char * a_name, const char * intrinsic)
+{
+  int empty;
+  int n;
+  int rank;
+  index_type a_size;
+
+  rank = GFC_DESCRIPTOR_RANK (a);
+  a_size = size0 (a);
+
+  empty = 0;
+  for (n = 0; n < rank; n++)
+    {
+      if (extent[n] == 0)
+       empty = 1;
+    }
+  if (empty)
+    {
+      if (a_size != 0)
+       runtime_error ("Incorrect size in %s of %s"
+                      " intrinsic: should be zero-sized",
+                      a_name, intrinsic);
+    }
+  else
+    {
+      if (a_size == 0)
+       runtime_error ("Incorrect size of %s in %s"
+                      " intrinsic: should not be zero-sized",
+                      a_name, intrinsic);
+
+      for (n = 0; n < rank; n++)
+       {
+         index_type a_extent;
+         a_extent = GFC_DESCRIPTOR_EXTENT(a, n);
+         if (a_extent != extent[n])
+           runtime_error("Incorrect extent in %s of %s"
+                         " intrinsic in dimension %ld: is %ld,"
+                         " should be %ld", a_name, intrinsic, (long int) n + 1,
+                         (long int) a_extent, (long int) extent[n]);
+
+       }
+    }
+}
+
+/* Check that two arrays have equal extents, or are both zero-sized.  Abort
+   with a runtime error if this is not the case.  Complain that a has the
+   wrong size.  */
+
+void
+bounds_equal_extents (array_t *a, array_t *b, const char *a_name,
+                     const char *intrinsic)
+{
+  index_type a_size, b_size, n;
+
+  assert (GFC_DESCRIPTOR_RANK(a) == GFC_DESCRIPTOR_RANK(b));
+
+  a_size = size0 (a);
+  b_size = size0 (b);
+
+  if (b_size == 0)
+    {
+      if (a_size != 0)
+       runtime_error ("Incorrect size of %s in %s"
+                      " intrinsic: should be zero-sized",
+                      a_name, intrinsic);
+    }
+  else
+    {
+      if (a_size == 0) 
+       runtime_error ("Incorrect size of %s of %s"
+                      " intrinsic: Should not be zero-sized",
+                      a_name, intrinsic);
+
+      for (n = 0; n < GFC_DESCRIPTOR_RANK (b); n++)
+       {
+         index_type a_extent, b_extent;
+         
+         a_extent = GFC_DESCRIPTOR_EXTENT(a, n);
+         b_extent = GFC_DESCRIPTOR_EXTENT(b, n);
+         if (a_extent != b_extent)
+           runtime_error("Incorrect extent in %s of %s"
+                         " intrinsic in dimension %ld: is %ld,"
+                         " should be %ld", a_name, intrinsic, (long int) n + 1,
+                         (long int) a_extent, (long int) b_extent);
+       }
+    }
+}
+
+/* Check that the extents of a and b agree, except that a has a missing
+   dimension in argument which.  Complain about a if anything is wrong.  */
+
+void
+bounds_reduced_extents (array_t *a, array_t *b, int which, const char *a_name,
+                     const char *intrinsic)
+{
+
+  index_type i, n, a_size, b_size;
+
+  assert (GFC_DESCRIPTOR_RANK(a) == GFC_DESCRIPTOR_RANK(b) - 1);
+
+  a_size = size0 (a);
+  b_size = size0 (b);
+
+  if (b_size == 0)
+    {
+      if (a_size != 0)
+       runtime_error ("Incorrect size in %s of %s"
+                      " intrinsic: should not be zero-sized",
+                      a_name, intrinsic);
+    }
+  else
+    {
+      if (a_size == 0) 
+       runtime_error ("Incorrect size of %s of %s"
+                      " intrinsic: should be zero-sized",
+                      a_name, intrinsic);
+
+      i = 0;
+      for (n = 0; n < GFC_DESCRIPTOR_RANK (b); n++)
+       {
+         index_type a_extent, b_extent;
+
+         if (n != which)
+           {
+             a_extent = GFC_DESCRIPTOR_EXTENT(a, i);
+             b_extent = GFC_DESCRIPTOR_EXTENT(b, n);
+             if (a_extent != b_extent)
+               runtime_error("Incorrect extent in %s of %s"
+                             " intrinsic in dimension %ld: is %ld,"
+                             " should be %ld", a_name, intrinsic, (long int) i + 1,
+                             (long int) a_extent, (long int) b_extent);
+             i++;
+           }
+       }
+    }
+}
This page took 0.468364 seconds and 5 git commands to generate.