diff options
| -rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/fortran/resolve.c | 7 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/null_5.f90 | 2 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/null_6.f90 | 2 |
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 |
