diff options
| author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-03 08:02:08 +0000 |
|---|---|---|
| committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-03 08:02:08 +0000 |
| commit | 0dc7e13b889bb433dba3f315c6365bb1b4ddd933 (patch) | |
| tree | 133835c5805778595f910d23a753df1e8ef7791c | |
| parent | 09c2d9530da603238d41e03bfc9252e92a2def66 (diff) | |
| download | ppe42-gcc-0dc7e13b889bb433dba3f315c6365bb1b4ddd933.tar.gz ppe42-gcc-0dc7e13b889bb433dba3f315c6365bb1b4ddd933.zip | |
2007-07-03 Tobias Burnus <burnus@net-b.de>
PR fortran/20888
* resolve.c (resolve_operator): Check for NULL as operand.
2007-07-03 Tobias Burnus <burnus@net-b.de>
PR fortran/20888
* gfortran.dg/null_2.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126247 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/fortran/resolve.c | 7 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/null_2.f90 | 15 |
4 files changed, 32 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6f0747e723a..80f1e3c5384 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2007-07-03 Tobias Burnus <burnus@net-b.de> + + PR fortran/20888 + * resolve.c (resolve_operator): Check for NULL as operand. + 2007-07-02 Tobias Burnus <burnus@net-b.de> * gfortran.texi (Fortran 2003): Add ISO Bind C. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index fde5043403c..b249f30835c 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2583,6 +2583,13 @@ resolve_operator (gfc_expr *e) op2 = e->value.op.op2; dual_locus_error = false; + if ((op1 && op1->expr_type == EXPR_NULL) + || (op2 && op2->expr_type == EXPR_NULL)) + { + sprintf (msg, _("Invalid context for NULL() pointer at %%L")); + goto bad_op; + } + switch (e->value.op.operator) { case INTRINSIC_UPLUS: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4c8dadf1d2b..1d3db36b61d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-07-03 Tobias Burnus <burnus@net-b.de> + + PR fortran/20888 + * gfortran.dg/null_2.f90: New. + 2007-07-03 Uros Bizjak <ubizjak@gmail.com> Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> diff --git a/gcc/testsuite/gfortran.dg/null_2.f90 b/gcc/testsuite/gfortran.dg/null_2.f90 new file mode 100644 index 00000000000..3102aad622c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/null_2.f90 @@ -0,0 +1,15 @@ +! { dg-do compile } +! +! NULL(...) pointer is not allowed as operand +! PR fortran/20888 +! +! Contributed by Joost VandeVondele +! +PROGRAM main + IMPLICIT NONE + REAL, POINTER :: TEST + NULLIFY(TEST) + TEST => -NULL(TEST) ! { dg-error "Invalid context for NULL" } + IF (TEST .EQ. NULL(TEST)) TEST=>NULL() ! { dg-error "Invalid context for NULL" } + IF (NULL(TEST) .EQ. TEST) TEST=>NULL() ! { dg-error "Invalid context for NULL" } +END PROGRAM main |

