From: Thomas Koenig Date: Wed, 3 Jan 2018 11:31:20 +0000 (+0000) Subject: re PR fortran/83664 (Eoshift accepts missing boundary for non-default types) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8987beac8c4bf6e0b99cb298126041da21964ca4;p=gcc.git re PR fortran/83664 (Eoshift accepts missing boundary for non-default types) 2018-01-03 Thomas Koenig 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 PR fortran/83664 * gfortran.dg/eoshift_7.f90: New test. From-SVN: r256171 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b3419e8df5b..e4661a81058 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-01-03 Thomas Koenig + + PR fortran/83664 + * check.c (gfc_check_eoshift): Error for missing boundary if array + is not one of the standard types. + 2018-01-03 Jakub Jelinek Update copyright years. diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 48d9852529d..9f0f4d5b209 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -2270,6 +2270,26 @@ gfc_check_eoshift (gfc_expr *array, gfc_expr *shift, gfc_expr *boundary, 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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2c179b14964..822c29d640d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-03 Thomas Koenig + + PR fortran/83664 + * gfortran.dg/eoshift_7.f90: New test. + 2018-01-03 Jan Beulich * gcc.target/i386/avx512vl-no-vmovdqu8.c, diff --git a/gcc/testsuite/gfortran.dg/eoshift_7.f90 b/gcc/testsuite/gfortran.dg/eoshift_7.f90 new file mode 100644 index 00000000000..fbd017e1774 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/eoshift_7.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +program main + type t + integer :: x + end type t + type(t), dimension(2) :: a, b + a(1)%x = 1 + a(2)%x = 2 + b = eoshift(a,1) ! { dg-error "Missing 'boundary' argument to 'eoshift' intrinsic" } + print *,b%x +end program main