Message ID | 60e90697-4c0c-a7fe-65c4-f0ed483788bc@netcologne.de |
---|---|
State | New |
Headers | show |
Series | [fortran] Fix PR 83664, missing check on boundary argument for eoshift | expand |
On Wed, Jan 3, 2018 at 1:13 PM, Thomas Koenig <tkoenig@netcologne.de> wrote: > Hello world, > > the attached patch fixes a missing check for eoshift. > > If you're wondering what the "else" belongs to - it is > > if (boundary != NULL) > > Regression-tested. OK for trunk? > > Regards > > Thomas > > 2018-01-03 Thomas Koenig <tkoenig@gcc.gnu.org> > > PR fortran/83664 > * check.c (gfc_check_eoshift): Error for missing boundary if array > is not one of the standard types. > > 2018-01-03 Thomas Koenig <tkoenig@gcc.gnu.org> > > PR fortran/83664 > * gfortran.dg/eoshift_7.f90: New test. Ok for trunk, thanks!
Index: check.c =================================================================== --- check.c (Revision 255788) +++ check.c (Arbeitskopie) @@ -2270,6 +2270,26 @@ gfc_check_eoshift (gfc_expr *array, gfc_expr *shif return false; } } + else + { + switch (array->ts.type) + { + case BT_INTEGER: + case BT_LOGICAL: + case BT_REAL: + case BT_COMPLEX: + case BT_CHARACTER: + break; + + default: + gfc_error ("Missing %qs argument to %qs intrinsic at %L for %qs " + "of type %qs", gfc_current_intrinsic_arg[2]->name, + gfc_current_intrinsic, &array->where, + gfc_current_intrinsic_arg[0]->name, + gfc_typename (&array->ts)); + return false; + } + } return true; }