From 13ce325c22b89dcabd53a13f42ed30b3fabd6fa4 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Fri, 27 May 2016 04:47:11 +0000 Subject: [PATCH] backport: re PR fortran/66461 (ICE on missing end program in fixed source) 2016-05-26 Jerry DeLisle Backport from trunk. PR fortran/66461 * scanner.c (gfc_next_char_literal): Clear end_flag when adjusting current locus back to old_locus. Backport from trunk. PR fortran/66461 * gfortran.dg/unexpected_eof.f: New test From-SVN: r236808 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/scanner.c | 1 + gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/unexpected_eof.f | 8 ++++++++ 4 files changed, 22 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/unexpected_eof.f diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4e2610a161e0..59409e16975f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2016-05-26 Jerry DeLisle + + Backport from trunk. + PR fortran/66461 + * scanner.c (gfc_next_char_literal): Clear end_flag when adjusting + current locus back to old_locus. + 2016-02-28 Jerry DeLisle Backported from mainline diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index aa4d7564706e..1a6f4612b7cb 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -1259,6 +1259,7 @@ restart: not_continuation: c = '\n'; gfc_current_locus = old_loc; + end_flag = 0; done: if (c == '\n') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bc1044a415d4..f896f6bf3fa9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-05-26 Jerry DeLisle + + Backport from trunk. + PR fortran/66461 + * gfortran.dg/unexpected_eof.f: New test + 2016-05-22 Iain Sandoe Dominique d'Humieres diff --git a/gcc/testsuite/gfortran.dg/unexpected_eof.f b/gcc/testsuite/gfortran.dg/unexpected_eof.f new file mode 100644 index 000000000000..d3cdb99596ab --- /dev/null +++ b/gcc/testsuite/gfortran.dg/unexpected_eof.f @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR66461 ICE on missing end program in fixed source + program p + integer x(2) + x = -1 + if ( x(1) < 0 .or. + & x(2) < 0 ) print *, x +! { dg-error "Unexpected end of file" "" { target *-*-* } 0 } -- 2.47.2