aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/class.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2011-11-19 10:26:33 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2011-11-19 10:26:33 +0100
commitcf651ca2e559c5f56f23764f1c90108c52015ea0 (patch)
tree03ad52bf6cb39e5e03380e6202c1d82ec366d4bb /gcc/fortran/class.c
parentea5cbe6161d115541b7b1dee24d6f07b269cb1bb (diff)
downloadgcc-cf651ca2e559c5f56f23764f1c90108c52015ea0.zip
gcc-cf651ca2e559c5f56f23764f1c90108c52015ea0.tar.gz
gcc-cf651ca2e559c5f56f23764f1c90108c52015ea0.tar.bz2
re PR fortran/51207 ([OOP] Mark __def_init_... as FL_PARAMETER)
2011-11-19 Tobias Burnus <burnus@net-b.de> PR fortran/51207 * class.c (gfc_find_derived_vtab): Mark __def_init as PARAMETER and hence as TREE_READONLY; add subroutine attribute to __copy_ procedure. PR fortran/50640 * trans.h (GFC_DECL_PUSH_TOPLEVEL): New DECL_LANG_FLAG_7. * trans-decl.c (gfc_get_symbol_decl): Mark __def_init and vtab as GFC_DECL_PUSH_TOPLEVEL. (gfc_generate_function_code): If GFC_DECL_PUSH_TOPLEVEL, push it there. (build_function_decl): Push __copy_ procedure to the toplevel. From-SVN: r181505
Diffstat (limited to 'gcc/fortran/class.c')
-rw-r--r--gcc/fortran/class.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c
index dc76ad1..bcb2d0b 100644
--- a/gcc/fortran/class.c
+++ b/gcc/fortran/class.c
@@ -522,7 +522,7 @@ gfc_find_derived_vtab (gfc_symbol *derived)
def_init->attr.target = 1;
def_init->attr.save = SAVE_IMPLICIT;
def_init->attr.access = ACCESS_PUBLIC;
- def_init->attr.flavor = FL_VARIABLE;
+ def_init->attr.flavor = FL_PARAMETER;
gfc_set_sym_referenced (def_init);
def_init->ts.type = BT_DERIVED;
def_init->ts.u.derived = derived;
@@ -552,6 +552,7 @@ gfc_find_derived_vtab (gfc_symbol *derived)
gfc_get_symbol (name, sub_ns, &copy);
sub_ns->proc_name = copy;
copy->attr.flavor = FL_PROCEDURE;
+ copy->attr.subroutine = 1;
copy->attr.if_source = IFSRC_DECL;
if (ns->proc_name->attr.flavor == FL_MODULE)
copy->module = ns->proc_name->name;