OSDN Git Service

2010-09-28 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Sep 2010 15:33:56 +0000 (15:33 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Sep 2010 15:33:56 +0000 (15:33 +0000)
        PR fortran/45756
        * trans-decl.c (gfc_get_symbol_decl): Use gsym for decl of
        module parameters.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164686 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c

index b04f3c5..54687ee 100644 (file)
@@ -1,3 +1,9 @@
+2010-09-28  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/45756
+       * trans-decl.c (gfc_get_symbol_decl): Use gsym for decl of
+       module parameters.
+
 2010-09-27  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/40569
index d15d673..2a4eb95 100644 (file)
@@ -1133,11 +1133,18 @@ gfc_get_symbol_decl (gfc_symbol * sym)
   if (sym->backend_decl)
     return sym->backend_decl;
 
+  /* Special case for array-valued named constants from intrinsic
+     procedures; those are inlined.  */
+  if (sym->attr.use_assoc && sym->from_intmod
+      && sym->attr.flavor == FL_PARAMETER)
+    intrinsic_array_parameter = true;
+
   /* If use associated and whole file compilation, use the module
      declaration.  */
   if (gfc_option.flag_whole_file
-       && sym->attr.flavor == FL_VARIABLE
-       && sym->attr.use_assoc
+       && (sym->attr.flavor == FL_VARIABLE
+           || sym->attr.flavor == FL_PARAMETER)
+       && sym->attr.use_assoc && !intrinsic_array_parameter
        && sym->module)
     {
       gfc_gsymbol *gsym;
@@ -1182,12 +1189,6 @@ gfc_get_symbol_decl (gfc_symbol * sym)
   if (sym->attr.intrinsic)
     internal_error ("intrinsic variable which isn't a procedure");
 
-  /* Special case for array-valued named constants from intrinsic
-     procedures; those are inlined.  */
-  if (sym->attr.use_assoc && sym->from_intmod && sym->attr.dimension
-      && sym->attr.flavor == FL_PARAMETER)
-    intrinsic_array_parameter = true;
-
   /* Create string length decl first so that they can be used in the
      type declaration.  */
   if (sym->ts.type == BT_CHARACTER)