re PR fortran/83664 (Eoshift accepts missing boundary for non-default types)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 3 Jan 2018 11:31:20 +0000 (11:31 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 3 Jan 2018 11:31:20 +0000 (11:31 +0000)
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.

From-SVN: r256171

gcc/fortran/ChangeLog
gcc/fortran/check.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/eoshift_7.f90 [new file with mode: 0644]

index b3419e8df5b3c20ce938b5faf3156d93ef5fc1e4..e4661a8105848cba4c3a039983ab3c9d0d3d3502 100644 (file)
@@ -1,3 +1,9 @@
+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  Jakub Jelinek  <jakub@redhat.com>
 
        Update copyright years.
index 48d9852529d196c1561ee121c8f0f8d5f5cc4fc5..9f0f4d5b209082a410c577be50189babbca05fb7 100644 (file)
@@ -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;
 }
index 2c179b149640239dc594144f38d8ec37a025988e..822c29d640dd05d5799a8684678b9faa135f0392 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/83664
+       * gfortran.dg/eoshift_7.f90: New test.
+
 2018-01-03  Jan Beulich  <jbeulich@suse.com>
 
        * 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 (file)
index 0000000..fbd017e
--- /dev/null
@@ -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