Re: [patch, Fortran] Change -std=f2008tr to f2008ts, update *.texi status and TR29113-TS29113

2011-10-14 Thread Tobias Burnus

*ping*

http://gcc.gnu.org/ml/fortran/2011-10/msg00073.html

On 12.10.2011 15:57, Tobias Burnus wrote:

Hello all,

this patch does two things:
a) It updates the Fortran 2003 and TR/TS 29113 status in the GNU 
Fortran manual.
b) It changes all references to Technical Report 29113 to Technical 
Specification 29113

c) It changes -std=f2008tr to -std=f2008ts

(a) is obvious.

Regarding (b): For some reason, ISO's SC22 thinks that one should not 
use Technical Reports (TR) but a Technical Specification (TS) for the 
Further //Interoperability of Fortran with C document - and later also 
for the coarray extensions. Glancing at the documentation, I think 
they are right that a TS is better; there are procedural differences, 
but for us the main difference is the name. As the final word is TS, I 
think gfortran should use TS and not TR throughout for the post-F2008 
technical documents.


Cf. ftp://ftp.nag.co.uk/sc22wg5/N1851-N1900/N1879.txt : JTC 1/SC 22 
instructs the JTC 1/SC 22/WG 5 Convenor to submit future drafts of TR 
29113, Further Interoperability of Fortran with C as Technical 
Specifications


For the difference between TS and TR, see also 
http://www.iso.org/iso/standards_development/processes_and_procedures/deliverables.htm; 
for the different approval scheme also the following flow chart 
(clickable): 
http://www.iso.org/iso/standards_development/it_tools/flowchart_main.htm



Regarding (c): If we switch to TS everywhere, I think it makes sense 
to also call the flag -std=f2008ts; the flag stands for: Follow the 
standard according to Fortran 2008 with the extensions defined in the 
post-F2008 (pre-F2013) standard. Namely, TS 29113 on further 
interoperability of Fortran with C and the coarray TS, which is in a 
rather early stage. (TS 29113 is already past a PDTS voting and a DTS 
should be submitted until June 2012.


Given that -std=f2008tr was never included in a released GCC version 
and given that it currently only allows very few features, I think no 
one actually uses it. Hence, I decided that one can simply change it 
without taking care of still accepting the f2008tr version.


(Currently supported TS 29113 features: OPTIONAL with BIND(C) - absent 
arguments are indicated as NULL pointer, matching the internal 
implementation. RANK() intrinsic - which is boring without 
assumed-rank arrays. ASYNCHRONOUS - well, only the semantic has 
changed a bit since F2003/GCC 4.6; however, GCC's middle end uses by 
default ASYNCHRONOUS semantic; turning it off is a missed-optimization 
bug.)


The patch was build and regtested on x86-64-linux.
OK for the trunk?

Tobias

PS: I will also update the release notes after the patch has been 
committed.




[patch, Fortran] Change -std=f2008tr to f2008ts, update *.texi status and TR29113-TS29113

2011-10-12 Thread Tobias Burnus

Hello all,

this patch does two things:
a) It updates the Fortran 2003 and TR/TS 29113 status in the GNU Fortran 
manual.
b) It changes all references to Technical Report 29113 to Technical 
Specification 29113

c) It changes -std=f2008tr to -std=f2008ts

(a) is obvious.

Regarding (b): For some reason, ISO's SC22 thinks that one should not 
use Technical Reports (TR) but a Technical Specification (TS) for the 
Further //Interoperability of Fortran with C document - and later also 
for the coarray extensions. Glancing at the documentation, I think they 
are right that a TS is better; there are procedural differences, but for 
us the main difference is the name. As the final word is TS, I think 
gfortran should use TS and not TR throughout for the post-F2008 
technical documents.


Cf. ftp://ftp.nag.co.uk/sc22wg5/N1851-N1900/N1879.txt : JTC 1/SC 22 
instructs the JTC 1/SC 22/WG 5 Convenor to submit future drafts of TR 
29113, Further Interoperability of Fortran with C as Technical 
Specifications


For the difference between TS and TR, see also 
http://www.iso.org/iso/standards_development/processes_and_procedures/deliverables.htm; 
for the different approval scheme also the following flow chart 
(clickable): 
http://www.iso.org/iso/standards_development/it_tools/flowchart_main.htm



Regarding (c): If we switch to TS everywhere, I think it makes sense to 
also call the flag -std=f2008ts; the flag stands for: Follow the 
standard according to Fortran 2008 with the extensions defined in the 
post-F2008 (pre-F2013) standard. Namely, TS 29113 on further 
interoperability of Fortran with C and the coarray TS, which is in a 
rather early stage. (TS 29113 is already past a PDTS voting and a DTS 
should be submitted until June 2012.


Given that -std=f2008tr was never included in a released GCC version and 
given that it currently only allows very few features, I think no one 
actually uses it. Hence, I decided that one can simply change it without 
taking care of still accepting the f2008tr version.


(Currently supported TS 29113 features: OPTIONAL with BIND(C) - absent 
arguments are indicated as NULL pointer, matching the internal 
implementation. RANK() intrinsic - which is boring without assumed-rank 
arrays. ASYNCHRONOUS - well, only the semantic has changed a bit since 
F2003/GCC 4.6; however, GCC's middle end uses by default ASYNCHRONOUS 
semantic; turning it off is a missed-optimization bug.)


The patch was build and regtested on x86-64-linux.
OK for the trunk?

Tobias

PS: I will also update the release notes after the patch has been committed.
2011-10-12  Tobias Burnus  bur...@net-b.de

	* gfortran.texi (Fortran 2008 status, TS 29113 status,
	Further Interoperability of Fortran with C): Update implementation
	status, change references from TR 29113 to TS 29113.
	* intrinsic.texi (RANK): Change TR 29113 to TS 29113.
	* invoke.text (-std=): Ditto, change -std=f2008tr to -std=f2008ts.
	* lang.opt (std=): Ditto.
	* options.c (gfc_handle_option, set_default_std_flags): Ditto and
	change GFC_STD_F2008_TR to GFC_STD_F2008_TS.
	* libgfortran.h: Ditto.
	* intrinsic.c (add_functions, gfc_check_intrinsic_standard): Ditto.
	* decl.c (verify_c_interop_param): Ditto.

2011-10-12  Tobias Burnus  bur...@net-b.de

	* gfortran.dg/bind_c_usage_23.f90: Change TR 29113 to TS 29113 in
	the comments.
	* gfortran.dg/bind_c_usage_24.f90: Ditto.
	* gfortran.dg/rank_3.f90: Ditto.
	* gfortran.dg/bind_c_usage_22.f90: Ditto, change -std=f2008tr to
	-std=f2008ts in dg-options.
	* gfortran.dg/rank_4.f90: Ditto.

diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 0ee2575..9f3a39e 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -1069,7 +1069,7 @@ verify_c_interop_param (gfc_symbol *sym)
 	  retval = FAILURE;
 	}
 	  else if (sym-attr.optional == 1
-		gfc_notify_std (GFC_STD_F2008_TR, TR29113: Variable '%s' 
+		gfc_notify_std (GFC_STD_F2008_TS, TS29113: Variable '%s' 
   at %L with OPTIONAL attribute in 
   procedure '%s' which is BIND(C),
   sym-name, (sym-declared_at),
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index 389c05b..f847df3 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -772,7 +772,7 @@ compile option was used.
 @menu
 * Fortran 2003 status::
 * Fortran 2008 status::
-* TR 29113 status::
+* TS 29113 status::
 @end menu
 
 @node Fortran 2003 status
@@ -1003,8 +1003,11 @@ the intrinsic module @code{ISO_FORTRAN_ENV}.
 @code{ISO_C_BINDINGS} and @code{COMPILER_VERSION} and @code{COMPILER_OPTIONS}
 of @code{ISO_FORTRAN_ENV}.
 
-@item Experimental coarray, use the @option{-fcoarray=single} or
-@option{-fcoarray=lib} flag to enable it.
+@item Coarray support for serial programs with @option{-fcoarray=single} flag
+and experimental support for multiple images with the @option{-fcoarray=lib}
+flag.
+
+@item The @code{DO CONCURRENT} construct is supported.
 
 @item The @code{BLOCK} construct is supported.
 
@@ -1049,19