Commit 9b09c4de by Jerry DeLisle

re PR fortran/34387 (FAIL: gfortran.dg/optional_dim_2.f90: FE vs library argument missmatch)

2008-01-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/34387
	* trans-expr.c (gfc_conv_missing_dummy): Use a temporary to type convert
	the dummy variable expression, test for NULL, and pass the variable
	address to the called function.

From-SVN: r131356
parent 346ecba8
2008-01-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/34387
* trans-expr.c (gfc_conv_missing_dummy): Use a temporary to type convert
the dummy variable expression, test for NULL, and pass the variable
address to the called function.
2007-01-06 Tobias Burnus <burnus@net-b.de>
PR fortran/34658
......
......@@ -154,18 +154,24 @@ gfc_conv_missing_dummy (gfc_se * se, gfc_expr * arg, gfc_typespec ts, int kind)
present = gfc_conv_expr_present (arg->symtree->n.sym);
tmp = build3 (COND_EXPR, TREE_TYPE (se->expr), present, se->expr,
fold_convert (TREE_TYPE (se->expr), integer_zero_node));
tmp = gfc_evaluate_now (tmp, &se->pre);
if (kind > 0)
{
/* Create a temporary and convert it to the correct type. */
tmp = gfc_get_int_type (kind);
tmp = fold_convert (tmp, se->expr);
tmp = gfc_evaluate_now (tmp, &se->pre);
tmp = fold_convert (tmp, build_fold_indirect_ref (se->expr));
/* Test for a NULL value. */
tmp = build3 (COND_EXPR, TREE_TYPE (tmp), present, tmp, integer_one_node);
tmp = gfc_evaluate_now (tmp, &se->pre);
se->expr = build_fold_addr_expr (tmp);
}
else
{
tmp = build3 (COND_EXPR, TREE_TYPE (se->expr), present, se->expr,
fold_convert (TREE_TYPE (se->expr), integer_zero_node));
tmp = gfc_evaluate_now (tmp, &se->pre);
se->expr = tmp;
}
se->expr = tmp;
if (ts.type == BT_CHARACTER)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment