diff options
author | Tobias Burnus <burnus@net-b.de> | 2011-01-13 17:32:33 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-01-13 17:32:33 +0100 |
commit | 29a63d67791eb9a7bea3c64425ff3b3494968812 (patch) | |
tree | f2bef0c7e12ae3147eefdbda3213ebc7162d7c4d /gcc/fortran/parse.c | |
parent | b41f0b3440bc8fe4982404c16a63b41521929450 (diff) | |
download | gcc-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/parse.c')
-rw-r--r-- | gcc/fortran/parse.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index e7898cc..b51e12b 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -4190,7 +4190,8 @@ resolve_all_program_units (gfc_namespace *gfc_global_ns_list) gfc_current_ns = gfc_global_ns_list; for (; gfc_current_ns; gfc_current_ns = gfc_current_ns->sibling) { - gfc_current_locus = gfc_current_ns->proc_name->declared_at; + if (gfc_current_ns->proc_name) + gfc_current_locus = gfc_current_ns->proc_name->declared_at; gfc_resolve (gfc_current_ns); gfc_current_ns->derived_types = gfc_derived_types; gfc_derived_types = NULL; |