gfortran.h (gfc_code): Rename struct member label to label1.
2009-05-12 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.h (gfc_code): Rename struct member label to label1. * dump-parse-tree.c (show_code_node): Update symbol. * trans-stmt.c (gfc_trans_label_assign, gfc_trans_goto, gfc_trans_arithmetic_if)": Ditto. * resolve.c (gfc_resolve_blocks, resolve_code): Ditto. * match.c (match_arithmetic_if, gfc_match_if, gfc_reference_st_label, gfc_match_assign, gfc_match_goto): Ditto. * parse.c (parse_do_block): Ditto. From-SVN: r147489
This commit is contained in:
parent
286c4fcbc8
commit
79bd194804
7 changed files with 45 additions and 34 deletions
|
@ -1,3 +1,14 @@
|
|||
2009-05-13 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
* gfortran.h (gfc_code): Rename struct member label to label1.
|
||||
* dump-parse-tree.c (show_code_node): Update symbol.
|
||||
* trans-stmt.c (gfc_trans_label_assign, gfc_trans_goto,
|
||||
gfc_trans_arithmetic_if)": Ditto.
|
||||
* resolve.c (gfc_resolve_blocks, resolve_code): Ditto.
|
||||
* match.c (match_arithmetic_if, gfc_match_if, gfc_reference_st_label,
|
||||
gfc_match_assign, gfc_match_goto): Ditto.
|
||||
* parse.c (parse_do_block): Ditto.
|
||||
|
||||
2009-05-13 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/34153
|
||||
|
|
|
@ -1174,7 +1174,7 @@ show_code_node (int level, gfc_code *c)
|
|||
case EXEC_LABEL_ASSIGN:
|
||||
fputs ("LABEL ASSIGN ", dumpfile);
|
||||
show_expr (c->expr);
|
||||
fprintf (dumpfile, " %d", c->label->value);
|
||||
fprintf (dumpfile, " %d", c->label1->value);
|
||||
break;
|
||||
|
||||
case EXEC_POINTER_ASSIGN:
|
||||
|
@ -1186,8 +1186,8 @@ show_code_node (int level, gfc_code *c)
|
|||
|
||||
case EXEC_GOTO:
|
||||
fputs ("GOTO ", dumpfile);
|
||||
if (c->label)
|
||||
fprintf (dumpfile, "%d", c->label->value);
|
||||
if (c->label1)
|
||||
fprintf (dumpfile, "%d", c->label1->value);
|
||||
else
|
||||
{
|
||||
show_expr (c->expr);
|
||||
|
@ -1197,7 +1197,7 @@ show_code_node (int level, gfc_code *c)
|
|||
fputs (", (", dumpfile);
|
||||
for (; d; d = d ->block)
|
||||
{
|
||||
code_indent (level, d->label);
|
||||
code_indent (level, d->label1);
|
||||
if (d->block != NULL)
|
||||
fputc (',', dumpfile);
|
||||
else
|
||||
|
@ -1260,7 +1260,7 @@ show_code_node (int level, gfc_code *c)
|
|||
fputs ("IF ", dumpfile);
|
||||
show_expr (c->expr);
|
||||
fprintf (dumpfile, " %d, %d, %d",
|
||||
c->label->value, c->label2->value, c->label3->value);
|
||||
c->label1->value, c->label2->value, c->label3->value);
|
||||
break;
|
||||
|
||||
case EXEC_IF:
|
||||
|
@ -1287,7 +1287,7 @@ show_code_node (int level, gfc_code *c)
|
|||
show_code (level + 1, d->next);
|
||||
}
|
||||
|
||||
code_indent (level, c->label);
|
||||
code_indent (level, c->label1);
|
||||
|
||||
fputs ("ENDIF", dumpfile);
|
||||
break;
|
||||
|
@ -1317,7 +1317,7 @@ show_code_node (int level, gfc_code *c)
|
|||
show_code (level + 1, d->next);
|
||||
}
|
||||
|
||||
code_indent (level, c->label);
|
||||
code_indent (level, c->label1);
|
||||
fputs ("END SELECT", dumpfile);
|
||||
break;
|
||||
|
||||
|
@ -1398,7 +1398,7 @@ show_code_node (int level, gfc_code *c)
|
|||
|
||||
show_code (level + 1, c->block->next);
|
||||
|
||||
code_indent (level, c->label);
|
||||
code_indent (level, c->label1);
|
||||
fputs ("END DO", dumpfile);
|
||||
break;
|
||||
|
||||
|
|
|
@ -1913,7 +1913,7 @@ typedef struct gfc_code
|
|||
struct gfc_code *block, *next;
|
||||
locus loc;
|
||||
|
||||
gfc_st_label *here, *label, *label2, *label3;
|
||||
gfc_st_label *here, *label1, *label2, *label3;
|
||||
gfc_symtree *symtree;
|
||||
gfc_expr *expr, *expr2;
|
||||
/* A name isn't sufficient to identify a subroutine, we need the actual
|
||||
|
|
|
@ -1389,7 +1389,7 @@ match_arithmetic_if (void)
|
|||
|
||||
new_st.op = EXEC_ARITHMETIC_IF;
|
||||
new_st.expr = expr;
|
||||
new_st.label = l1;
|
||||
new_st.label1 = l1;
|
||||
new_st.label2 = l2;
|
||||
new_st.label3 = l3;
|
||||
|
||||
|
@ -1470,7 +1470,7 @@ gfc_match_if (gfc_statement *if_type)
|
|||
|
||||
new_st.op = EXEC_ARITHMETIC_IF;
|
||||
new_st.expr = expr;
|
||||
new_st.label = l1;
|
||||
new_st.label1 = l1;
|
||||
new_st.label2 = l2;
|
||||
new_st.label3 = l3;
|
||||
|
||||
|
@ -1789,7 +1789,7 @@ done:
|
|||
&& gfc_reference_st_label (label, ST_LABEL_TARGET) == FAILURE)
|
||||
goto cleanup;
|
||||
|
||||
new_st.label = label;
|
||||
new_st.label1 = label;
|
||||
|
||||
if (new_st.op == EXEC_DO_WHILE)
|
||||
new_st.expr = iter.end;
|
||||
|
@ -2033,7 +2033,7 @@ gfc_match_assign (void)
|
|||
expr->symtree->n.sym->attr.assign = 1;
|
||||
|
||||
new_st.op = EXEC_LABEL_ASSIGN;
|
||||
new_st.label = label;
|
||||
new_st.label1 = label;
|
||||
new_st.expr = expr;
|
||||
return MATCH_YES;
|
||||
}
|
||||
|
@ -2063,7 +2063,7 @@ gfc_match_goto (void)
|
|||
return MATCH_ERROR;
|
||||
|
||||
new_st.op = EXEC_GOTO;
|
||||
new_st.label = label;
|
||||
new_st.label1 = label;
|
||||
return MATCH_YES;
|
||||
}
|
||||
|
||||
|
@ -2108,7 +2108,7 @@ gfc_match_goto (void)
|
|||
tail = tail->block;
|
||||
}
|
||||
|
||||
tail->label = label;
|
||||
tail->label1 = label;
|
||||
tail->op = EXEC_GOTO;
|
||||
}
|
||||
while (gfc_match_char (',') == MATCH_YES);
|
||||
|
@ -2161,7 +2161,7 @@ gfc_match_goto (void)
|
|||
|
||||
tail->next = gfc_get_code ();
|
||||
tail->next->op = EXEC_GOTO;
|
||||
tail->next->label = label;
|
||||
tail->next->label1 = label;
|
||||
}
|
||||
while (gfc_match_char (',') == MATCH_YES);
|
||||
|
||||
|
@ -2782,7 +2782,7 @@ gfc_match_call (void)
|
|||
|
||||
c->next = gfc_get_code ();
|
||||
c->next->op = EXEC_GOTO;
|
||||
c->next->label = a->label;
|
||||
c->next->label1 = a->label;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2867,7 +2867,7 @@ parse_do_block (void)
|
|||
gfc_state_data s;
|
||||
gfc_symtree *stree;
|
||||
|
||||
s.ext.end_do_label = new_st.label;
|
||||
s.ext.end_do_label = new_st.label1;
|
||||
|
||||
if (new_st.ext.iterator != NULL)
|
||||
stree = new_st.ext.iterator->var->symtree;
|
||||
|
|
|
@ -6645,7 +6645,7 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns)
|
|||
break;
|
||||
|
||||
case EXEC_GOTO:
|
||||
resolve_branch (b->label, b);
|
||||
resolve_branch (b->label1, b);
|
||||
break;
|
||||
|
||||
case EXEC_SELECT:
|
||||
|
@ -6927,7 +6927,7 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
|
|||
&code->expr->where);
|
||||
}
|
||||
else
|
||||
resolve_branch (code->label, code);
|
||||
resolve_branch (code->label1, code);
|
||||
break;
|
||||
|
||||
case EXEC_RETURN:
|
||||
|
@ -6951,9 +6951,9 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
|
|||
break;
|
||||
|
||||
case EXEC_LABEL_ASSIGN:
|
||||
if (code->label->defined == ST_LABEL_UNKNOWN)
|
||||
if (code->label1->defined == ST_LABEL_UNKNOWN)
|
||||
gfc_error ("Label %d referenced at %L is never defined",
|
||||
code->label->value, &code->label->where);
|
||||
code->label1->value, &code->label1->where);
|
||||
if (t == SUCCESS
|
||||
&& (code->expr->expr_type != EXPR_VARIABLE
|
||||
|| code->expr->symtree->n.sym->ts.type != BT_INTEGER
|
||||
|
@ -6978,7 +6978,7 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
|
|||
gfc_error ("Arithmetic IF statement at %L requires a numeric "
|
||||
"expression", &code->expr->where);
|
||||
|
||||
resolve_branch (code->label, code);
|
||||
resolve_branch (code->label1, code);
|
||||
resolve_branch (code->label2, code);
|
||||
resolve_branch (code->label3, code);
|
||||
break;
|
||||
|
|
|
@ -109,16 +109,16 @@ gfc_trans_label_assign (gfc_code * code)
|
|||
len = GFC_DECL_STRING_LEN (se.expr);
|
||||
addr = GFC_DECL_ASSIGN_ADDR (se.expr);
|
||||
|
||||
label_tree = gfc_get_label_decl (code->label);
|
||||
label_tree = gfc_get_label_decl (code->label1);
|
||||
|
||||
if (code->label->defined == ST_LABEL_TARGET)
|
||||
if (code->label1->defined == ST_LABEL_TARGET)
|
||||
{
|
||||
label_tree = gfc_build_addr_expr (pvoid_type_node, label_tree);
|
||||
len_tree = integer_minus_one_node;
|
||||
}
|
||||
else
|
||||
{
|
||||
gfc_expr *format = code->label->format;
|
||||
gfc_expr *format = code->label1->format;
|
||||
|
||||
label_len = format->value.character.length;
|
||||
len_tree = build_int_cst (NULL_TREE, label_len);
|
||||
|
@ -144,8 +144,8 @@ gfc_trans_goto (gfc_code * code)
|
|||
tree tmp;
|
||||
gfc_se se;
|
||||
|
||||
if (code->label != NULL)
|
||||
return build1_v (GOTO_EXPR, gfc_get_label_decl (code->label));
|
||||
if (code->label1 != NULL)
|
||||
return build1_v (GOTO_EXPR, gfc_get_label_decl (code->label1));
|
||||
|
||||
/* ASSIGNED GOTO. */
|
||||
gfc_init_se (&se, NULL);
|
||||
|
@ -170,7 +170,7 @@ gfc_trans_goto (gfc_code * code)
|
|||
/* Check the label list. */
|
||||
do
|
||||
{
|
||||
target = gfc_get_label_decl (code->label);
|
||||
target = gfc_get_label_decl (code->label1);
|
||||
tmp = gfc_build_addr_expr (pvoid_type_node, target);
|
||||
tmp = fold_build2 (EQ_EXPR, boolean_type_node, tmp, assigned_goto);
|
||||
tmp = build3_v (COND_EXPR, tmp,
|
||||
|
@ -719,14 +719,14 @@ gfc_trans_arithmetic_if (gfc_code * code)
|
|||
/* Build something to compare with. */
|
||||
zero = gfc_build_const (TREE_TYPE (se.expr), integer_zero_node);
|
||||
|
||||
if (code->label->value != code->label2->value)
|
||||
if (code->label1->value != code->label2->value)
|
||||
{
|
||||
/* If (cond < 0) take branch1 else take branch2.
|
||||
First build jumps to the COND .LT. 0 and the COND .EQ. 0 cases. */
|
||||
branch1 = build1_v (GOTO_EXPR, gfc_get_label_decl (code->label));
|
||||
branch1 = build1_v (GOTO_EXPR, gfc_get_label_decl (code->label1));
|
||||
branch2 = build1_v (GOTO_EXPR, gfc_get_label_decl (code->label2));
|
||||
|
||||
if (code->label->value != code->label3->value)
|
||||
if (code->label1->value != code->label3->value)
|
||||
tmp = fold_build2 (LT_EXPR, boolean_type_node, se.expr, zero);
|
||||
else
|
||||
tmp = fold_build2 (NE_EXPR, boolean_type_node, se.expr, zero);
|
||||
|
@ -734,9 +734,9 @@ gfc_trans_arithmetic_if (gfc_code * code)
|
|||
branch1 = fold_build3 (COND_EXPR, void_type_node, tmp, branch1, branch2);
|
||||
}
|
||||
else
|
||||
branch1 = build1_v (GOTO_EXPR, gfc_get_label_decl (code->label));
|
||||
branch1 = build1_v (GOTO_EXPR, gfc_get_label_decl (code->label1));
|
||||
|
||||
if (code->label->value != code->label3->value
|
||||
if (code->label1->value != code->label3->value
|
||||
&& code->label2->value != code->label3->value)
|
||||
{
|
||||
/* if (cond <= 0) take branch1 else take branch2. */
|
||||
|
|
Loading…
Add table
Reference in a new issue