aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/expr.c11
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/pr15754.f904
4 files changed, 17 insertions, 7 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fed9ec3..990eb18 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-06 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * expr.c (gfc_check_assign): Don't allow NULL as rhs in a
+ non-pointer assignment.
+
2005-04-05 Feng Wang <fengwang@nudt.edu.cn>
PR fortran/15959
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index f4a4b589..d0c99e3 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -1789,11 +1789,12 @@ gfc_check_assign (gfc_expr * lvalue, gfc_expr * rvalue, int conform)
return FAILURE;
}
- /* This is a guaranteed segfault and possibly a typo: p = NULL()
- instead of p => NULL() */
- if (rvalue->expr_type == EXPR_NULL)
- gfc_warning ("NULL appears on right-hand side in assignment at %L",
- &rvalue->where);
+ if (rvalue->expr_type == EXPR_NULL)
+ {
+ gfc_error ("NULL appears on right-hand side in assignment at %L",
+ &rvalue->where);
+ return FAILURE;
+ }
/* This is possibly a typo: x = f() instead of x => f() */
if (gfc_option.warn_surprising
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 962e7e0..dc98fcd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-04-06 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * gfortran.dg/pr15754.f90: Change annotations to dg-error.
+
2005-04-06 Joseph S. Myers <joseph@codesourcery.com>
* gcc.dg/weak/weak-12.c, g++.dg/ext/weak2.C: New tests.
diff --git a/gcc/testsuite/gfortran.dg/pr15754.f90 b/gcc/testsuite/gfortran.dg/pr15754.f90
index 6d8e34f..f595d6e 100644
--- a/gcc/testsuite/gfortran.dg/pr15754.f90
+++ b/gcc/testsuite/gfortran.dg/pr15754.f90
@@ -1,7 +1,7 @@
! we didn't give a warning if the RHS of an assignment was NULL
! { dg-do-compile }
INTEGER, POINTER :: P
-I = NULL() ! { dg-warning "NULL appears" "Assignment non-pointer = NULL" }
-P = NULL() ! { dg-warning "NULL appears" "Assignment pointer = NULL" }
+I = NULL() ! { dg-error "NULL appears" "Assignment non-pointer = NULL" }
+P = NULL() ! { dg-error "NULL appears" "Assignment pointer = NULL" }
P => NULL()
END