Hello world,
I have just committed r258900 as obvious on trunk to fix an
out-of-memory error in front-end optimization, which was
caused by gfortran's AST being in an inconsistent state.
I suspect that this will also fix other, as yet unknown
errors.
I will backport to the other affected branches, gcc-7 and gcc-6,
over the next few days.
Regards
Thomas
2018-03-27 Thomas Koenig <[email protected]>
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 <[email protected]>
PR fortran/85084
* gfortran.dg/matmul_rank_1.f90: New test.
ig25@flaemmli:~/Krempel/MMICE>
! { 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
Index: frontend-passes.c
===================================================================
--- frontend-passes.c (revision 258845)
+++ frontend-passes.c (working copy)
@@ -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);
}