diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-01-04 22:48:21 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-01-04 22:48:21 +0100 |
commit | 94241120154b0a20b40764c56d0d26f3538927ca (patch) | |
tree | 6f760787d44b01b3bd1bdc4ca30fb9951f2f7e37 /gcc/fortran/class.c | |
parent | e4821cd8679ab65057ad7f48c2236be8ad3ed8b7 (diff) | |
download | gcc-94241120154b0a20b40764c56d0d26f3538927ca.zip gcc-94241120154b0a20b40764c56d0d26f3538927ca.tar.gz gcc-94241120154b0a20b40764c56d0d26f3538927ca.tar.bz2 |
class.c (gfc_find_intrinsic_vtab): Add _final component.
2013-01-04 Tobias Burnus <burnus@net-b.de>
* class.c (gfc_find_intrinsic_vtab): Add _final
component.
From-SVN: r194917
Diffstat (limited to 'gcc/fortran/class.c')
-rw-r--r-- | gcc/fortran/class.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 607af10..5f03d89 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -597,7 +597,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr, fclass->refs++; fclass->ts.type = BT_UNKNOWN; if (!ts->u.derived->attr.unlimited_polymorphic) - fclass->attr.abstract = ts->u.derived->attr.abstract; + fclass->attr.abstract = ts->u.derived->attr.abstract; fclass->f2k_derived = gfc_get_namespace (NULL, 0); if (gfc_add_flavor (&fclass->attr, FL_DERIVED, NULL, &gfc_current_locus) == FAILURE) @@ -2306,6 +2306,15 @@ gfc_find_intrinsic_vtab (gfc_typespec *ts) /* Set initializer. */ c->initializer = gfc_lval_expr_from_sym (copy); c->ts.interface = copy; + + /* Add component _final. */ + if (gfc_add_component (vtype, "_final", &c) == FAILURE) + goto cleanup; + c->attr.proc_pointer = 1; + c->attr.access = ACCESS_PRIVATE; + c->tb = XCNEW (gfc_typebound_proc); + c->tb->ppc = 1; + c->initializer = gfc_get_null_expr (NULL); } vtab->ts.u.derived = vtype; vtab->value = gfc_default_initializer (&vtab->ts); |