Commit 0d3abf6f by Jakub Jelinek Committed by Jakub Jelinek

scanner.c (skip_free_comments): Return bool instead of void.

	* scanner.c (skip_free_comments): Return bool instead of void.
	(gfc_next_char_literal): Don't return ' ' if & is missing after
	!$omp or !$.  Use skip_{free,fixed}_comments directly instead
	of gfc_skip_comments.

From-SVN: r117480
parent e87a56b4
2006-10-06 Jakub Jelinek <jakub@redhat.com>
* scanner.c (skip_free_comments): Return bool instead of void.
(gfc_next_char_literal): Don't return ' ' if & is missing after
!$omp or !$. Use skip_{free,fixed}_comments directly instead
of gfc_skip_comments.
2006-10-04 Brooks Moses <bmoses@stanford.edu> 2006-10-04 Brooks Moses <bmoses@stanford.edu>
* gfortran.texi: (Current Status): update and rewrite to reflect * gfortran.texi: (Current Status): update and rewrite to reflect
......
...@@ -327,9 +327,11 @@ skip_comment_line (void) ...@@ -327,9 +327,11 @@ skip_comment_line (void)
/* Comment lines are null lines, lines containing only blanks or lines /* Comment lines are null lines, lines containing only blanks or lines
on which the first nonblank line is a '!'. */ on which the first nonblank line is a '!'.
Return true if !$ openmp conditional compilation sentinel was
seen. */
static void static bool
skip_free_comments (void) skip_free_comments (void)
{ {
locus start; locus start;
...@@ -379,7 +381,7 @@ skip_free_comments (void) ...@@ -379,7 +381,7 @@ skip_free_comments (void)
openmp_flag = 1; openmp_flag = 1;
openmp_locus = old_loc; openmp_locus = old_loc;
gfc_current_locus = start; gfc_current_locus = start;
return; return false;
} }
} }
gfc_current_locus = old_loc; gfc_current_locus = old_loc;
...@@ -390,7 +392,7 @@ skip_free_comments (void) ...@@ -390,7 +392,7 @@ skip_free_comments (void)
{ {
gfc_current_locus = old_loc; gfc_current_locus = old_loc;
next_char (); next_char ();
return; return true;
} }
} }
gfc_current_locus = old_loc; gfc_current_locus = old_loc;
...@@ -405,6 +407,7 @@ skip_free_comments (void) ...@@ -405,6 +407,7 @@ skip_free_comments (void)
if (openmp_flag && at_bol) if (openmp_flag && at_bol)
openmp_flag = 0; openmp_flag = 0;
gfc_current_locus = start; gfc_current_locus = start;
return false;
} }
...@@ -597,6 +600,8 @@ restart: ...@@ -597,6 +600,8 @@ restart:
if (gfc_current_form == FORM_FREE) if (gfc_current_form == FORM_FREE)
{ {
bool openmp_cond_flag;
if (!in_string && c == '!') if (!in_string && c == '!')
{ {
if (openmp_flag if (openmp_flag
...@@ -668,7 +673,7 @@ restart: ...@@ -668,7 +673,7 @@ restart:
continue_line = gfc_current_locus.lb->linenum; continue_line = gfc_current_locus.lb->linenum;
/* Now find where it continues. First eat any comment lines. */ /* Now find where it continues. First eat any comment lines. */
gfc_skip_comments (); openmp_cond_flag = skip_free_comments ();
if (prev_openmp_flag != openmp_flag) if (prev_openmp_flag != openmp_flag)
{ {
...@@ -709,6 +714,10 @@ restart: ...@@ -709,6 +714,10 @@ restart:
gfc_warning_now ("Missing '&' in continued character constant at %C"); gfc_warning_now ("Missing '&' in continued character constant at %C");
gfc_current_locus.nextc--; gfc_current_locus.nextc--;
} }
/* Both !$omp and !$ -fopenmp continuation lines have & on the
continuation line only optionally. */
else if (openmp_flag || openmp_cond_flag)
gfc_current_locus.nextc--;
else else
{ {
c = ' '; c = ' ';
...@@ -741,7 +750,7 @@ restart: ...@@ -741,7 +750,7 @@ restart:
old_loc = gfc_current_locus; old_loc = gfc_current_locus;
gfc_advance_line (); gfc_advance_line ();
gfc_skip_comments (); skip_fixed_comments ();
/* See if this line is a continuation line. */ /* See if this line is a continuation line. */
if (openmp_flag != prev_openmp_flag) if (openmp_flag != prev_openmp_flag)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment