]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/85084 (ICE: out of memory allocating 18446744073709551600 bytes ...)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 28 Mar 2018 17:41:51 +0000 (17:41 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 28 Mar 2018 17:41:51 +0000 (17:41 +0000)
2018-03-28  Thomas Koenig  <tkoenig@gcc.gnu.org>

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  <tkoenig@gcc.gnu.org>

PR fortran/85084
Backport from trunk.
* gfortran.dg/matmul_rank_1.f90: New test.

From-SVN: r258927

gcc/fortran/ChangeLog
gcc/fortran/frontend-passes.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/matmul_rank_1.f90 [new file with mode: 0644]

index 674f4948c5539384deb9bb9a228277605b56bd0b..d0554695aea0dcfda10cb1dd5949a3efe3090fa5 100644 (file)
@@ -1,9 +1,16 @@
+2018-03-28  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       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  <kargl@gcc.gnu.org>
 
        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  <tkoenig@gcc.gnu.org>
index 5bd8fb1e1333d169f61db8080b59ccce0d0f86a9..8941f359782acaccb5fb0869d6899a44adfd500c 100644 (file)
@@ -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);
 }
index a9da15358b837f085b775207a4acc1f599364d00..455855c1de6d4db411d48c9a35445580a6be86d6 100644 (file)
@@ -1,3 +1,10 @@
+2018-03-28  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       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  <kyrylo.tkachov@arm.com>
 
        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 (file)
index 0000000..f111b26
--- /dev/null
@@ -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