aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2016-10-15 18:38:54 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2016-10-15 18:38:54 +0000
commit523ee218bbdc17a0cd1137e20671d73da990d329 (patch)
tree7434e20fe63a2bbbb5e5ea9fc6f02a76d59feac4
parente2a02db7690190247c42bf233384530ef65d8881 (diff)
downloadgcc-523ee218bbdc17a0cd1137e20671d73da990d329.zip
gcc-523ee218bbdc17a0cd1137e20671d73da990d329.tar.gz
gcc-523ee218bbdc17a0cd1137e20671d73da990d329.tar.bz2
re PR fortran/77972 (ICE on broken character continuation with -Wall etc.)
2016-10-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/77972 * scanner.c (gfc_next_char_literal): If nextc is null do not decrement the pointer and call the diagnostics. PR fortran/77972 * gfortran.dg/unexpected_eof_4.f90: New test. From-SVN: r241201
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/scanner.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/unexpected_eof_4.f908
4 files changed, 21 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a3e1f49..6dce4eb 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2016-10-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/77972
+ * scanner.c (gfc_next_char_literal): If nextc is null do not
+ decrement the pointer and call the diagnostics.
+
2016-10-14 Andre Vehreschild <vehre@gcc.gnu.org>
* resolve.c (resolve_symbol): Add unimplemented message for
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index be9c509..5e35535 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -1414,10 +1414,9 @@ restart:
if (c != '&')
{
- if (in_string)
+ if (in_string && gfc_current_locus.nextc)
{
- if (gfc_current_locus.nextc)
- gfc_current_locus.nextc--;
+ gfc_current_locus.nextc--;
if (warn_ampersand && in_string == INSTRING_WARN)
gfc_warning (OPT_Wampersand,
"Missing %<&%> in continued character "
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0e48772..63eafa6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/77972
+ * gfortran.dg/unexpected_eof_4.f90: New test.
+
2016-10-15 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/48587
diff --git a/gcc/testsuite/gfortran.dg/unexpected_eof_4.f90 b/gcc/testsuite/gfortran.dg/unexpected_eof_4.f90
new file mode 100644
index 0000000..2832128
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/unexpected_eof_4.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! { dg-options "-Wampersand" }
+! PR77972
+program p
+ character(8) :: z
+ z = 'abc&
+! { dg-error "Unterminated character constant" "" { target *-*-* } 0 }
+! { dg-error "Unexpected end of file" "" { target *-*-* } 0 }