mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 17:50:51 +08:00
* trans-expr.c: Remove trailing ^M.
From-SVN: r100359
This commit is contained in:
parent
771e816bd8
commit
ec09945c8e
gcc/fortran
@ -1,3 +1,7 @@
|
||||
2005-05-30 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* trans-expr.c: Remove trailing ^M.
|
||||
|
||||
2005-05-29 Janne Blomqvist <jblomqvi@vipunen.hut.fi>
|
||||
Steven G. Kargl <kargls@comcast.net>
|
||||
|
||||
|
@ -354,43 +354,43 @@ gfc_conv_variable (gfc_se * se, gfc_expr * expr)
|
||||
se->expr = gfc_build_addr_expr (NULL, se->expr);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Dereference the expression, where needed. Since characters
|
||||
are entirely different from other types, they are treated
|
||||
separately. */
|
||||
if (sym->ts.type == BT_CHARACTER)
|
||||
{
|
||||
/* Dereference character pointer dummy arguments
|
||||
|
||||
/* Dereference the expression, where needed. Since characters
|
||||
are entirely different from other types, they are treated
|
||||
separately. */
|
||||
if (sym->ts.type == BT_CHARACTER)
|
||||
{
|
||||
/* Dereference character pointer dummy arguments
|
||||
or results. */
|
||||
if ((sym->attr.pointer || sym->attr.allocatable)
|
||||
&& ((sym->attr.dummy)
|
||||
|| (sym->attr.function
|
||||
|| sym->attr.result)))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((sym->attr.pointer || sym->attr.allocatable)
|
||||
&& ((sym->attr.dummy)
|
||||
|| (sym->attr.function
|
||||
|| sym->attr.result)))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Dereference non-charcter scalar dummy arguments. */
|
||||
if ((sym->attr.dummy) && (!sym->attr.dimension))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
|
||||
if ((sym->attr.dummy) && (!sym->attr.dimension))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
|
||||
/* Dereference scalar hidden result. */
|
||||
if ((gfc_option.flag_f2c && sym->ts.type == BT_COMPLEX)
|
||||
&& (sym->attr.function || sym->attr.result)
|
||||
&& (!sym->attr.dimension))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
|
||||
/* Dereference non-character pointer variables.
|
||||
if ((gfc_option.flag_f2c && sym->ts.type == BT_COMPLEX)
|
||||
&& (sym->attr.function || sym->attr.result)
|
||||
&& (!sym->attr.dimension))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
|
||||
/* Dereference non-character pointer variables.
|
||||
These must be dummys or results or scalars. */
|
||||
if ((sym->attr.pointer || sym->attr.allocatable)
|
||||
&& ((sym->attr.dummy)
|
||||
|| (sym->attr.function || sym->attr.result)
|
||||
|| (!sym->attr.dimension)))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
}
|
||||
|
||||
if ((sym->attr.pointer || sym->attr.allocatable)
|
||||
&& ((sym->attr.dummy)
|
||||
|| (sym->attr.function || sym->attr.result)
|
||||
|| (!sym->attr.dimension)))
|
||||
se->expr = gfc_build_indirect_ref (se->expr);
|
||||
}
|
||||
|
||||
ref = expr->ref;
|
||||
}
|
||||
|
||||
@ -1136,8 +1136,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
|
||||
if (se->direct_byref)
|
||||
{
|
||||
arglist = gfc_chainon_list (arglist, se->expr);
|
||||
|
||||
/* Add string length to argument list. */
|
||||
|
||||
/* Add string length to argument list. */
|
||||
if (sym->ts.type == BT_CHARACTER)
|
||||
{
|
||||
sym->ts.cl->backend_decl = len;
|
||||
@ -1147,11 +1147,11 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
|
||||
}
|
||||
else if (sym->result->attr.dimension)
|
||||
{
|
||||
gcc_assert (se->loop && se->ss);
|
||||
gcc_assert (se->loop && se->ss);
|
||||
|
||||
/* Set the type of the array. */
|
||||
tmp = gfc_typenode_for_spec (&sym->ts);
|
||||
info->dimen = se->loop->dimen;
|
||||
info->dimen = se->loop->dimen;
|
||||
|
||||
/* Allocate a temporary to store the result. */
|
||||
gfc_trans_allocate_temp_array (se->loop, info, tmp);
|
||||
@ -1161,7 +1161,7 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
|
||||
gfc_conv_descriptor_stride (info->descriptor, gfc_rank_cst[0]);
|
||||
gfc_add_modify_expr (&se->pre, tmp,
|
||||
convert (TREE_TYPE (tmp), integer_zero_node));
|
||||
|
||||
|
||||
/* Pass the temporary as the first argument. */
|
||||
tmp = info->descriptor;
|
||||
tmp = gfc_build_addr_expr (NULL, tmp);
|
||||
@ -1178,8 +1178,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
|
||||
}
|
||||
else if (sym->ts.type == BT_CHARACTER)
|
||||
{
|
||||
|
||||
/* Pass the string length. */
|
||||
|
||||
/* Pass the string length. */
|
||||
sym->ts.cl->backend_decl = len;
|
||||
type = gfc_get_character_type (sym->ts.kind, sym->ts.cl);
|
||||
type = build_pointer_type (type);
|
||||
@ -1188,18 +1188,18 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
|
||||
if (sym->attr.pointer || sym->attr.allocatable)
|
||||
{
|
||||
/* Build char[4] * pstr. */
|
||||
tmp = fold_build2 (MINUS_EXPR, gfc_charlen_type_node, len,
|
||||
convert (gfc_charlen_type_node, integer_one_node));
|
||||
tmp = build_range_type (gfc_array_index_type, gfc_index_zero_node, tmp);
|
||||
tmp = build_array_type (gfc_character1_type_node, tmp);
|
||||
tmp = fold_build2 (MINUS_EXPR, gfc_charlen_type_node, len,
|
||||
convert (gfc_charlen_type_node, integer_one_node));
|
||||
tmp = build_range_type (gfc_array_index_type, gfc_index_zero_node, tmp);
|
||||
tmp = build_array_type (gfc_character1_type_node, tmp);
|
||||
var = gfc_create_var (build_pointer_type (tmp), "pstr");
|
||||
|
||||
/* Provide an address expression for the function arguments. */
|
||||
var = gfc_build_addr_expr (NULL, var);
|
||||
/* Provide an address expression for the function arguments. */
|
||||
var = gfc_build_addr_expr (NULL, var);
|
||||
}
|
||||
else
|
||||
{
|
||||
var = gfc_conv_string_tmp (se, type, len);
|
||||
var = gfc_conv_string_tmp (se, type, len);
|
||||
}
|
||||
arglist = gfc_chainon_list (arglist, var);
|
||||
arglist = gfc_chainon_list (arglist,
|
||||
@ -1364,11 +1364,11 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
|
||||
se->string_length = len;
|
||||
}
|
||||
else if (sym->ts.type == BT_CHARACTER)
|
||||
{
|
||||
{
|
||||
/* Dereference for character pointer results. */
|
||||
if (sym->attr.pointer || sym->attr.allocatable)
|
||||
se->expr = gfc_build_indirect_ref (var);
|
||||
else
|
||||
se->expr = gfc_build_indirect_ref (var);
|
||||
else
|
||||
se->expr = var;
|
||||
|
||||
se->string_length = len;
|
||||
@ -2297,7 +2297,7 @@ gfc_trans_assignment (gfc_expr * expr1, gfc_expr * expr2)
|
||||
}
|
||||
else
|
||||
gfc_conv_expr (&lse, expr1);
|
||||
|
||||
|
||||
tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts.type);
|
||||
gfc_add_expr_to_block (&body, tmp);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user