diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-10-06 07:10:55 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-10-06 07:10:55 +0000 |
commit | 75aca3c73e7ba8efbaccc0865261ac007b2c8153 (patch) | |
tree | 3e2d1d38e9328f82bbeaaade32ba8abce4799662 /gcc | |
parent | 13a86eaf2377e84b1c64c4522496d12a403f3e8d (diff) | |
download | gcc-75aca3c73e7ba8efbaccc0865261ac007b2c8153.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117480 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/scanner.c | 21 |
2 files changed, 22 insertions, 6 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 73715f940be..58c13205caa 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +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> * gfortran.texi: (Current Status): update and rewrite to reflect diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 59b2e704bfa..a5c0f4f0f00 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -327,9 +327,11 @@ skip_comment_line (void) /* 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) { locus start; @@ -379,7 +381,7 @@ skip_free_comments (void) openmp_flag = 1; openmp_locus = old_loc; gfc_current_locus = start; - return; + return false; } } gfc_current_locus = old_loc; @@ -390,7 +392,7 @@ skip_free_comments (void) { gfc_current_locus = old_loc; next_char (); - return; + return true; } } gfc_current_locus = old_loc; @@ -405,6 +407,7 @@ skip_free_comments (void) if (openmp_flag && at_bol) openmp_flag = 0; gfc_current_locus = start; + return false; } @@ -597,6 +600,8 @@ restart: if (gfc_current_form == FORM_FREE) { + bool openmp_cond_flag; + if (!in_string && c == '!') { if (openmp_flag @@ -668,7 +673,7 @@ restart: continue_line = gfc_current_locus.lb->linenum; /* 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) { @@ -709,6 +714,10 @@ restart: gfc_warning_now ("Missing '&' in continued character constant at %C"); 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 { c = ' '; @@ -741,7 +750,7 @@ restart: old_loc = gfc_current_locus; gfc_advance_line (); - gfc_skip_comments (); + skip_fixed_comments (); /* See if this line is a continuation line. */ if (openmp_flag != prev_openmp_flag) |