From: Paul Thomas Date: Sun, 1 Dec 2013 11:37:09 +0000 (+0000) Subject: Index... X-Git-Tag: releases/gcc-4.9.0~2345 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=49560f0c747c5d62ee46c9118b1ab634e985def5;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 124a45894f09..b01b84b8477e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-12-01 Paul Thomas + + PR fortran/34547 + * resolve.c (resolve_transfer): EXPR_NULL is always in an + invalid context in a transfer statement. + 2013-11-28 Sergey Ostanevich * lang.opt (Wopenmp-simd): New. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 4befb9fdda41..d16347d034e2 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 bad1f9273812..b63f3de24842 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-01 Paul Thomas + + PR fortran/34547 + * gfortran.dg/null_5.f90 : Include new error. + * gfortran.dg/null_6.f90 : Include new error. + 2013-11-29 Marek Polacek PR sanitizer/59331 diff --git a/gcc/testsuite/gfortran.dg/null_5.f90 b/gcc/testsuite/gfortran.dg/null_5.f90 index 886a6a1ff8bb..50b41c3e8bf6 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 dd517cfa3e2b..6b8f21e63bc1 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