diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-12-08 21:26:11 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-12-08 21:26:11 +0000 |
commit | d0803c0cf815ee85711cd36f5d429f784ec6ac26 (patch) | |
tree | 0dcf60be34df4e190072841358f65e1621e21e6c /gcc/fortran/symbol.c | |
parent | 7e964f49026322eb357412e38ba98e14325ca80c (diff) | |
download | gcc-d0803c0cf815ee85711cd36f5d429f784ec6ac26.zip gcc-d0803c0cf815ee85711cd36f5d429f784ec6ac26.tar.gz gcc-d0803c0cf815ee85711cd36f5d429f784ec6ac26.tar.bz2 |
re PR fortran/65173 (ICE while compiling wrong code)
2016-12-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/65173
PR fortran/69064
PR fortran/69859
PR fortran/78350
* gfortran.h (gfc_namespace): Remove old_cl_list member.
* parse.c (use_modules, next_statement): old_cl_list is gone.
(clear_default_charlen): Remove no longer used function.
(reject_statement): Do not try ot clean up gfc_charlen structure(s)
that may have been added to a cl_list list.
* symbol.c (gfc_new_charlen): old_cl_list structure is gone.
2016-12-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/65173
PR fortran/69064
PR fortran/69859
PR fortran/78350
* gfortran.dg/misplaced_implicit_character.f90: Adjust errors.
* gfortran.dg/charlen_01.f90: New test.
* gfortran.dg/charlen_02.f90: Ditto.
* gfortran.dg/charlen_03.f90: Ditto.
* gfortran.dg/charlen_04.f90: Ditto.
* gfortran.dg/charlen_05.f90: Ditto.
* gfortran.dg/charlen_06.f90: Ditto.
* gfortran.dg/charlen_07.f90: Ditto.
* gfortran.dg/charlen_08.f90: Ditto.
* gfortran.dg/charlen_09.f90: Ditto.
* gfortran.dg/charlen_10.f90: Ditto.
* gfortran.dg/charlen_11.f90: Ditto.
* gfortran.dg/charlen_12.f90: Ditto.
* gfortran.dg/charlen_13.f90: Ditto.
* gfortran.dg/charlen_14.f90: Ditto.
* gfortran.dg/charlen_15.f90: Ditto.
* gfortran.dg/charlen_16.f90: Ditto.
From-SVN: r243463
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 0b711ca..882be92 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -3794,31 +3794,22 @@ gfc_charlen* gfc_new_charlen (gfc_namespace *ns, gfc_charlen *old_cl) { gfc_charlen *cl; + cl = gfc_get_charlen (); /* Copy old_cl. */ if (old_cl) { - /* Put into namespace, but don't allow reject_statement - to free it if old_cl is given. */ - gfc_charlen **prev = &ns->cl_list; - cl->next = ns->old_cl_list; - while (*prev != ns->old_cl_list) - prev = &(*prev)->next; - *prev = cl; - ns->old_cl_list = cl; cl->length = gfc_copy_expr (old_cl->length); cl->length_from_typespec = old_cl->length_from_typespec; cl->backend_decl = old_cl->backend_decl; cl->passed_length = old_cl->passed_length; cl->resolved = old_cl->resolved; } - else - { - /* Put into namespace. */ - cl->next = ns->cl_list; - ns->cl_list = cl; - } + + /* Put into namespace. */ + cl->next = ns->cl_list; + ns->cl_list = cl; return cl; } |