re PR fortran/85084 (ICE: out of memory allocating 18446744073709551600 bytes ...)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 27 Mar 2018 18:42:02 +0000 (18:42 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 27 Mar 2018 18:42:02 +0000 (18:42 +0000)
2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/85084
* frontend-passes.c (gfc_run_passes): Do not run front-end
optimizations if a previous error occurred.

2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

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

From-SVN: r258900

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 fb0f04e47f02a5f64258da62e3b4be733274c75e..b88b27ba784981c8c7953875c3ce57912b94161e 100644 (file)
@@ -1,3 +1,9 @@
+2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/85084
+       * frontend-passes.c (gfc_run_passes): Do not run front-end
+       optimizations if a previous error occurred.
+
 2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
        Harald Anlauf  <anlauf@gmx.de>
 
index 1ffd27d686a495ff7989c0af08ce86b4f8f8cd67..6888224cd8111169a6e1ced08d3fd53a06d09eb8 100644 (file)
@@ -156,6 +156,10 @@ gfc_run_passes (gfc_namespace *ns)
   check_locus (ns);
 #endif
 
+  gfc_get_errors (&w, &e);
+  if (e > 0)
+    return;
+
   if (flag_frontend_optimize || flag_frontend_loop_interchange)
     optimize_namespace (ns);
 
@@ -168,10 +172,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 642bf15852b3dcd1e6d4f497c449d8bfd0c9675d..b8d56f8532c6f46f1f7bf70f7f0c1506ef969e85 100644 (file)
@@ -1,3 +1,8 @@
+2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/85084
+       * gfortran.dg/matmul_rank_1.f90: New test.
+
 2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
        Harald Anlauf  <anlauf@gmx.de>
 
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