diff options
author | Janus Weil <janus@gcc.gnu.org> | 2010-11-09 11:39:46 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-11-09 11:39:46 +0100 |
commit | b04533af33ccf91e2874b24dd3e678d195c83587 (patch) | |
tree | 14d1f54316ef0bc517c72a674952cb7d233fd288 /gcc/fortran/trans-expr.c | |
parent | 6496e42f8734797b1a5613585c47e51398419547 (diff) | |
download | gcc-b04533af33ccf91e2874b24dd3e678d195c83587.zip gcc-b04533af33ccf91e2874b24dd3e678d195c83587.tar.gz gcc-b04533af33ccf91e2874b24dd3e678d195c83587.tar.bz2 |
re PR fortran/46313 ([OOP] class container naming collisions)
2010-11-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/46313
* gfortran.h (gfc_add_data_component,gfc_add_vptr_component,
gfc_add_hash_component,gfc_add_size_component,
gfc_add_def_init_component): New macros.
* class.c (gfc_add_component_ref): Renamed data component.
(get_unique_type_string): New function.
(gfc_build_class_symbol): Use 'get_unique_type_string' to construct
uniques names for the class containers. Rename components.
(gfc_find_derived_vtab): Use 'get_unique_type_string' to construct
uniques names for the vtab symbols. Rename components.
* decl.c (attr_decl1): Renamed class container components.
* iresolve.c (gfc_resolve_extends_type_of): Ditto.
* match.c (select_type_set_tmp): Renamed temporaries.
* module.c (read_module): Renamed vtab and vtype symbols.
* resolve.c (resolve_structure_cons,resolve_typebound_function,
resolve_typebound_subroutine,resolve_deallocate_expr,
resolve_select_type,resolve_fl_derived): Renamed class container and
vtab components.
* trans-array.c (structure_alloc_comps): Ditto.
* trans-decl.c (gfc_trans_deferred_vars): Ditto.
* trans-expr.c (gfc_conv_derived_to_class,gfc_conv_structure,
gfc_trans_class_init_assign,gfc_trans_class_assign): Ditto.
* trans-intrinsic.c (gfc_conv_intrinsic_sizeof,
gfc_conv_intrinsic_storage_size,gfc_conv_allocated,gfc_conv_associated,
gfc_conv_same_type_as): Ditto.
* trans-stmt.c (gfc_trans_allocate): Ditto.
2010-11-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/46313
* gfortran.dg/class_29.f03: New.
From-SVN: r166480
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index a95b421..94dfa34 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2584,7 +2584,7 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, var = gfc_create_var (tmp, "class"); /* Set the vptr. */ - cmp = gfc_find_component (declared, "$vptr", true, true); + cmp = gfc_find_component (declared, "_vptr", true, true); ctree = fold_build3_loc (input_location, COMPONENT_REF, TREE_TYPE (cmp->backend_decl), var, cmp->backend_decl, NULL_TREE); @@ -2598,7 +2598,7 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, fold_convert (TREE_TYPE (ctree), tmp)); /* Now set the data field. */ - cmp = gfc_find_component (declared, "$data", true, true); + cmp = gfc_find_component (declared, "_data", true, true); ctree = fold_build3_loc (input_location, COMPONENT_REF, TREE_TYPE (cmp->backend_decl), var, cmp->backend_decl, NULL_TREE); @@ -4504,13 +4504,13 @@ gfc_conv_structure (gfc_se * se, gfc_expr * expr, int init) if (!c->expr || cm->attr.allocatable) continue; - if (strcmp (cm->name, "$size") == 0) + if (strcmp (cm->name, "_size") == 0) { val = TYPE_SIZE_UNIT (gfc_get_derived_type (cm->ts.u.derived)); CONSTRUCTOR_APPEND_ELT (v, cm->backend_decl, val); } else if (cm->initializer && cm->initializer->expr_type != EXPR_NULL - && strcmp (cm->name, "$extends") == 0) + && strcmp (cm->name, "_extends") == 0) { tree vtab; gfc_symbol *vtabs; @@ -5875,15 +5875,15 @@ gfc_trans_class_init_assign (gfc_code *code) gfc_start_block (&block); lhs = gfc_copy_expr (code->expr1); - gfc_add_component_ref (lhs, "$data"); + gfc_add_data_component (lhs); rhs = gfc_copy_expr (code->expr1); - gfc_add_component_ref (rhs, "$vptr"); - gfc_add_component_ref (rhs, "$def_init"); + gfc_add_vptr_component (rhs); + gfc_add_def_init_component (rhs); sz = gfc_copy_expr (code->expr1); - gfc_add_component_ref (sz, "$vptr"); - gfc_add_component_ref (sz, "$size"); + gfc_add_vptr_component (sz); + gfc_add_size_component (sz); gfc_init_se (&dst, NULL); gfc_init_se (&src, NULL); @@ -5914,9 +5914,9 @@ gfc_trans_class_assign (gfc_expr *expr1, gfc_expr *expr2, gfc_exec_op op) if (expr2->ts.type != BT_CLASS) { - /* Insert an additional assignment which sets the '$vptr' field. */ + /* Insert an additional assignment which sets the '_vptr' field. */ lhs = gfc_copy_expr (expr1); - gfc_add_component_ref (lhs, "$vptr"); + gfc_add_vptr_component (lhs); if (expr2->ts.type == BT_DERIVED) { gfc_symbol *vtab; @@ -5945,7 +5945,7 @@ gfc_trans_class_assign (gfc_expr *expr1, gfc_expr *expr2, gfc_exec_op op) if (expr2->ts.type == BT_CLASS) op = EXEC_ASSIGN; else - gfc_add_component_ref (expr1, "$data"); + gfc_add_data_component (expr1); if (op == EXEC_ASSIGN) tmp = gfc_trans_assignment (expr1, expr2, false, true); |