This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch, fortran] Bug 71686 - ICE on broken character continuation
- From: Jerry DeLisle <jvdelisle at charter dot net>
- To: fortran at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Tue, 28 Jun 2016 22:58:59 -0700
- Subject: [patch, fortran] Bug 71686 - ICE on broken character continuation
- Authentication-results: sourceware.org; auth=none
I plan to commit this patch as obvious and simple.
Regression tested on x86-64. I will provide two test cases from the PR
Regards,
Jerry
2016-06-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/71686
* scanner.c (gfc_next_char_literal): Only decrement nextc if it
is not NULL.
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 6a7a5b68..be9c5091 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -1416,7 +1416,8 @@ restart:
{
if (in_string)
{
- gfc_current_locus.nextc--;
+ if (gfc_current_locus.nextc)
+ gfc_current_locus.nextc--;
if (warn_ampersand && in_string == INSTRING_WARN)
gfc_warning (OPT_Wampersand,
"Missing %<&%> in continued character "
@@ -1427,7 +1428,10 @@ restart:
/* Both !$omp and !$ -fopenmp continuation lines have & on the
continuation line only optionally. */
else if (openmp_flag || openacc_flag || openmp_cond_flag)
- gfc_current_locus.nextc--;
+ {
+ if (gfc_current_locus.nextc)
+ gfc_current_locus.nextc--;
+ }
else
{
c = ' ';