diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-09-28 17:33:56 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-09-28 17:33:56 +0200 |
commit | 4ed5664e901fff6df3c956154d5dccd8d0ca4e42 (patch) | |
tree | b6720643cee667f09dec29431a729f1fbace9f60 /gcc | |
parent | 2268453b5c0f425924156a445d1f1c178f821cb0 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 17 |
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) |