public inbox for fortran@gcc.gnu.org
 help / color / mirror / Atom feed
From: Cesar Philippidis <cesar@codesourcery.com>
To: Ilmir Usmanov <me@ilmir.us>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
	"Ильмир Усманов" <i.usmanov@samsung.com>,
	fortran@gcc.gnu.org
Subject: Re: [gomp4, fortran] Patch to fix continuation checks of OpenACC and OpenMP directives
Date: Mon, 08 Jun 2015 14:59:00 -0000	[thread overview]
Message-ID: <5575ADD2.8030007@codesourcery.com> (raw)
In-Reply-To: <6776171433711155@web6g.yandex.ru>

On 06/07/2015 02:05 PM, Ilmir Usmanov wrote:
> Fixed fortran mail-list address. Sorry for inconvenience.
> 
> 08.06.2015, 00:01, "Ilmir Usmanov" <me@ilmir.us>:
>>> Hi Cesar!
>>> 
>>> This patch fixes checks of OpenMP and OpenACC continuations in
>>> case if someone mixes them (i.e. continues OpenMP directive with
>>> !$ACC sentinel or vice versa).
>>> 
>>> OK for gomp branch?

Thanks for working on this. Does this fix PR63858 by any chance?

two minor nits...

> 0001-Fix-mix-of-OpenACC-and-OpenMP-sentinels-in-continuat.patch
> 
> 
> From 5492bf5bc991b6924f5e3b35c11eeaed745df073 Mon Sep 17 00:00:00 2001
> From: Ilmir Usmanov <i.usmanov@samsung.com>
> Date: Sun, 7 Jun 2015 23:55:22 +0300
> Subject: [PATCH] Fix mix of OpenACC and OpenMP sentinels in continuation
> 
> ---
>  gcc/fortran/ChangeLog                   |  5 +++++

Use ChangeLog.gomp for gomp-4_0-branch.

>  gcc/fortran/scanner.c                   | 28 ++++++++++++++++++++++++----
>  gcc/testsuite/ChangeLog                 |  5 +++++
>  gcc/testsuite/gfortran.dg/goacc/omp.f95 |  8 ++++++++
>  4 files changed, 42 insertions(+), 4 deletions(-)
> 
> diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
> index 67f9e09..f61e0e9 100644
> --- a/gcc/fortran/ChangeLog
> +++ b/gcc/fortran/ChangeLog
> @@ -1,3 +1,8 @@
> +2015-06-07  Ilmir Usmanov  <me@ilmir.us>
> +
> +	* scanner.c (gfc_next_char_literal): Fix mix of OpenACC and OpenMP
> +	sentinels in continuation.
> +
>  2015-05-05  David Malcolm  <dmalcolm@redhat.com>
>  
>  	* expr.c (check_inquiry): Fix indentation so that it reflects the
> diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
> index f0e6404..5af4eea 100644
> --- a/gcc/fortran/scanner.c
> +++ b/gcc/fortran/scanner.c
> @@ -1331,7 +1331,7 @@ restart:
>  	continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
>  
>        if (flag_openmp)
> -	if (prev_openmp_flag != openmp_flag)
> +	if (prev_openmp_flag != openmp_flag && !openacc_flag)
>  	  {
>  	    gfc_current_locus = old_loc;
>  	    openmp_flag = prev_openmp_flag;
> @@ -1340,7 +1340,7 @@ restart:
>  	  }
>  
>        if (flag_openacc)
> -	if (prev_openacc_flag != openacc_flag)
> +	if (prev_openacc_flag != openacc_flag && !openmp_flag)
>  	  {
>  	    gfc_current_locus = old_loc;
>  	    openacc_flag = prev_openacc_flag;
> @@ -1359,7 +1359,7 @@ restart:
>        while (gfc_is_whitespace (c))
>  	c = next_char ();
>  
> -      if (openmp_flag)
> +      if (openmp_flag && !openacc_flag)
>  	{
>  	  for (i = 0; i < 5; i++, c = next_char ())
>  	    {
> @@ -1370,7 +1370,7 @@ restart:
>  	  while (gfc_is_whitespace (c))
>  	    c = next_char ();
>  	}
> -      if (openacc_flag)
> +      if (openacc_flag && !openmp_flag)
>  	{
>  	  for (i = 0; i < 5; i++, c = next_char ())
>  	    {
> @@ -1382,6 +1382,26 @@ restart:
>  	    c = next_char ();
>  	}
>  
> +      /* In case we have an OpenMP directive continued by OpenACC
> +	 sentinel, or vice versa, we get both openmp_flag and
> +	 openacc_flag on.  */
> +
> +      if (openacc_flag && openmp_flag)
> +	{
> +	  int is_openmp = 0;
> +	  for (i = 0; i < 5; i++, c = next_char ())
> +	    {
> +	      if (gfc_wide_tolower (c) != (unsigned char) "!$acc"[i])
> +		is_openmp = 1;
> +	      if (i == 4)
> +		old_loc = gfc_current_locus;
> +	    }
> +	  gfc_error ("Wrong %s continuation at %C: expected %s, got %s",
> +	             is_openmp ? "OpenACC" : "OpenMP",
> +	             is_openmp ? "!$ACC" : "!$OMP",
> +	             is_openmp ? "!$OMP" : "!$ACC");

I think it's better for the translation project if you made this a
complete string. So maybe change this line into

  gfc_error (is_openmp ? "Wrong continuation at %C: expected !$ACC, got"
             " !$OMP",
             : "Wrong continuation at %C: expected !$OMP, got !$ACC");

Other than that, it looks fine.

Thanks,
Cesar

  reply	other threads:[~2015-06-08 14:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <6770611433710899@web6g.yandex.ru>
2015-06-07 21:06 ` Ilmir Usmanov
2015-06-08 14:59   ` Cesar Philippidis [this message]
     [not found] <3008431435623821@web14j.yandex.ru>
2015-06-30  0:43 ` Ilmir Usmanov
     [not found]   ` <650751436268444@web22m.yandex.ru>
2015-07-14 21:20     ` Ilmir Usmanov
2015-07-14 21:24       ` Cesar Philippidis
2015-07-27 14:14   ` Thomas Schwinge
2015-10-09 10:15     ` [PR fortran/63858] Fix mix of OpenACC and OpenMP sentinels in continuations Thomas Schwinge
2015-10-19 17:09       ` Thomas Schwinge
2015-10-20  9:37       ` Jakub Jelinek
2015-11-25 14:33         ` Cesar Philippidis
2015-11-25 19:10           ` Bernhard Reutner-Fischer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5575ADD2.8030007@codesourcery.com \
    --to=cesar@codesourcery.com \
    --cc=fortran@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=i.usmanov@samsung.com \
    --cc=me@ilmir.us \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).