re PR fortran/34549 (cshifting by a real value)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sat, 22 Dec 2007 17:43:54 +0000 (17:43 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sat, 22 Dec 2007 17:43:54 +0000 (17:43 +0000)
2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/34549
* check.c (gfc_check_cshift):  Add check that shift is
type INTEGER.

2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/34549
* cshift_shift_real_1.f90:  New test.

From-SVN: r131136

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

index c67dca5..a5bf542 100644 (file)
@@ -1,3 +1,9 @@
+2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/34549
+       * check.c (gfc_check_cshift):  Add check that shift is
+       type INTEGER.
+
 2007-12-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/34540
index 511dce6..9cc4d85 100644 (file)
@@ -853,6 +853,9 @@ gfc_check_cshift (gfc_expr *array, gfc_expr *shift, gfc_expr *dim)
   if (array_check (array, 0) == FAILURE)
     return FAILURE;
 
+  if (type_check (shift, 1, BT_INTEGER) == FAILURE)
+    return FAILURE;
+
   if (array->rank == 1)
     {
       if (scalar_check (shift, 1) == FAILURE)
index 5bc4828..f079ae6 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/34549
+       * cshift_shift_real_1.f90:  New test.
+
 2007-12-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/34540
diff --git a/gcc/testsuite/gfortran.dg/cshift_shift_real_1.f90 b/gcc/testsuite/gfortran.dg/cshift_shift_real_1.f90
new file mode 100644 (file)
index 0000000..93f4a1c
--- /dev/null
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR 34549 - a real value was accepted for shift.
+program main
+  implicit none
+  real, dimension(2,2) :: r
+  data r /1.0, 2.0, 3.0, 4.0/
+  print *,cshift(r,shift=2.3,dim=1) ! { dg-error "must be INTEGER" }
+end program main