Commit 7c87eac6 by Paul Brook Committed by Paul Brook

trans.c (gfc_finish_block, [...]): Build statement lists instead of compound expr chains.

	* trans.c (gfc_finish_block, gfc_add_expr_to_block): Build statement
	lists instead of compound expr chains.
	(gfc_trans_code): Annotate statement lists.

From-SVN: r82604
parent 13413760
2004-05-03 Paul Brook <paul@codesourcery.com>
* trans.c (gfc_finish_block, gfc_add_expr_to_block): Build statement
lists instead of compound expr chains.
(gfc_trans_code): Annotate statement lists.
2004-06-03 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-06-03 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* trans-array.c: Fix spelling in comments. * trans-array.c: Fix spelling in comments.
......
...@@ -215,7 +215,10 @@ gfc_finish_block (stmtblock_t * stmtblock) ...@@ -215,7 +215,10 @@ gfc_finish_block (stmtblock_t * stmtblock)
tree expr; tree expr;
tree block; tree block;
expr = rationalize_compound_expr (stmtblock->head); expr = stmtblock->head;
if (!expr)
expr = build_empty_stmt ();
stmtblock->head = NULL_TREE; stmtblock->head = NULL_TREE;
if (stmtblock->has_scope) if (stmtblock->has_scope)
...@@ -387,10 +390,23 @@ gfc_add_expr_to_block (stmtblock_t * block, tree expr) ...@@ -387,10 +390,23 @@ gfc_add_expr_to_block (stmtblock_t * block, tree expr)
if (expr == NULL_TREE || IS_EMPTY_STMT (expr)) if (expr == NULL_TREE || IS_EMPTY_STMT (expr))
return; return;
expr = fold (expr); if (TREE_CODE (expr) != STATEMENT_LIST)
expr = fold (expr);
if (block->head) if (block->head)
block->head = build_v (COMPOUND_EXPR, block->head, expr); {
if (TREE_CODE (block->head) != STATEMENT_LIST)
{
tree tmp;
tmp = block->head;
block->head = NULL_TREE;
append_to_statement_list (tmp, &block->head);
}
append_to_statement_list (expr, &block->head);
}
else else
/* Don't bother creating a list if we only have a single statement. */
block->head = expr; block->head = expr;
} }
...@@ -592,7 +608,11 @@ gfc_trans_code (gfc_code * code) ...@@ -592,7 +608,11 @@ gfc_trans_code (gfc_code * code)
if (res != NULL_TREE && ! IS_EMPTY_STMT (res)) if (res != NULL_TREE && ! IS_EMPTY_STMT (res))
{ {
annotate_with_locus (res, input_location); if (TREE_CODE (res) == STATEMENT_LIST)
annotate_all_with_locus (&res, input_location);
else
annotate_with_locus (res, input_location);
/* Add the new statemment to the block. */ /* Add the new statemment to the block. */
gfc_add_expr_to_block (&block, res); gfc_add_expr_to_block (&block, res);
} }
......
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