From: Thomas Koenig Date: Wed, 28 Mar 2018 17:41:51 +0000 (+0000) Subject: re PR fortran/85084 (ICE: out of memory allocating 18446744073709551600 bytes ...) X-Git-Tag: releases/gcc-6.5.0~414 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f23c4ba80aa3f1031fdf622d6096ff291139b94c;p=thirdparty%2Fgcc.git re PR fortran/85084 (ICE: out of memory allocating 18446744073709551600 bytes ...) 2018-03-28 Thomas Koenig PR fortran/85084 Backport from trunk. * frontend-passes.c (gfc_run_passes): Do not run front-end optimizations if a previous error occurred. 2018-03-28 Thomas Koenig PR fortran/85084 Backport from trunk. * gfortran.dg/matmul_rank_1.f90: New test. From-SVN: r258927 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 674f4948c553..d0554695aea0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,9 +1,16 @@ +2018-03-28 Thomas Koenig + + PR fortran/85084 + Backport from trunk. + * frontend-passes.c (gfc_run_passes): Do not run front-end + optimizations if a previous error occurred. + 2018-03-20 Steven G. Kargl ChangeLog entry for r258698 PR fortran/85001 * interface.c (symbol_rank): Remove bogus null pointer check that - crept in when translating a ternary operator into an if-else + crept in when translating a ternary operator into an if-else constructor. 2018-03-19 Thomas Koenig diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index 5bd8fb1e1333..8941f359782a 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -127,6 +127,10 @@ gfc_run_passes (gfc_namespace *ns) doloop_list.release (); int w, e; + gfc_get_errors (&w, &e); + if (e > 0) + return; + if (flag_frontend_optimize) { optimize_namespace (ns); @@ -137,10 +141,6 @@ gfc_run_passes (gfc_namespace *ns) expr_array.release (); } - gfc_get_errors (&w, &e); - if (e > 0) - return; - if (flag_realloc_lhs) realloc_strings (ns); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a9da15358b83..455855c1de6d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-03-28 Thomas Koenig + + PR fortran/85084 + Backport from trunk. + * frontend-passes.c (gfc_run_passes): Do not run front-end + optimizations if a previous error occurred. + 2018-03-28 Kyrylo Tkachov Backport from mainline diff --git a/gcc/testsuite/gfortran.dg/matmul_rank_1.f90 b/gcc/testsuite/gfortran.dg/matmul_rank_1.f90 new file mode 100644 index 000000000000..f111b26018fd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/matmul_rank_1.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! { dg-additional-options "-ffrontend-optimize" } +! PR 85044 - used to die on allocating a negative amount of memory. +! Test case by Gerhard Steinmetz. +program p + real :: a(3,3) = 1.0 + real :: b(33) + b = matmul(a, a) ! { dg-error "Incompatible ranks" } +end