* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147489
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
2009-05-13 Tobias Burnus <burnus@net-b.de>
PR fortran/34153
case EXEC_LABEL_ASSIGN:
fputs ("LABEL ASSIGN ", dumpfile);
show_expr (c->expr);
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:
break;
case EXEC_POINTER_ASSIGN:
case EXEC_GOTO:
fputs ("GOTO ", dumpfile);
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);
else
{
show_expr (c->expr);
fputs (", (", dumpfile);
for (; d; d = d ->block)
{
fputs (", (", dumpfile);
for (; d; d = d ->block)
{
- code_indent (level, d->label);
+ code_indent (level, d->label1);
if (d->block != NULL)
fputc (',', dumpfile);
else
if (d->block != NULL)
fputc (',', dumpfile);
else
fputs ("IF ", dumpfile);
show_expr (c->expr);
fprintf (dumpfile, " %d, %d, %d",
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);
show_code (level + 1, d->next);
}
show_code (level + 1, d->next);
}
- code_indent (level, c->label);
+ code_indent (level, c->label1);
fputs ("ENDIF", dumpfile);
break;
fputs ("ENDIF", dumpfile);
break;
show_code (level + 1, d->next);
}
show_code (level + 1, d->next);
}
- code_indent (level, c->label);
+ code_indent (level, c->label1);
fputs ("END SELECT", dumpfile);
break;
fputs ("END SELECT", dumpfile);
break;
show_code (level + 1, c->block->next);
show_code (level + 1, c->block->next);
- code_indent (level, c->label);
+ code_indent (level, c->label1);
fputs ("END DO", dumpfile);
break;
fputs ("END DO", dumpfile);
break;
struct gfc_code *block, *next;
locus loc;
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
gfc_symtree *symtree;
gfc_expr *expr, *expr2;
/* A name isn't sufficient to identify a subroutine, we need the actual
new_st.op = EXEC_ARITHMETIC_IF;
new_st.expr = expr;
new_st.op = EXEC_ARITHMETIC_IF;
new_st.expr = expr;
new_st.label2 = l2;
new_st.label3 = l3;
new_st.label2 = l2;
new_st.label3 = l3;
new_st.op = EXEC_ARITHMETIC_IF;
new_st.expr = expr;
new_st.op = EXEC_ARITHMETIC_IF;
new_st.expr = expr;
new_st.label2 = l2;
new_st.label3 = l3;
new_st.label2 = l2;
new_st.label3 = l3;
&& gfc_reference_st_label (label, ST_LABEL_TARGET) == FAILURE)
goto cleanup;
&& gfc_reference_st_label (label, ST_LABEL_TARGET) == FAILURE)
goto cleanup;
if (new_st.op == EXEC_DO_WHILE)
new_st.expr = iter.end;
if (new_st.op == EXEC_DO_WHILE)
new_st.expr = iter.end;
expr->symtree->n.sym->attr.assign = 1;
new_st.op = EXEC_LABEL_ASSIGN;
expr->symtree->n.sym->attr.assign = 1;
new_st.op = EXEC_LABEL_ASSIGN;
new_st.expr = expr;
return MATCH_YES;
}
new_st.expr = expr;
return MATCH_YES;
}
return MATCH_ERROR;
new_st.op = EXEC_GOTO;
return MATCH_ERROR;
new_st.op = EXEC_GOTO;
tail->op = EXEC_GOTO;
}
while (gfc_match_char (',') == MATCH_YES);
tail->op = EXEC_GOTO;
}
while (gfc_match_char (',') == MATCH_YES);
tail->next = gfc_get_code ();
tail->next->op = EXEC_GOTO;
tail->next = gfc_get_code ();
tail->next->op = EXEC_GOTO;
- tail->next->label = label;
+ tail->next->label1 = label;
}
while (gfc_match_char (',') == MATCH_YES);
}
while (gfc_match_char (',') == MATCH_YES);
c->next = gfc_get_code ();
c->next->op = EXEC_GOTO;
c->next = gfc_get_code ();
c->next->op = EXEC_GOTO;
- c->next->label = a->label;
+ c->next->label1 = a->label;
gfc_state_data s;
gfc_symtree *stree;
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;
if (new_st.ext.iterator != NULL)
stree = new_st.ext.iterator->var->symtree;
- resolve_branch (b->label, b);
+ resolve_branch (b->label1, b);
&code->expr->where);
}
else
&code->expr->where);
}
else
- resolve_branch (code->label, code);
+ resolve_branch (code->label1, code);
break;
case EXEC_LABEL_ASSIGN:
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",
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
if (t == SUCCESS
&& (code->expr->expr_type != EXPR_VARIABLE
|| code->expr->symtree->n.sym->ts.type != BT_INTEGER
gfc_error ("Arithmetic IF statement at %L requires a numeric "
"expression", &code->expr->where);
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;
resolve_branch (code->label2, code);
resolve_branch (code->label3, code);
break;
len = GFC_DECL_STRING_LEN (se.expr);
addr = GFC_DECL_ASSIGN_ADDR (se.expr);
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
{
{
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);
label_len = format->value.character.length;
len_tree = build_int_cst (NULL_TREE, label_len);
- 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);
/* ASSIGNED GOTO. */
gfc_init_se (&se, NULL);
/* Check the label list. */
do
{
/* 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,
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,
/* Build something to compare with. */
zero = gfc_build_const (TREE_TYPE (se.expr), integer_zero_node);
/* 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. */
{
/* 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));
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);
tmp = fold_build2 (LT_EXPR, boolean_type_node, se.expr, zero);
else
tmp = fold_build2 (NE_EXPR, boolean_type_node, se.expr, zero);
branch1 = fold_build3 (COND_EXPR, void_type_node, tmp, branch1, branch2);
}
else
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. */
&& code->label2->value != code->label3->value)
{
/* if (cond <= 0) take branch1 else take branch2. */