trans-decl.c (gfc_get_symbol_decl): Removed duplicate code.

* trans-decl.c (gfc_get_symbol_decl): Removed duplicate code.
	* trans-expr.c (gfc_conv_intrinsic_to_class): Fixed indentation.
	Fixed datatype of charlen to be a 32-bit int.

From-SVN: r220345
This commit is contained in:
Andre Vehreschild 2015-02-02 10:59:47 +01:00 committed by Andre Vehreschild
parent e404a667bf
commit 56d1b78a4a
3 changed files with 27 additions and 22 deletions

View File

@ -1,3 +1,10 @@
2015-01-30 Andre Vehreschild <vehre@gmx.de>
* trans-decl.c (gfc_get_symbol_decl): Removed duplicate code.
* trans-expr.c (gfc_conv_intrinsic_to_class): Fixed indentation.
Fixed datatype of charlen to be a 32-bit int.
2015-02-01 Joseph Myers <joseph@codesourcery.com>
* error.c (gfc_warning (const char *, ...), gfc_warning_now (const

View File

@ -1443,8 +1443,6 @@ gfc_get_symbol_decl (gfc_symbol * sym)
if (sym->ts.type == BT_CLASS && sym->backend_decl)
GFC_DECL_CLASS(sym->backend_decl) = 1;
if (sym->ts.type == BT_CLASS && sym->backend_decl)
GFC_DECL_CLASS(sym->backend_decl) = 1;
return sym->backend_decl;
}

View File

@ -660,26 +660,26 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e,
expression can be evaluated to a constant one. */
else
{
/* Try to simplify the expression. */
gfc_simplify_expr (e, 0);
if (e->expr_type == EXPR_CONSTANT && !e->ts.u.cl->resolved)
{
/* Amazingly all data is present to compute the length of a
constant string, but the expression is not yet there. */
e->ts.u.cl->length = gfc_get_constant_expr (BT_INTEGER, 1,
&e->where);
mpz_set_ui (e->ts.u.cl->length->value.integer,
e->value.character.length);
gfc_conv_const_charlen (e->ts.u.cl);
e->ts.u.cl->resolved = 1;
gfc_add_modify (&parmse->pre, ctree, e->ts.u.cl->backend_decl);
}
else
{
gfc_error ("Can't compute the length of the char array at %L.",
&e->where);
}
}
/* Try to simplify the expression. */
gfc_simplify_expr (e, 0);
if (e->expr_type == EXPR_CONSTANT && !e->ts.u.cl->resolved)
{
/* Amazingly all data is present to compute the length of a
constant string, but the expression is not yet there. */
e->ts.u.cl->length = gfc_get_constant_expr (BT_INTEGER, 4,
&e->where);
mpz_set_ui (e->ts.u.cl->length->value.integer,
e->value.character.length);
gfc_conv_const_charlen (e->ts.u.cl);
e->ts.u.cl->resolved = 1;
gfc_add_modify (&parmse->pre, ctree, e->ts.u.cl->backend_decl);
}
else
{
gfc_error ("Can't compute the length of the char array at %L.",
&e->where);
}
}
}
/* Pass the address of the class object. */
parmse->expr = gfc_build_addr_expr (NULL_TREE, var);