aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2010-09-28 17:33:56 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2010-09-28 17:33:56 +0200
commit4ed5664e901fff6df3c956154d5dccd8d0ca4e42 (patch)
treeb6720643cee667f09dec29431a729f1fbace9f60 /gcc
parent2268453b5c0f425924156a445d1f1c178f821cb0 (diff)
downloadgcc-4ed5664e901fff6df3c956154d5dccd8d0ca4e42.zip
gcc-4ed5664e901fff6df3c956154d5dccd8d0ca4e42.tar.gz
gcc-4ed5664e901fff6df3c956154d5dccd8d0ca4e42.tar.bz2
re PR fortran/45756 (Multiple DECL for array valued PARAMETER (-fwhole-file issue))
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. From-SVN: r164686
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c17
2 files changed, 15 insertions, 8 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b04f3c5..54687ee 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index d15d673..2a4eb95 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -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)