re PR libfortran/32336 (matmul: flag runtime- instead of assertation error)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 9 Jul 2007 22:34:43 +0000 (22:34 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 9 Jul 2007 22:34:43 +0000 (22:34 +0000)
2007-07-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/32336
* m4/matmul.m4:  When the dimension of b is incorrect,
raise a runtime error instead of a failed assertion.
* generated/matmul_i1.c:  Regenerated.
* generated/matmul_i2.c:  Regenerated.
* generated/matmul_i4.c:  Regenerated.
* generated/matmul_i8.c:  Regenerated.
* generated/matmul_i16.c:  Regenerated.
* generated/matmul_r4.c:  Regenerated.
* generated/matmul_r8.c:  Regenerated.
* generated/matmul_r10.c:  Regenerated.
* generated/matmul_r16.c:  Regenerated.

2007-07-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/32336
* gfortran.dg/matmul_5.f90:  New test case.

From-SVN: r126498

17 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/matmul_5.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/generated/matmul_c10.c
libgfortran/generated/matmul_c16.c
libgfortran/generated/matmul_c4.c
libgfortran/generated/matmul_c8.c
libgfortran/generated/matmul_i1.c
libgfortran/generated/matmul_i16.c
libgfortran/generated/matmul_i2.c
libgfortran/generated/matmul_i4.c
libgfortran/generated/matmul_i8.c
libgfortran/generated/matmul_r10.c
libgfortran/generated/matmul_r16.c
libgfortran/generated/matmul_r4.c
libgfortran/generated/matmul_r8.c
libgfortran/m4/matmul.m4

index b8de460e8d5f9dde37409735e7e405b3618ecaeb..edbe7edd628d3360d4326a1213e80d0a34fa7906 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-09  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR libfortran/32336
+       * gfortran.dg/matmul_5.f90:  New test case.
+
 2007-07-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
        * gcc.dg/fesd-any.c: Move to gcc.dg/debug/dwarf2 directory.
diff --git a/gcc/testsuite/gfortran.dg/matmul_5.f90 b/gcc/testsuite/gfortran.dg/matmul_5.f90
new file mode 100644 (file)
index 0000000..b67601f
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do run }
+! { dg-shouldfail "dimension of array B incorrect in MATMUL intrinsic" }
+program main
+  real, dimension(:,:), allocatable :: a
+  real, dimension(:), allocatable :: b
+  allocate (a(2,2), b(3))
+  call random_number(a)
+  call random_number(b)
+  print *,matmul(a,b)
+end program main
+! { dg-output "Fortran runtime error: dimension of array B incorrect in MATMUL intrinsic.*" }
index 7b6f3e567cd7ca4f55d7d5a371aec849ab15b21c..154d241f651b6d131881f4a5bfdfb86b45817e62 100644 (file)
@@ -1,3 +1,18 @@
+2007-07-09  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR libfortran/32336
+       * m4/matmul.m4:  When the dimension of b is incorrect,
+       raise a runtime error instead of a failed assertion.
+       * generated/matmul_i1.c:  Regenerated.
+       * generated/matmul_i2.c:  Regenerated.
+       * generated/matmul_i4.c:  Regenerated.
+       * generated/matmul_i8.c:  Regenerated.
+       * generated/matmul_i16.c:  Regenerated.
+       * generated/matmul_r4.c:  Regenerated.
+       * generated/matmul_r8.c:  Regenerated.
+       * generated/matmul_r10.c:  Regenerated.
+       * generated/matmul_r16.c:  Regenerated.
+
 2007-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/32678
index 5e3b281245c5d358a1326452bf1e13becdfd90be..d7d4c650a98b88eff88fc096409285299d8ddcb5 100644 (file)
@@ -169,7 +169,8 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index f7301114b377e6d1914275b54c130ce9335fcdf0..e9ad2d439c088f0b5487828562ae502fee03b8ae 100644 (file)
@@ -169,7 +169,8 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index f2984ab48abdf219e6fa31fb960b348f96b30636..753e535df79e0a7169ac98b2718d53f1cd3bf962 100644 (file)
@@ -169,7 +169,8 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index 65cc0a52c4b49736e8cf5bcf667d3d5a8f7683a3..23aea6a4fc3651475c84521ccc10b4a1bdd9f36f 100644 (file)
@@ -169,7 +169,8 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index ce98de1795011ec848a0cf8895ed7c8beb456e15..ae035076bedeeac7c2ad946c29e5aaf6da579c1b 100644 (file)
@@ -169,7 +169,8 @@ matmul_i1 (gfc_array_i1 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index a193669d1081b1c769379ce4ffa46709759ecf5e..38756dc9010011532969c448783787e5b05cd1d5 100644 (file)
@@ -169,7 +169,8 @@ matmul_i16 (gfc_array_i16 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index b86839e379bb1b0b7932b68cbd1bdbd40c150f26..7287b6b745aaee4ca6470640f35557b40987a20e 100644 (file)
@@ -169,7 +169,8 @@ matmul_i2 (gfc_array_i2 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index 69b9b487a8195dc8de7167f10f86f2640024311a..d5eed998311f7a27311a3fe4c9c4eb898d14c289 100644 (file)
@@ -169,7 +169,8 @@ matmul_i4 (gfc_array_i4 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index 23a87a904f7b97eb6513f203bd6d6ca3954585c5..4ab55471c9e110f20ab6548f72acdc72e88ee310 100644 (file)
@@ -169,7 +169,8 @@ matmul_i8 (gfc_array_i8 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index e4dfd74ef03eb6a1e5c584ba5130072b1c602a83..9f7fb4b654e70eea9f6f0516f8a714d20cd31ba9 100644 (file)
@@ -169,7 +169,8 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index ec760f2d3d8ce2268c310ea8de51b1c3d51a5d36..6a8f220a44753423915a339b21d85782fd09edeb 100644 (file)
@@ -169,7 +169,8 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index cf2f45fb12563a9b9f1ed907938685192ec15c4e..e4a45801edccfcd2ba97d05cde441c97848353e5 100644 (file)
@@ -169,7 +169,8 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index c746f6c351985f111db51fff88fa40d1bbdc0a99..e823a756a97cace928f63e96b8adb19eebdbc42b 100644 (file)
@@ -169,7 +169,8 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {
index 3156fdcac0c43e5ba9b2ed92eaa9efac617c575c..6235f63e2b039c79711e1a86fd08fa620663177d 100644 (file)
@@ -171,7 +171,8 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
       xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
     }
 
-  assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
+  if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
+    runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
     {