From: burnus Date: Mon, 14 Dec 2015 19:31:51 +0000 (+0000) Subject: 2014-12-14 Tobias Burnus X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78d9d5fcd3d21f1281bfec73b8f47b1105b4863a;p=thirdparty%2Fgcc.git 2014-12-14 Tobias Burnus PR fortran/68850 * gfortran.texi (Standards): Mention TS 18508. (Fortran 2003 and 2008 Status): Add section on TS 18508 status. * intrinsic.texi (EVENT_QUERY): Add. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231631 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9c768fbc08bd..869215dbe5ad 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2014-12-14 Tobias Burnus + + PR fortran/68850 + * gfortran.texi (Standards): Mention TS 18508. + (Fortran 2003 and 2008 Status): Add section on TS 18508 status. + * intrinsic.texi (EVENT_QUERY): Add. + 2014-12-12 Tobias Burnus PR fortran/45859 diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index d82ded61dcf5..7a8318c3aedc 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -532,8 +532,8 @@ GNU Fortran also have a partial support for ISO/IEC 1539-1:2004 (Fortran @code{Further Interoperability of Fortran with C} (ISO/IEC TS 29113:2012). Full support of those standards and future Fortran standards is planned. The current status of the support is can be found in the -@ref{Fortran 2003 status}, @ref{Fortran 2008 status} and -@ref{TS 29113 status} sections of the documentation. +@ref{Fortran 2003 status}, @ref{Fortran 2008 status}, @ref{TS 29113 status} +and @ref{TS 18508 status} sections of the documentation. Additionally, the GNU Fortran compilers supports the OpenMP specification (version 4.0, @url{http://openmp.org/@/wp/@/openmp-specifications/}). @@ -801,6 +801,7 @@ compile option was used. * Fortran 2003 status:: * Fortran 2008 status:: * TS 29113 status:: +* TS 18508 status:: @end menu @node Fortran 2003 status @@ -1130,6 +1131,23 @@ of the TS is not yet supported. @end itemize +@node TS 18508 status +@section Technical Specification 18508 Status + +GNU Fortran supports the following new features of the Technical +Specification 18508 on Additional Parallel Features in Fortran: + +@itemize +@item The new atomic ADD, CAS, FETCH and ADD/OR/XOR, OR and XOR intrinsics. + +@item The @code{CO_MIN} and @code{CO_MAX} and @code{SUM} reduction intrinsics. +And the @code{CO_BROADCAST} and @code{CO_REDUCE} intrinsic, except that those +do not support polymorphic types or types with allocatable, pointer or +polymorphic components. + +@item Events (@code{EVENT POST}, @code{EVENT WAIT}, @code{EVENT_QUERY}) +@end itemize + @c --------------------------------------------------------------------- @c Compiler Characteristics diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 803e4c73c032..a61a0bc8d66a 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -128,6 +128,7 @@ Some basic guidelines for editing this document: * @code{ERFC}: ERFC, Complementary error function * @code{ERFC_SCALED}: ERFC_SCALED, Exponentially-scaled complementary error function * @code{ETIME}: ETIME, Execution time subroutine (or function) +* @code{EVENT_QUERY}: EVENT_QUERY, Query whether a coarray event has occurred * @code{EXECUTE_COMMAND_LINE}: EXECUTE_COMMAND_LINE, Execute a shell command * @code{EXIT}: EXIT, Exit the program with status. * @code{EXP}: EXP, Exponential function @@ -5063,6 +5064,57 @@ end program test_etime +@node EVENT_QUERY +@section @code{EVENT_QUERY} --- Query whether a coarray event has occurred +@fnindex EVENT_QUERY +@cindex Events, EVENT_QUERY + +@table @asis +@item @emph{Description}: +@code{EVENT_QUERY} assignes the number of events to @var{COUNT} which have been +posted to the @var{EVENT} variable and not yet been removed by calling +@code{EVENT WAIT}. When @var{STAT} is present and the invokation was successful, +it is assigned the value 0. If it is present and the invokation has failed, +it is assigned a positive value and @var{COUNT} is assigned the value @math{-1}. + +@item @emph{Standard}: +TS 18508 or later + +@item @emph{Class}: + subroutine + +@item @emph{Syntax}: +@code{CALL EVENT_QUERY (EVENT, COUNT [, STAT])} + +@item @emph{Arguments}: +@multitable @columnfractions .15 .70 +@item @var{EVENT} @tab (intent(IN)) Scalar of type @code{EVENT_TYPE}, +defined in @code{ISO_FORTRAN_ENV}; shall not be coindexed. +@item @var{COUNT} @tab (intent(out))Scalar integer with at least the +precision of default integer. +@item @var{STAT} @tab (optional) Scalar default-kind integer variable. +@end multitable + +@item @emph{Example}: +@smallexample +program atomic + use iso_fortran_env + implicit none + type(event_type) :: event_value_has_been_set[*] + integer :: cnt + if (this_image() == 1) then + call event_query (event_value_has_been_set, cnt) + if (cnt > 0) write(*,*) "Value has been set" + elseif (this_image() == 2) then + event post (event_value_has_been_set[1]) + end if +end program atomic +@end smallexample + +@end table + + + @node EXECUTE_COMMAND_LINE @section @code{EXECUTE_COMMAND_LINE} --- Execute a shell command @fnindex EXECUTE_COMMAND_LINE