aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2013-12-01 11:37:09 +0000
committerPaul Thomas <pault@gcc.gnu.org>2013-12-01 11:37:09 +0000
commit49560f0c747c5d62ee46c9118b1ab634e985def5 (patch)
tree593ffc7b21be2cbb5d08c3e3109e806d4ab89d9e
parentc931d01d7d439aa992116fa70d22fd407f8cb254 (diff)
downloadgcc-49560f0c747c5d62ee46c9118b1ab634e985def5.zip
gcc-49560f0c747c5d62ee46c9118b1ab634e985def5.tar.gz
gcc-49560f0c747c5d62ee46c9118b1ab634e985def5.tar.bz2
Index...
Index: gcc/fortran/resolve.c =================================================================== *** gcc/fortran/resolve.c (revision 205031) --- gcc/fortran/resolve.c (working copy) *************** resolve_transfer (gfc_code *code) *** 8247,8256 **** && exp->value.op.op == INTRINSIC_PARENTHESES) exp = exp->value.op.op1; ! if (exp && exp->expr_type == EXPR_NULL && exp->ts.type == BT_UNKNOWN) { ! gfc_error ("NULL intrinsic at %L in data transfer statement requires " ! "MOLD=", &exp->where); return; } --- 8247,8257 ---- && exp->value.op.op == INTRINSIC_PARENTHESES) exp = exp->value.op.op1; ! if (exp && exp->expr_type == EXPR_NULL ! && code->ext.dt) { ! gfc_error ("Invalid context for NULL () intrinsic at %L", ! &exp->where); return; } Index: gcc/testsuite/gfortran.dg/null_5.f90 =================================================================== *** gcc/testsuite/gfortran.dg/null_5.f90 (revision 205031) --- gcc/testsuite/gfortran.dg/null_5.f90 (working copy) *************** subroutine test_PR34547_1 () *** 34,40 **** end subroutine test_PR34547_1 subroutine test_PR34547_2 () ! print *, null () ! { dg-error "in data transfer statement requires MOLD" } end subroutine test_PR34547_2 subroutine test_PR34547_3 () --- 34,40 ---- end subroutine test_PR34547_1 subroutine test_PR34547_2 () ! print *, null () ! { dg-error "Invalid context" } end subroutine test_PR34547_2 subroutine test_PR34547_3 () Index: gcc/testsuite/gfortran.dg/null_6.f90 =================================================================== *** gcc/testsuite/gfortran.dg/null_6.f90 (revision 205031) --- gcc/testsuite/gfortran.dg/null_6.f90 (working copy) *************** end subroutine test_PR50375_2 *** 30,34 **** subroutine test_PR34547_3 () integer, allocatable :: i(:) ! print *, NULL(i) end subroutine test_PR34547_3 --- 30,34 ---- subroutine test_PR34547_3 () integer, allocatable :: i(:) ! print *, NULL(i) ! { dg-error "Invalid context for NULL" } end subroutine test_PR34547_3 From-SVN: r205565
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c7
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/null_5.f902
-rw-r--r--gcc/testsuite/gfortran.dg/null_6.f902
5 files changed, 18 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 124a458..b01b84b 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-01 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/34547
+ * resolve.c (resolve_transfer): EXPR_NULL is always in an
+ invalid context in a transfer statement.
+
2013-11-28 Sergey Ostanevich <sergos.gnu@gmail.com>
* lang.opt (Wopenmp-simd): New.
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 4befb9fd..d16347d 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -8247,10 +8247,11 @@ resolve_transfer (gfc_code *code)
&& exp->value.op.op == INTRINSIC_PARENTHESES)
exp = exp->value.op.op1;
- if (exp && exp->expr_type == EXPR_NULL && exp->ts.type == BT_UNKNOWN)
+ if (exp && exp->expr_type == EXPR_NULL
+ && code->ext.dt)
{
- gfc_error ("NULL intrinsic at %L in data transfer statement requires "
- "MOLD=", &exp->where);
+ gfc_error ("Invalid context for NULL () intrinsic at %L",
+ &exp->where);
return;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bad1f92..b63f3de 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-01 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/34547
+ * gfortran.dg/null_5.f90 : Include new error.
+ * gfortran.dg/null_6.f90 : Include new error.
+
2013-11-29 Marek Polacek <polacek@redhat.com>
PR sanitizer/59331
diff --git a/gcc/testsuite/gfortran.dg/null_5.f90 b/gcc/testsuite/gfortran.dg/null_5.f90
index 886a6a1..50b41c3 100644
--- a/gcc/testsuite/gfortran.dg/null_5.f90
+++ b/gcc/testsuite/gfortran.dg/null_5.f90
@@ -34,7 +34,7 @@ subroutine test_PR34547_1 ()
end subroutine test_PR34547_1
subroutine test_PR34547_2 ()
- print *, null () ! { dg-error "in data transfer statement requires MOLD" }
+ print *, null () ! { dg-error "Invalid context" }
end subroutine test_PR34547_2
subroutine test_PR34547_3 ()
diff --git a/gcc/testsuite/gfortran.dg/null_6.f90 b/gcc/testsuite/gfortran.dg/null_6.f90
index dd517cf..6b8f21e 100644
--- a/gcc/testsuite/gfortran.dg/null_6.f90
+++ b/gcc/testsuite/gfortran.dg/null_6.f90
@@ -30,5 +30,5 @@ end subroutine test_PR50375_2
subroutine test_PR34547_3 ()
integer, allocatable :: i(:)
- print *, NULL(i)
+ print *, NULL(i) ! { dg-error "Invalid context for NULL" }
end subroutine test_PR34547_3