aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2007-12-22 17:43:54 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2007-12-22 17:43:54 +0000
commit62ee27a4694a9dcd8a9470217dd03900ef7c8ba3 (patch)
tree41607f39362975ca67ecae602468bdef090337fd
parenta507baad28f59b247787b3e5c05e855838182186 (diff)
downloadgcc-62ee27a4694a9dcd8a9470217dd03900ef7c8ba3.zip
gcc-62ee27a4694a9dcd8a9470217dd03900ef7c8ba3.tar.gz
gcc-62ee27a4694a9dcd8a9470217dd03900ef7c8ba3.tar.bz2
re PR fortran/34549 (cshifting by a real value)
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
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/check.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/cshift_shift_real_1.f908
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c67dca5..a5bf542 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index 511dce6..9cc4d85 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5bc4828..f079ae6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..93f4a1c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/cshift_shift_real_1.f90
@@ -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