re PR fortran/35988 (run-time abort for MATMUL of run-time zero sized array)
2008-04-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/35988 * m4/matmul.m4: Only issue a runtime error if extents are non-zero. * 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. * generated/matmul_c4.c: Regenerated. * generated/matmul_c8.c: Regenerated. * generated/matmul_c10.c: Regenerated. * generated/matmul_c16.c: Regenerated. 2008-04-23 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/35988 * gfortran.dg/matmul_7.f90: New test. From-SVN: r134579
This commit is contained in:
parent
d5555b955d
commit
7edc89d4c1
17 changed files with 120 additions and 14 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-04-23 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR libfortran/35988
|
||||
* gfortran.dg/matmul_7.f90: New test.
|
||||
|
||||
2008-04-22 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* gcc.dg/struct/wo_prof_global_var.c: Initialize array.
|
||||
|
|
40
gcc/testsuite/gfortran.dg/matmul_7.f90
Normal file
40
gcc/testsuite/gfortran.dg/matmul_7.f90
Normal file
|
@ -0,0 +1,40 @@
|
|||
! { dg-do run }
|
||||
! PR 35988 - failure on some zero-sized matmuls.
|
||||
! Test case contributed by Dick Hendrickson.
|
||||
|
||||
program try_gf1003
|
||||
|
||||
call gf1003a( 9, 8, 6)
|
||||
call gf1003b( 9, 8, 6)
|
||||
call gf1003c( 9, 8, 6) !fails
|
||||
call gf1003d( 9, 8, 6) !fails
|
||||
end program
|
||||
|
||||
|
||||
SUBROUTINE GF1003a(nf9,nf8,nf6)
|
||||
REAL RDA(3,2)
|
||||
REAL RDA1(3,5)
|
||||
REAL RDA2(5,2)
|
||||
RDA = MATMUL(RDA1(:, 9:8),RDA2( 8:6,:))
|
||||
END SUBROUTINE
|
||||
|
||||
SUBROUTINE GF1003b(nf9,nf8,nf6)
|
||||
REAL RDA(3,2)
|
||||
REAL RDA1(3,0)
|
||||
REAL RDA2(0,2)
|
||||
RDA = MATMUL(RDA1(:,NF9:NF8),RDA2(NF9:NF8,:))
|
||||
END SUBROUTINE
|
||||
|
||||
SUBROUTINE GF1003c(nf9,nf8,nf6)
|
||||
REAL RDA(3,2)
|
||||
REAL RDA1(3,0)
|
||||
REAL RDA2(0,2)
|
||||
RDA = MATMUL(RDA1(:,NF9:NF8),RDA2(NF8:NF6,:))
|
||||
END SUBROUTINE
|
||||
|
||||
SUBROUTINE GF1003d(nf9,nf8,nf6)
|
||||
REAL RDA(3,2)
|
||||
REAL RDA1(3,5)
|
||||
REAL RDA2(5,2)
|
||||
RDA = MATMUL(RDA1(:,NF9:NF8),RDA2(NF8:NF6,:))
|
||||
END SUBROUTINE
|
|
@ -1,3 +1,22 @@
|
|||
2008-04-23 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR libfortran/35988
|
||||
* m4/matmul.m4: Only issue a runtime error if extents are
|
||||
non-zero.
|
||||
* 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.
|
||||
* generated/matmul_c4.c: Regenerated.
|
||||
* generated/matmul_c8.c: Regenerated.
|
||||
* generated/matmul_c10.c: Regenerated.
|
||||
* generated/matmul_c16.c: Regenerated.
|
||||
|
||||
2008-04-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* acinclude.m4 (LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY)
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_i1 (gfc_array_i1 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_i16 (gfc_array_i16 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_i2 (gfc_array_i2 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_i4 (gfc_array_i4 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_i8 (gfc_array_i8 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -170,7 +170,10 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
|
@ -172,7 +172,10 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
|
|||
}
|
||||
|
||||
if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
{
|
||||
if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
|
||||
runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
|
||||
}
|
||||
|
||||
if (GFC_DESCRIPTOR_RANK (b) == 1)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue