diff mbox

fortran/66045 -- NULL() on RHS of assignment

Message ID 20150515151742.GF82729@troutmask.apl.washington.edu
State New
Headers show

Commit Message

Steve Kargl May 15, 2015, 3:17 p.m. UTC
Regression tested on trunk.  OK to commit?

The patch is self-explanatory.

Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66045
	* expr.c (gfc_check_assign):  Check for assignment of NULL() instead
	of the (intended) pointer assignment.

2015-05-XX  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66045
	* gfortran.dg/null1.f90: New test.

Comments

FX Coudert May 16, 2015, 2:40 p.m. UTC | #1
>    PR fortran/66045
>    * expr.c (gfc_check_assign):  Check for assignment of NULL() instead
>    of the (intended) pointer assignment.

OK
diff mbox

Patch

Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c	(revision 223094)
+++ gcc/fortran/expr.c	(working copy)
@@ -3118,19 +3118,22 @@  gfc_check_assign (gfc_expr *lvalue, gfc_
 	bad_proc = true;
 
       /* (ii) The assignment is in the main program; or  */
-      if (gfc_current_ns->proc_name->attr.is_main_program)
+      if (gfc_current_ns->proc_name
+	  && gfc_current_ns->proc_name->attr.is_main_program)
 	bad_proc = true;
 
       /* (iii) A module or internal procedure...  */
-      if ((gfc_current_ns->proc_name->attr.proc == PROC_INTERNAL
-	   || gfc_current_ns->proc_name->attr.proc == PROC_MODULE)
+      if (gfc_current_ns->proc_name
+	  && (gfc_current_ns->proc_name->attr.proc == PROC_INTERNAL
+	      || gfc_current_ns->proc_name->attr.proc == PROC_MODULE)
 	  && gfc_current_ns->parent
 	  && (!(gfc_current_ns->parent->proc_name->attr.function
 		|| gfc_current_ns->parent->proc_name->attr.subroutine)
 	      || gfc_current_ns->parent->proc_name->attr.is_main_program))
 	{
 	  /* ... that is not a function...  */
-	  if (!gfc_current_ns->proc_name->attr.function)
+	  if (gfc_current_ns->proc_name
+	      && !gfc_current_ns->proc_name->attr.function)
 	    bad_proc = true;
 
 	  /* ... or is not an entry and has a different name.  */
Index: gcc/testsuite/gfortran.dg/null1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/null1.f90	(revision 0)
+++ gcc/testsuite/gfortran.dg/null1.f90	(working copy)
@@ -0,0 +1,9 @@ 
+! { dg-do compile }
+! PR fortran/66045
+!
+! Original code from Gerhard Steinmetz
+! <gerhard dot steinmetz dot fortran at t-online dot de>
+program p
+   contains
+   integer :: null=null() ! { dg-error "NULL appears on right-hand side" }
+end