diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2013-12-01 11:37:09 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2013-12-01 11:37:09 +0000 |
commit | 49560f0c747c5d62ee46c9118b1ab634e985def5 (patch) | |
tree | 593ffc7b21be2cbb5d08c3e3109e806d4ab89d9e | |
parent | c931d01d7d439aa992116fa70d22fd407f8cb254 (diff) | |
download | gcc-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/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 |