diff options
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 27f378c..dc10bc6 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -269,10 +269,10 @@ gfc_set_default_type (gfc_symbol *sym, int error_flag, gfc_namespace *ns) sym->ts = *ts; sym->attr.implicit_type = 1; - if (ts->cl) + if (ts->type == BT_CHARACTER && ts->u.cl) { - sym->ts.cl = gfc_get_charlen (); - *sym->ts.cl = *ts->cl; + sym->ts.u.cl = gfc_get_charlen (); + *sym->ts.u.cl = *ts->u.cl; } if (sym->attr.is_bind_c == 1) @@ -1774,10 +1774,10 @@ gfc_add_component (gfc_symbol *sym, const char *name, } if (sym->attr.extension - && gfc_find_component (sym->components->ts.derived, name, true, true)) + && gfc_find_component (sym->components->ts.u.derived, name, true, true)) { gfc_error ("Component '%s' at %C already in the parent type " - "at %L", name, &sym->components->ts.derived->declared_at); + "at %L", name, &sym->components->ts.u.derived->declared_at); return FAILURE; } @@ -1810,8 +1810,8 @@ switch_types (gfc_symtree *st, gfc_symbol *from, gfc_symbol *to) return; sym = st->n.sym; - if (sym->ts.type == BT_DERIVED && sym->ts.derived == from) - sym->ts.derived = to; + if (sym->ts.type == BT_DERIVED && sym->ts.u.derived == from) + sym->ts.u.derived = to; switch_types (st->left, from, to); switch_types (st->right, from, to); @@ -1863,8 +1863,8 @@ gfc_use_derived (gfc_symbol *sym) for (i = 0; i < GFC_LETTERS; i++) { t = &sym->ns->default_type[i]; - if (t->derived == sym) - t->derived = s; + if (t->u.derived == sym) + t->u.derived = s; } st = gfc_find_symtree (sym->ns->sym_root, sym->name); @@ -1917,7 +1917,7 @@ gfc_find_component (gfc_symbol *sym, const char *name, && sym->attr.extension && sym->components->ts.type == BT_DERIVED) { - p = gfc_find_component (sym->components->ts.derived, name, + p = gfc_find_component (sym->components->ts.u.derived, name, noaccess, silent); /* Do not overwrite the error. */ if (p == NULL) @@ -3263,8 +3263,8 @@ gfc_is_var_automatic (gfc_symbol *sym) return true; /* Check for non-constant length character variables. */ if (sym->ts.type == BT_CHARACTER - && sym->ts.cl - && !gfc_is_constant_expr (sym->ts.cl->length)) + && sym->ts.u.cl + && !gfc_is_constant_expr (sym->ts.u.cl->length)) return true; return false; } @@ -3481,14 +3481,14 @@ verify_bind_c_derived_type (gfc_symbol *derived_sym) /* BIND(C) derived types must have interoperable components. */ if (curr_comp->ts.type == BT_DERIVED - && curr_comp->ts.derived->ts.is_iso_c != 1 - && curr_comp->ts.derived != derived_sym) + && curr_comp->ts.u.derived->ts.is_iso_c != 1 + && curr_comp->ts.u.derived != derived_sym) { /* This should be allowed; the draft says a derived-type can not have type parameters if it is has the BIND attribute. Type parameters seem to be for making parameterized derived types. There's no need to verify the type if it is c_ptr/c_funptr. */ - retval = verify_bind_c_derived_type (curr_comp->ts.derived); + retval = verify_bind_c_derived_type (curr_comp->ts.u.derived); } else { @@ -3587,10 +3587,10 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name, /* The c_ptr and c_funptr derived types will provide the definition for c_null_ptr and c_null_funptr, respectively. */ if (ptr_id == ISOCBINDING_NULL_PTR) - tmp_sym->ts.derived = get_iso_c_binding_dt (ISOCBINDING_PTR); + tmp_sym->ts.u.derived = get_iso_c_binding_dt (ISOCBINDING_PTR); else - tmp_sym->ts.derived = get_iso_c_binding_dt (ISOCBINDING_FUNPTR); - if (tmp_sym->ts.derived == NULL) + tmp_sym->ts.u.derived = get_iso_c_binding_dt (ISOCBINDING_FUNPTR); + if (tmp_sym->ts.u.derived == NULL) { /* This can occur if the user forgot to declare c_ptr or c_funptr and they're trying to use one of the procedures @@ -3603,7 +3603,7 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name, ? "_gfortran_iso_c_binding_c_ptr" : "_gfortran_iso_c_binding_c_funptr")); - tmp_sym->ts.derived = + tmp_sym->ts.u.derived = get_iso_c_binding_dt (ptr_id == ISOCBINDING_NULL_PTR ? ISOCBINDING_PTR : ISOCBINDING_FUNPTR); } @@ -3624,7 +3624,7 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name, tmp_sym->value = gfc_get_expr (); tmp_sym->value->expr_type = EXPR_STRUCTURE; tmp_sym->value->ts.type = BT_DERIVED; - tmp_sym->value->ts.derived = tmp_sym->ts.derived; + tmp_sym->value->ts.u.derived = tmp_sym->ts.u.derived; /* Create a constructor with no expr, that way we can recognize if the user tries to call the structure constructor for one of the iso_c_binding derived types during resolution (resolve_structure_cons). */ @@ -3728,7 +3728,7 @@ gen_cptr_param (gfc_formal_arglist **head, gfc_get_ha_symbol (c_ptr_type, &(c_ptr_sym)); } - param_sym->ts.derived = c_ptr_sym; + param_sym->ts.u.derived = c_ptr_sym; param_sym->module = gfc_get_string (module_name); /* Make new formal arg. */ @@ -3956,7 +3956,7 @@ gfc_copy_formal_args_intr (gfc_symbol *dest, gfc_intrinsic_sym *src) formal_arg->sym->attr.dummy = 1; if (formal_arg->sym->ts.type == BT_CHARACTER) - formal_arg->sym->ts.cl = gfc_new_charlen (gfc_current_ns); + formal_arg->sym->ts.u.cl = gfc_new_charlen (gfc_current_ns); /* If this isn't the first arg, set up the next ptr. For the last arg built, the formal_arg->next will never get set to @@ -4219,8 +4219,8 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s, tmp_sym->value->value.character.string[0] = (gfc_char_t) c_interop_kinds_table[s].value; tmp_sym->value->value.character.string[1] = '\0'; - tmp_sym->ts.cl = gfc_get_charlen (); - tmp_sym->ts.cl->length = gfc_int_expr (1); + tmp_sym->ts.u.cl = gfc_get_charlen (); + tmp_sym->ts.u.cl->length = gfc_int_expr (1); /* May not need this in both attr and ts, but do need in attr for writing module file. */ @@ -4264,7 +4264,7 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s, tmp_sym->attr.referenced = 1; - tmp_sym->ts.derived = tmp_sym; + tmp_sym->ts.u.derived = tmp_sym; /* Add the symbol created for the derived type to the current ns. */ dt_list_ptr = &(gfc_derived_types); @@ -4349,13 +4349,13 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s, C address of. */ tmp_sym->ts.type = BT_DERIVED; if (s == ISOCBINDING_LOC) - tmp_sym->ts.derived = + tmp_sym->ts.u.derived = get_iso_c_binding_dt (ISOCBINDING_PTR); else - tmp_sym->ts.derived = + tmp_sym->ts.u.derived = get_iso_c_binding_dt (ISOCBINDING_FUNPTR); - if (tmp_sym->ts.derived == NULL) + if (tmp_sym->ts.u.derived == NULL) { /* Create the necessary derived type so we can continue processing the file. */ @@ -4365,7 +4365,7 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s, (const char *)(s == ISOCBINDING_FUNLOC ? "_gfortran_iso_c_binding_c_funptr" : "_gfortran_iso_c_binding_c_ptr")); - tmp_sym->ts.derived = + tmp_sym->ts.u.derived = get_iso_c_binding_dt (s == ISOCBINDING_FUNLOC ? ISOCBINDING_FUNPTR : ISOCBINDING_PTR); @@ -4517,9 +4517,9 @@ gfc_get_derived_super_type (gfc_symbol* derived) gcc_assert (derived->components); gcc_assert (derived->components->ts.type == BT_DERIVED); - gcc_assert (derived->components->ts.derived); + gcc_assert (derived->components->ts.u.derived); - return derived->components->ts.derived; + return derived->components->ts.u.derived; } |