From 951d634180a28c7c29eabedf1dc2348835708b5e Mon Sep 17 00:00:00 2001
From: Mikael Morin <mikael@gcc.gnu.org>
Date: Sat, 31 Jul 2010 10:27:36 +0000
Subject: [PATCH] re PR fortran/42051 ([OOP] ICE on array-valued function with
 CLASS formal argument)

2010-07-31  Mikael Morin  <mikael@gcc.gnu.org>

	PR fortran/42051
	PR fortran/44064
	* symbol.c (changed_syms): Made non-static.
	* parse.c (changed_syms): Declare new external.
	(next_statement): Assert changed_syms is NULL at the beginning.

From-SVN: r162776
---
 gcc/fortran/ChangeLog | 8 ++++++++
 gcc/fortran/parse.c   | 4 ++++
 gcc/fortran/symbol.c  | 2 +-
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index bf7d4d19463e..1bc2a1fa2af7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2010-07-31  Mikael Morin  <mikael@gcc.gnu.org>
+
+	PR fortran/42051
+	PR fortran/44064
+	* symbol.c (changed_syms): Made non-static.
+	* parse.c (changed_syms): Declare new external. 
+	(next_statement): Assert changed_syms is NULL at the beginning.
+
 2010-07-30  Janus Weil  <janus@gcc.gnu.org>
 	    Steven G. Kargl  <kargl@gcc.gnu.org>
 
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 989d6448b3bd..94440e984576 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -879,6 +879,7 @@ blank_line:
   return ST_NONE;
 }
 
+extern gfc_symbol *changed_syms;
 
 /* Return the next non-ST_NONE statement to the caller.  We also worry
    about including files and the ends of include files at this stage.  */
@@ -889,6 +890,9 @@ next_statement (void)
   gfc_statement st;
   locus old_locus;
 
+  /* We start with a clean state.  */
+  gcc_assert (changed_syms == NULL);
+
   gfc_new_block = NULL;
 
   gfc_current_ns->old_cl_list = gfc_current_ns->cl_list;
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index e713cd83192e..0231da110fe3 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -98,7 +98,7 @@ gfc_namespace *gfc_global_ns_list;
 
 gfc_gsymbol *gfc_gsym_root = NULL;
 
-static gfc_symbol *changed_syms = NULL;
+gfc_symbol *changed_syms = NULL;
 
 gfc_dt_list *gfc_derived_types;
 
-- 
GitLab