From: Jakub Jelinek Date: Fri, 30 Aug 2019 11:28:22 +0000 (+0200) Subject: backport: re PR fortran/88902 (ICE: Segmentation fault (in DFS::DFS_write_tree_body)) X-Git-Tag: releases/gcc-7.5.0~273 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47eab6cb44305a6a59f13aecc7f41055dfe54a96;p=thirdparty%2Fgcc.git backport: re PR fortran/88902 (ICE: Segmentation fault (in DFS::DFS_write_tree_body)) Backported from mainline 2019-01-19 Jakub Jelinek PR fortran/88902 * trans-decl.c (gfc_get_symbol_decl): Don't add length to function or parent function if it has been added there already. * gfortran.dg/pr88902.f90: New test. From-SVN: r275088 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 478a95c5900d..60effb3f86e7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,6 +1,12 @@ 2019-08-30 Jakub Jelinek Backported from mainline + 2019-01-19 Jakub Jelinek + + PR fortran/88902 + * trans-decl.c (gfc_get_symbol_decl): Don't add length to function + or parent function if it has been added there already. + 2018-12-07 Jakub Jelinek PR fortran/88377 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index ba9fde9161c8..b266a8efee3a 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1598,13 +1598,17 @@ gfc_get_symbol_decl (gfc_symbol * sym) if (VAR_P (length) && DECL_FILE_SCOPE_P (length)) { /* Add the string length to the same context as the symbol. */ - if (DECL_CONTEXT (sym->backend_decl) == current_function_decl) - gfc_add_decl_to_function (length); - else - gfc_add_decl_to_parent_function (length); + if (DECL_CONTEXT (length) == NULL_TREE) + { + if (DECL_CONTEXT (sym->backend_decl) + == current_function_decl) + gfc_add_decl_to_function (length); + else + gfc_add_decl_to_parent_function (length); + } - gcc_assert (DECL_CONTEXT (sym->backend_decl) == - DECL_CONTEXT (length)); + gcc_assert (DECL_CONTEXT (sym->backend_decl) + == DECL_CONTEXT (length)); gfc_defer_symbol_init (sym); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 253f7c5e8cec..7f228b8e7a84 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2019-08-30 Jakub Jelinek Backported from mainline + 2019-01-19 Jakub Jelinek + + PR fortran/88902 + * gfortran.dg/pr88902.f90: New test. + 2019-01-17 Jakub Jelinek PR rtl-optimization/88870 diff --git a/gcc/testsuite/gfortran.dg/pr88902.f90 b/gcc/testsuite/gfortran.dg/pr88902.f90 new file mode 100644 index 000000000000..9e99b1be1dc2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr88902.f90 @@ -0,0 +1,6 @@ +! PR fortran/88902 +! { dg-do compile } +! { dg-require-effective-target lto } +! { dg-options "-flto --param ggc-min-heapsize=0" } + +include 'pr50069_2.f90'