From 29a63d67791eb9a7bea3c64425ff3b3494968812 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Thu, 13 Jan 2011 17:32:33 +0100 Subject: re PR fortran/45848 ([OOP] ICE on invalid code in fortran/symbol.c:2410) 2011-01-13 Tobias Burnus Mikael Morin 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 Mikael Morin 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 From-SVN: r168753 --- gcc/fortran/match.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'gcc/fortran/match.c') 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); -- cgit v1.1