diff options
author | Daniel Kraft <d@domob.eu> | 2009-01-21 14:34:55 +0100 |
---|---|---|
committer | Daniel Kraft <domob@gcc.gnu.org> | 2009-01-21 14:34:55 +0100 |
commit | 210879b85b09194934eabcf5777cf2cff6e8dedc (patch) | |
tree | b1031584e4fe3d17c0b6289ff1e3eb0c4072334d /libgfortran | |
parent | 71a6fe66e7292912deda846c123134d2c43d43e1 (diff) | |
download | gcc-210879b85b09194934eabcf5777cf2cff6e8dedc.zip gcc-210879b85b09194934eabcf5777cf2cff6e8dedc.tar.gz gcc-210879b85b09194934eabcf5777cf2cff6e8dedc.tar.bz2 |
re PR fortran/38887 (run-time abort for MVBITS with run-time zero sized array arguments)
2009-01-21 Daniel Kraft <d@domob.eu>
* trans-stmt.c (gfc_conv_elemental_dependencies): Cleaned up comment.
2009-01-21 Daniel Kraft <d@domob.eu>
PR fortran/38887
* runtime/in_unpack_generic.c (internal_unpack): Return instead of
abort when called with empty array.
* m4/in_unpack.m4: Ditto.
* generated/in_unpack_i1.c: Regenerated.
* generated/in_unpack_i2.c: Regenerated.
* generated/in_unpack_i4.c: Regenerated.
* generated/in_unpack_i8.c: Regenerated.
* generated/in_unpack_i16.c: Regenerated.
* generated/in_unpack_r4.c: Regenerated.
* generated/in_unpack_r8.c: Regenerated.
* generated/in_unpack_r10.c: Regenerated.
* generated/in_unpack_r16.c: Regenerated.
* generated/in_unpack_c4.c: Regenerated.
* generated/in_unpack_c8.c: Regenerated.
* generated/in_unpack_c10.c: Regenerated.
* generated/in_unpack_c16.c: Regenerated.
2009-01-21 Daniel Kraft <d@domob.eu>
PR fortran/38887
* gfortran.dg/mvbits_5.f90: New test.
From-SVN: r143541
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 20 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_c10.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_c16.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_c4.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_c8.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_i1.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_i16.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_i2.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_i4.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_i8.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_r10.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_r16.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_r4.c | 6 | ||||
-rw-r--r-- | libgfortran/generated/in_unpack_r8.c | 6 | ||||
-rw-r--r-- | libgfortran/m4/in_unpack.m4 | 6 | ||||
-rw-r--r-- | libgfortran/runtime/in_unpack_generic.c | 6 |
16 files changed, 65 insertions, 45 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7b1241d..96fd675 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,23 @@ +2009-01-21 Daniel Kraft <d@domob.eu> + + PR fortran/38887 + * runtime/in_unpack_generic.c (internal_unpack): Return instead of + abort when called with empty array. + * m4/in_unpack.m4: Ditto. + * generated/in_unpack_i1.c: Regenerated. + * generated/in_unpack_i2.c: Regenerated. + * generated/in_unpack_i4.c: Regenerated. + * generated/in_unpack_i8.c: Regenerated. + * generated/in_unpack_i16.c: Regenerated. + * generated/in_unpack_r4.c: Regenerated. + * generated/in_unpack_r8.c: Regenerated. + * generated/in_unpack_r10.c: Regenerated. + * generated/in_unpack_r16.c: Regenerated. + * generated/in_unpack_c4.c: Regenerated. + * generated/in_unpack_c8.c: Regenerated. + * generated/in_unpack_c10.c: Regenerated. + * generated/in_unpack_c16.c: Regenerated. + 2009-01-12 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/38772 diff --git a/libgfortran/generated/in_unpack_c10.c b/libgfortran/generated/in_unpack_c10.c index 2d971bf..930cfae 100644 --- a/libgfortran/generated/in_unpack_c10.c +++ b/libgfortran/generated/in_unpack_c10.c @@ -60,12 +60,12 @@ internal_unpack_c10 (gfc_array_c10 * d, const GFC_COMPLEX_10 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_c16.c b/libgfortran/generated/in_unpack_c16.c index f09b0b4..45927b8 100644 --- a/libgfortran/generated/in_unpack_c16.c +++ b/libgfortran/generated/in_unpack_c16.c @@ -60,12 +60,12 @@ internal_unpack_c16 (gfc_array_c16 * d, const GFC_COMPLEX_16 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_c4.c b/libgfortran/generated/in_unpack_c4.c index ed77a70..1a7d707 100644 --- a/libgfortran/generated/in_unpack_c4.c +++ b/libgfortran/generated/in_unpack_c4.c @@ -60,12 +60,12 @@ internal_unpack_c4 (gfc_array_c4 * d, const GFC_COMPLEX_4 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_c8.c b/libgfortran/generated/in_unpack_c8.c index e1fada3..5dbfca0 100644 --- a/libgfortran/generated/in_unpack_c8.c +++ b/libgfortran/generated/in_unpack_c8.c @@ -60,12 +60,12 @@ internal_unpack_c8 (gfc_array_c8 * d, const GFC_COMPLEX_8 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_i1.c b/libgfortran/generated/in_unpack_i1.c index 0e7ab11..ccaa0d2 100644 --- a/libgfortran/generated/in_unpack_i1.c +++ b/libgfortran/generated/in_unpack_i1.c @@ -60,12 +60,12 @@ internal_unpack_1 (gfc_array_i1 * d, const GFC_INTEGER_1 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_i16.c b/libgfortran/generated/in_unpack_i16.c index 3658485..8d0ddf5 100644 --- a/libgfortran/generated/in_unpack_i16.c +++ b/libgfortran/generated/in_unpack_i16.c @@ -60,12 +60,12 @@ internal_unpack_16 (gfc_array_i16 * d, const GFC_INTEGER_16 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_i2.c b/libgfortran/generated/in_unpack_i2.c index 246c3f3..cb5048f 100644 --- a/libgfortran/generated/in_unpack_i2.c +++ b/libgfortran/generated/in_unpack_i2.c @@ -60,12 +60,12 @@ internal_unpack_2 (gfc_array_i2 * d, const GFC_INTEGER_2 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_i4.c b/libgfortran/generated/in_unpack_i4.c index d0c0f15..1295644 100644 --- a/libgfortran/generated/in_unpack_i4.c +++ b/libgfortran/generated/in_unpack_i4.c @@ -60,12 +60,12 @@ internal_unpack_4 (gfc_array_i4 * d, const GFC_INTEGER_4 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_i8.c b/libgfortran/generated/in_unpack_i8.c index 5f2975e..a228ded 100644 --- a/libgfortran/generated/in_unpack_i8.c +++ b/libgfortran/generated/in_unpack_i8.c @@ -60,12 +60,12 @@ internal_unpack_8 (gfc_array_i8 * d, const GFC_INTEGER_8 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_r10.c b/libgfortran/generated/in_unpack_r10.c index 66ebe82..5099b9a 100644 --- a/libgfortran/generated/in_unpack_r10.c +++ b/libgfortran/generated/in_unpack_r10.c @@ -60,12 +60,12 @@ internal_unpack_r10 (gfc_array_r10 * d, const GFC_REAL_10 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_r16.c b/libgfortran/generated/in_unpack_r16.c index 722dee7..d2e5579 100644 --- a/libgfortran/generated/in_unpack_r16.c +++ b/libgfortran/generated/in_unpack_r16.c @@ -60,12 +60,12 @@ internal_unpack_r16 (gfc_array_r16 * d, const GFC_REAL_16 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_r4.c b/libgfortran/generated/in_unpack_r4.c index 65bdb07..2c37459 100644 --- a/libgfortran/generated/in_unpack_r4.c +++ b/libgfortran/generated/in_unpack_r4.c @@ -60,12 +60,12 @@ internal_unpack_r4 (gfc_array_r4 * d, const GFC_REAL_4 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/generated/in_unpack_r8.c b/libgfortran/generated/in_unpack_r8.c index 70c11b5..e0e91e9 100644 --- a/libgfortran/generated/in_unpack_r8.c +++ b/libgfortran/generated/in_unpack_r8.c @@ -60,12 +60,12 @@ internal_unpack_r8 (gfc_array_r8 * d, const GFC_REAL_8 * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/m4/in_unpack.m4 b/libgfortran/m4/in_unpack.m4 index 5c5b5b1..a2a92d0 100644 --- a/libgfortran/m4/in_unpack.m4 +++ b/libgfortran/m4/in_unpack.m4 @@ -63,12 +63,12 @@ internal_unpack_'rtype_ccode` ('rtype` * d, const 'rtype_name` * src) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } if (dsize != 0) diff --git a/libgfortran/runtime/in_unpack_generic.c b/libgfortran/runtime/in_unpack_generic.c index 81d1f04..b15f4dd 100644 --- a/libgfortran/runtime/in_unpack_generic.c +++ b/libgfortran/runtime/in_unpack_generic.c @@ -178,12 +178,12 @@ internal_unpack (gfc_array_char * d, const void * s) stride[n] = d->dim[n].stride; extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound; if (extent[n] <= 0) - abort (); + return; if (dsize == stride[n]) - dsize *= extent[n]; + dsize *= extent[n]; else - dsize = 0; + dsize = 0; } src = s; |