aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/match.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2011-01-13 17:32:33 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2011-01-13 17:32:33 +0100
commit29a63d67791eb9a7bea3c64425ff3b3494968812 (patch)
treef2bef0c7e12ae3147eefdbda3213ebc7162d7c4d /gcc/fortran/match.c
parentb41f0b3440bc8fe4982404c16a63b41521929450 (diff)
downloadgcc-29a63d67791eb9a7bea3c64425ff3b3494968812.zip
gcc-29a63d67791eb9a7bea3c64425ff3b3494968812.tar.gz
gcc-29a63d67791eb9a7bea3c64425ff3b3494968812.tar.bz2
re PR fortran/45848 ([OOP] ICE on invalid code in fortran/symbol.c:2410)
2011-01-13 Tobias Burnus <burnus@net-b.de> Mikael Morin <mikael@gcc.gnu.org> PR fortran/45848 PR fortran/47204 * gfortran.h (gfc_code): Move union ext's case_list into the struct block. * dump-parse-tree.c (show_code_node): Adapt by prefixing * case_list by "block.". * frontend-passes.c (gfc_code_walker): Ditto. * match.c (gfc_match_goto, gfc_match_call, gfc_match_case, gfc_match_type_is, gfc_match_class_is): Ditto. * resolve.c (resolve_select, resolve_select_type): Ditto. * st.c (gfc_free_statement): Ditto. * trans-stmt.c (gfc_trans_integer_select, * gfc_trans_logical_select, gfc_trans_character_select): Ditto. * parse.c (resolve_all_program_units): For error recovery, avoid segfault is proc_name is NULL. 2011-01-13 Tobias Burnus <burnus@net-b.de> Mikael Morin <mikael@gcc.gnu.org> PR fortran/45848 PR fortran/47204 * gfortran.dg/select_type_20.f90: New. * gfortran.dg/select_type_21.f90: New. Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org> From-SVN: r168753
Diffstat (limited to 'gcc/fortran/match.c')
-rw-r--r--gcc/fortran/match.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 926fea7..70f5862 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -2651,7 +2651,7 @@ gfc_match_goto (void)
NULL, i++);
tail->op = EXEC_SELECT;
- tail->ext.case_list = cp;
+ tail->ext.block.case_list = cp;
tail->next = gfc_get_code ();
tail->next->op = EXEC_GOTO;
@@ -3607,7 +3607,7 @@ gfc_match_call (void)
new_case = gfc_get_case ();
new_case->high = gfc_get_int_expr (gfc_default_integer_kind, NULL, i);
new_case->low = new_case->high;
- c->ext.case_list = new_case;
+ c->ext.block.case_list = new_case;
c->next = gfc_get_code ();
c->next->op = EXEC_GOTO;
@@ -4658,7 +4658,7 @@ gfc_match_case (void)
new_st.op = EXEC_SELECT;
c = gfc_get_case ();
c->where = gfc_current_locus;
- new_st.ext.case_list = c;
+ new_st.ext.block.case_list = c;
return MATCH_YES;
}
@@ -4690,7 +4690,7 @@ gfc_match_case (void)
goto cleanup;
new_st.op = EXEC_SELECT;
- new_st.ext.case_list = head;
+ new_st.ext.block.case_list = head;
return MATCH_YES;
@@ -4738,7 +4738,7 @@ gfc_match_type_is (void)
goto cleanup;
new_st.op = EXEC_SELECT_TYPE;
- new_st.ext.case_list = c;
+ new_st.ext.block.case_list = c;
/* Create temporary variable. */
select_type_set_tmp (&c->ts);
@@ -4778,7 +4778,7 @@ gfc_match_class_is (void)
c = gfc_get_case ();
c->where = gfc_current_locus;
c->ts.type = BT_UNKNOWN;
- new_st.ext.case_list = c;
+ new_st.ext.block.case_list = c;
select_type_set_tmp (NULL);
return MATCH_YES;
}
@@ -4811,7 +4811,7 @@ gfc_match_class_is (void)
goto cleanup;
new_st.op = EXEC_SELECT_TYPE;
- new_st.ext.case_list = c;
+ new_st.ext.block.case_list = c;
/* Create temporary variable. */
select_type_set_tmp (&c->ts);