diff options
author | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-15 13:52:33 +0000 |
---|---|---|
committer | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-15 13:52:33 +0000 |
commit | bcc41e511c80b8b8aa549a438ffcac69481db979 (patch) | |
tree | a70032d51f8a223474b6f5114ee467e48b7758f9 /gcc/fortran/symbol.c | |
parent | db5a36931d0f9f33bd4938107010f0c155f742b1 (diff) | |
download | gcc-bcc41e511c80b8b8aa549a438ffcac69481db979.tar.gz |
2010-05-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/43207
PR fortran/43969
* gfortran.h (gfc_class_null_initializer): New prototype.
* expr.c (gfc_class_null_initializer): New function to build a NULL
initializer for CLASS pointers.
* symbol.c (gfc_build_class_symbol): Modify internal naming of class
containers. Remove default NULL initialization of $data component.
* trans.c (gfc_allocate_array_with_status): Fix wording of an error
message.
* trans-expr.c (gfc_conv_initializer,gfc_trans_subcomponent_assign):
Use new function 'gfc_class_null_initializer'.
* trans-intrinsic.c (gfc_conv_allocated): Handle allocatable scalar
class variables.
2010-05-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/43207
PR fortran/43969
* gfortran.dg/class_18.f03: New.
* gfortran.dg/class_19.f03: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159431 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 8403578b81e..ceb45bfa6ec 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -4717,15 +4717,15 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr, /* Determine the name of the encapsulating type. */ if ((*as) && (*as)->rank && attr->allocatable) - sprintf (name, ".class.%s.%d.a", ts->u.derived->name, (*as)->rank); + sprintf (name, "class$%s_%d_a", ts->u.derived->name, (*as)->rank); else if ((*as) && (*as)->rank) - sprintf (name, ".class.%s.%d", ts->u.derived->name, (*as)->rank); + sprintf (name, "class$%s_%d", ts->u.derived->name, (*as)->rank); else if (attr->pointer) - sprintf (name, ".class.%s.p", ts->u.derived->name); + sprintf (name, "class$%s_p", ts->u.derived->name); else if (attr->allocatable) - sprintf (name, ".class.%s.a", ts->u.derived->name); + sprintf (name, "class$%s_a", ts->u.derived->name); else - sprintf (name, ".class.%s", ts->u.derived->name); + sprintf (name, "class$%s", ts->u.derived->name); gfc_find_symbol (name, ts->u.derived->ns, 0, &fclass); if (fclass == NULL) @@ -4759,7 +4759,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr, c->attr.codimension = attr->codimension; c->attr.abstract = ts->u.derived->attr.abstract; c->as = (*as); - c->initializer = gfc_get_null_expr (NULL); + c->initializer = NULL; /* Add component '$vptr'. */ if (gfc_add_component (fclass, "$vptr", &c) == FAILURE) |