This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR fortran/91496] !GCC$ directives error if mistyped or unknown


On Tue, 27 Aug 2019 21:49:38 +0200
Harald Anlauf <anlauf@gmx.de> wrote:

> Committed to trunk as svn revision 274966, after removing some
> accidentally left-over unused variable declarations (copy&paste).
> The actual committed version is attached.
> 
> Thanks, Paul, for the quick review!
> 
> Unless there are strong objections, I'd like to commit this to
> 9-branch, too, so that this can be used in the 9.3 release.
> Applies/regtests cleanly.  Will wait for a week or so.

I see that you copied the unfortunate error-message "commence a loop"
and i see that i completely forgot to adjust it as per Mike's
preference in
 https://gcc.gnu.org/ml/fortran/2015-05/msg00166.html

So can you please change your new errors (and the unroll error message
too) to something like the suggested
"directive not at the start of a loop at %C" please?

Many thanks in advance!
PS: This is border obvious, i'd send the patch for review anyway,
maybe a native speaker can provide a better wording.
PPS: I'm still a bit unhappy about the following kludges in unroll even
more so since you copied the concept:
(1) The globals to diagnose misplaced directives are very ugly.
(2) putting the payload into gfc_iterator is ugly, too. I don't
remember offhand how ugly or intrusive it would be to provide means for
passing down an additional optional structure to act as sink for the
directive payload data. Putting those into the iterator is AFAIR not
all that clean. Maybe you could have a look if you can extend this area
to look less clumsy? "hinted_iterator" maybe, or maybe the iterator is
seldomly used anyway and hence we don't care?

thanks and cheers,

> 
> Harald
> 
> On 08/27/19 10:33, Paul Richard Thomas wrote:
> > Hi Harald,
> >
> > This is OK for trunk.
> >
> > Thanks!
> >
> > Paul
> >
> > On Mon, 26 Aug 2019 at 22:13, Harald Anlauf <anlauf@gmx.de> wrote:  
> >>
> >> Dear all,
> >>
> >> the attached patch adds Fortran support for the following pragmas
> >> (loop annotations): IVDEP (ignore vector dependencies), VECTOR, and
> >> NOVECTOR.  Furthermore, it downgrades unsupported directives from
> >> error to warning (by default, it stays an error with -pedantic),
> >> thus fixing the PR.
> >>
> >> It has no effect on existing code (thus regtested cleanly on
> >> x86_64-pc-linux-gnu), but gives users an option for fine-grained
> >> control of optimization.  The above pragmas are supported by other
> >> compilers (with different sentinels, e.g. !DIR$ for Intel, Cray,
> >> sometimes with slightly different keywords).
> >>
> >> OK for trunk, and backport to 9?
> >>
> >> Thanks,
> >> Harald
> >>
> >>
> >> 2019-08-26  Harald Anlauf  <anlauf@gmx.de>
> >>
> >>         PR fortran/91496
> >>         * gfortran.h: Extend struct gfc_iterator for loop annotations.
> >>         * array.c (gfc_copy_iterator): Copy loop annotations by IVDEP,
> >>         VECTOR, and NOVECTOR pragmas.
> >>         * decl.c (gfc_match_gcc_ivdep, gfc_match_gcc_vector)
> >>         (gfc_match_gcc_novector): New matcher functions handling IVDEP,
> >>         VECTOR, and NOVECTOR pragmas.
> >>         * match.h: Declare prototypes of matcher functions handling IVDEP,
> >>         VECTOR, and NOVECTOR pragmas.
> >>         * parse.c (decode_gcc_attribute, parse_do_block)
> >>         (parse_executable): Decode IVDEP, VECTOR, and NOVECTOR pragmas;
> >>         emit warning for unrecognized pragmas instead of error.
> >>         * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do): Add code to
> >>         emit annotations for IVDEP, VECTOR, and NOVECTOR pragmas.
> >>         * gfortran.texi: Document IVDEP, VECTOR, and NOVECTOR pragmas.
> >>
> >> 2019-08-26  Harald Anlauf  <anlauf@gmx.de>
> >>
> >>         PR fortran/91496
> >>         * gfortran.dg/pr91496.f90: New testcase.
> >>  
> >
> >  
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]