decl.c (gfc_match_entry): Mark ENTRY as GFC_STD_F2008_OBS.
2010-06-25 Tobias Burnus <burnus@net-b.de> * decl.c (gfc_match_entry): Mark ENTRY as GFC_STD_F2008_OBS. * gfortran.texi (_gfortran_set_options): Update for GFC_STD_F2008_OBS addition. * libgfortran.h: Add GFC_STD_F2008_OBS. * options.c (set_default_std_flags, gfc_handle_option): Handle GFC_STD_F2008_OBS. io.c (check_format): Fix allow_std check. 2010-06-25 Tobias Burnus <burnus@net-b.de> * runtime/compile_options.c (init_compile_options): Update compile_options.allow_std for GFC_STD_F2008_OBS. * io/transfer.c (formatted_transfer_scalar_read, formatted_transfer_scalar_write): Fix allow_std check. * io/list_read.c (nml_parse_qualifier): Ditto. 2010-06-25 Tobias Burnus <burnus@net-b.de> * gfortran.dg/entry_19.f90: New. From-SVN: r161409
This commit is contained in:
parent
272001a244
commit
58fc89f6b9
|
@ -1,3 +1,13 @@
|
||||||
|
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
|
* decl.c (gfc_match_entry): Mark ENTRY as GFC_STD_F2008_OBS.
|
||||||
|
* gfortran.texi (_gfortran_set_options): Update for
|
||||||
|
GFC_STD_F2008_OBS addition.
|
||||||
|
* libgfortran.h: Add GFC_STD_F2008_OBS.
|
||||||
|
* options.c (set_default_std_flags, gfc_handle_option): Handle
|
||||||
|
GFC_STD_F2008_OBS.
|
||||||
|
io.c (check_format): Fix allow_std check.
|
||||||
|
|
||||||
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
* decl.c (gfc_match_entry): Allow END besides
|
* decl.c (gfc_match_entry): Allow END besides
|
||||||
|
|
|
@ -4963,6 +4963,10 @@ gfc_match_entry (void)
|
||||||
if (m != MATCH_YES)
|
if (m != MATCH_YES)
|
||||||
return m;
|
return m;
|
||||||
|
|
||||||
|
if (gfc_notify_std (GFC_STD_F2008_OBS, "Fortran 2008 obsolescent feature: "
|
||||||
|
"ENTRY statement at %C") == FAILURE)
|
||||||
|
return MATCH_ERROR;
|
||||||
|
|
||||||
state = gfc_current_state ();
|
state = gfc_current_state ();
|
||||||
if (state != COMP_SUBROUTINE && state != COMP_FUNCTION)
|
if (state != COMP_SUBROUTINE && state != COMP_FUNCTION)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2335,9 +2335,10 @@ if e.g. an input-output edit descriptor is invalid in a given standard.
|
||||||
Possible values are (bitwise or-ed) @code{GFC_STD_F77} (1),
|
Possible values are (bitwise or-ed) @code{GFC_STD_F77} (1),
|
||||||
@code{GFC_STD_F95_OBS} (2), @code{GFC_STD_F95_DEL} (4), @code{GFC_STD_F95}
|
@code{GFC_STD_F95_OBS} (2), @code{GFC_STD_F95_DEL} (4), @code{GFC_STD_F95}
|
||||||
(8), @code{GFC_STD_F2003} (16), @code{GFC_STD_GNU} (32),
|
(8), @code{GFC_STD_F2003} (16), @code{GFC_STD_GNU} (32),
|
||||||
@code{GFC_STD_LEGACY} (64), and @code{GFC_STD_F2008} (128).
|
@code{GFC_STD_LEGACY} (64), @code{GFC_STD_F2008} (128), and
|
||||||
Default: @code{GFC_STD_F95_OBS | GFC_STD_F95_DEL | GFC_STD_F2003
|
@code{GFC_STD_F2008_OBS} (256). Default: @code{GFC_STD_F95_OBS
|
||||||
| GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77 | GFC_STD_GNU | GFC_STD_LEGACY}.
|
| GFC_STD_F95_DEL | GFC_STD_F95 | GFC_STD_F2003 | GFC_STD_F2008
|
||||||
|
| GFC_STD_F2008_OBS | GFC_STD_F77 | GFC_STD_GNU | GFC_STD_LEGACY}.
|
||||||
@item @var{option}[1] @tab Standard-warning flag; prints a warning to
|
@item @var{option}[1] @tab Standard-warning flag; prints a warning to
|
||||||
standard error. Default: @code{GFC_STD_F95_DEL | GFC_STD_LEGACY}.
|
standard error. Default: @code{GFC_STD_F95_DEL | GFC_STD_LEGACY}.
|
||||||
@item @var{option}[2] @tab If non zero, enable pedantic checking.
|
@item @var{option}[2] @tab If non zero, enable pedantic checking.
|
||||||
|
|
|
@ -730,7 +730,7 @@ data_desc:
|
||||||
t = format_lex ();
|
t = format_lex ();
|
||||||
if (t == FMT_ERROR)
|
if (t == FMT_ERROR)
|
||||||
goto fail;
|
goto fail;
|
||||||
if (gfc_option.allow_std < GFC_STD_F2003 && t != FMT_COMMA
|
if (!(gfc_option.allow_std & GFC_STD_F2003) && t != FMT_COMMA
|
||||||
&& t != FMT_F && t != FMT_E && t != FMT_EN && t != FMT_ES
|
&& t != FMT_F && t != FMT_E && t != FMT_EN && t != FMT_ES
|
||||||
&& t != FMT_D && t != FMT_G && t != FMT_RPAREN && t != FMT_SLASH)
|
&& t != FMT_D && t != FMT_G && t != FMT_RPAREN && t != FMT_SLASH)
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,15 +23,16 @@ along with GCC; see the file COPYING3. If not see
|
||||||
Note that no features were obsoleted nor deleted in F2003.
|
Note that no features were obsoleted nor deleted in F2003.
|
||||||
Please remember to keep those definitions in sync with
|
Please remember to keep those definitions in sync with
|
||||||
gfortran.texi. */
|
gfortran.texi. */
|
||||||
#define GFC_STD_F2008 (1<<7) /* New in F2008. */
|
#define GFC_STD_F2008_OBS (1<<8) /* Obsolescent in F2008. */
|
||||||
#define GFC_STD_LEGACY (1<<6) /* Backward compatibility. */
|
#define GFC_STD_F2008 (1<<7) /* New in F2008. */
|
||||||
#define GFC_STD_GNU (1<<5) /* GNU Fortran extension. */
|
#define GFC_STD_LEGACY (1<<6) /* Backward compatibility. */
|
||||||
#define GFC_STD_F2003 (1<<4) /* New in F2003. */
|
#define GFC_STD_GNU (1<<5) /* GNU Fortran extension. */
|
||||||
#define GFC_STD_F95 (1<<3) /* New in F95. */
|
#define GFC_STD_F2003 (1<<4) /* New in F2003. */
|
||||||
#define GFC_STD_F95_DEL (1<<2) /* Deleted in F95. */
|
#define GFC_STD_F95 (1<<3) /* New in F95. */
|
||||||
#define GFC_STD_F95_OBS (1<<1) /* Obsolescent in F95. */
|
#define GFC_STD_F95_DEL (1<<2) /* Deleted in F95. */
|
||||||
#define GFC_STD_F77 (1<<0) /* Included in F77, but not deleted or
|
#define GFC_STD_F95_OBS (1<<1) /* Obsolescent in F95. */
|
||||||
obsolescent in later standards. */
|
#define GFC_STD_F77 (1<<0) /* Included in F77, but not deleted or
|
||||||
|
obsolescent in later standards. */
|
||||||
|
|
||||||
|
|
||||||
/* Bitmasks for the various FPE that can be enabled. */
|
/* Bitmasks for the various FPE that can be enabled. */
|
||||||
|
|
|
@ -48,7 +48,7 @@ set_default_std_flags (void)
|
||||||
{
|
{
|
||||||
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95_DEL
|
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95_DEL
|
||||||
| GFC_STD_F2003 | GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77
|
| GFC_STD_F2003 | GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77
|
||||||
| GFC_STD_GNU | GFC_STD_LEGACY;
|
| GFC_STD_F2008_OBS | GFC_STD_GNU | GFC_STD_LEGACY;
|
||||||
gfc_option.warn_std = GFC_STD_F95_DEL | GFC_STD_LEGACY;
|
gfc_option.warn_std = GFC_STD_F95_DEL | GFC_STD_LEGACY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -857,7 +857,8 @@ gfc_handle_option (size_t scode, const char *arg, int value,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_std_f95:
|
case OPT_std_f95:
|
||||||
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77;
|
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77
|
||||||
|
| GFC_STD_F2008_OBS;
|
||||||
gfc_option.warn_std = GFC_STD_F95_OBS;
|
gfc_option.warn_std = GFC_STD_F95_OBS;
|
||||||
gfc_option.max_continue_fixed = 19;
|
gfc_option.max_continue_fixed = 19;
|
||||||
gfc_option.max_continue_free = 39;
|
gfc_option.max_continue_free = 39;
|
||||||
|
@ -868,7 +869,7 @@ gfc_handle_option (size_t scode, const char *arg, int value,
|
||||||
|
|
||||||
case OPT_std_f2003:
|
case OPT_std_f2003:
|
||||||
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77
|
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77
|
||||||
| GFC_STD_F2003 | GFC_STD_F95;
|
| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008_OBS;
|
||||||
gfc_option.warn_std = GFC_STD_F95_OBS;
|
gfc_option.warn_std = GFC_STD_F95_OBS;
|
||||||
gfc_option.max_identifier_length = 63;
|
gfc_option.max_identifier_length = 63;
|
||||||
gfc_option.warn_ampersand = 1;
|
gfc_option.warn_ampersand = 1;
|
||||||
|
@ -877,8 +878,8 @@ gfc_handle_option (size_t scode, const char *arg, int value,
|
||||||
|
|
||||||
case OPT_std_f2008:
|
case OPT_std_f2008:
|
||||||
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77
|
gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77
|
||||||
| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008;
|
| GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008 | GFC_STD_F2008_OBS;
|
||||||
gfc_option.warn_std = GFC_STD_F95_OBS;
|
gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS;
|
||||||
gfc_option.max_identifier_length = 63;
|
gfc_option.max_identifier_length = 63;
|
||||||
gfc_option.warn_ampersand = 1;
|
gfc_option.warn_ampersand = 1;
|
||||||
gfc_option.warn_tabs = 0;
|
gfc_option.warn_tabs = 0;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
|
* gfortran.dg/entry_19.f90: New.
|
||||||
|
|
||||||
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
* gfortran.dg/end_subroutine_1.f90: New.
|
* gfortran.dg/end_subroutine_1.f90: New.
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! { dg-options "-std=f2008" }
|
||||||
|
!
|
||||||
|
!
|
||||||
|
! Entry is obsolete in Fortran 2008
|
||||||
|
!
|
||||||
|
subroutine foo()
|
||||||
|
entry bar() ! { dg-error "Fortran 2008 obsolescent feature: ENTRY" }
|
||||||
|
end
|
|
@ -1,3 +1,11 @@
|
||||||
|
2010-06-25 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
|
* runtime/compile_options.c (init_compile_options): Update
|
||||||
|
compile_options.allow_std for GFC_STD_F2008_OBS.
|
||||||
|
* io/transfer.c (formatted_transfer_scalar_read,
|
||||||
|
formatted_transfer_scalar_write): Fix allow_std check.
|
||||||
|
* io/list_read.c (nml_parse_qualifier): Ditto.
|
||||||
|
|
||||||
2010-06-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
2010-06-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
PR libfortran/44477
|
PR libfortran/44477
|
||||||
|
|
|
@ -2077,7 +2077,7 @@ nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad,
|
||||||
/* If -std=f95/2003 or an array section is specified,
|
/* If -std=f95/2003 or an array section is specified,
|
||||||
do not allow excess data to be processed. */
|
do not allow excess data to be processed. */
|
||||||
if (is_array_section == 1
|
if (is_array_section == 1
|
||||||
|| compile_options.allow_std < GFC_STD_GNU)
|
|| !(compile_options.allow_std & GFC_STD_GNU))
|
||||||
ls[dim].end = ls[dim].start;
|
ls[dim].end = ls[dim].start;
|
||||||
else
|
else
|
||||||
dtp->u.p.expanded_read = 1;
|
dtp->u.p.expanded_read = 1;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
Namelist transfer functions contributed by Paul Thomas
|
Namelist transfer functions contributed by Paul Thomas
|
||||||
F2003 I/O support contributed by Jerry DeLisle
|
F2003 I/O support contributed by Jerry DeLisle
|
||||||
|
|
||||||
This file is part of the GNU Fortran 95 runtime library (libgfortran).
|
This file is part of the GNU Fortran runtime library (libgfortran).
|
||||||
|
|
||||||
Libgfortran is free software; you can redistribute it and/or modify
|
Libgfortran is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1042,7 +1042,7 @@ formatted_transfer_scalar_read (st_parameter_dt *dtp, bt type, void *p, int kind
|
||||||
case FMT_B:
|
case FMT_B:
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
goto need_read_data;
|
goto need_read_data;
|
||||||
if (compile_options.allow_std < GFC_STD_GNU
|
if (!(compile_options.allow_std & GFC_STD_GNU)
|
||||||
&& require_type (dtp, BT_INTEGER, type, f))
|
&& require_type (dtp, BT_INTEGER, type, f))
|
||||||
return;
|
return;
|
||||||
read_radix (dtp, f, p, kind, 2);
|
read_radix (dtp, f, p, kind, 2);
|
||||||
|
@ -1051,7 +1051,7 @@ formatted_transfer_scalar_read (st_parameter_dt *dtp, bt type, void *p, int kind
|
||||||
case FMT_O:
|
case FMT_O:
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
goto need_read_data;
|
goto need_read_data;
|
||||||
if (compile_options.allow_std < GFC_STD_GNU
|
if (!(compile_options.allow_std & GFC_STD_GNU)
|
||||||
&& require_type (dtp, BT_INTEGER, type, f))
|
&& require_type (dtp, BT_INTEGER, type, f))
|
||||||
return;
|
return;
|
||||||
read_radix (dtp, f, p, kind, 8);
|
read_radix (dtp, f, p, kind, 8);
|
||||||
|
@ -1060,7 +1060,7 @@ formatted_transfer_scalar_read (st_parameter_dt *dtp, bt type, void *p, int kind
|
||||||
case FMT_Z:
|
case FMT_Z:
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
goto need_read_data;
|
goto need_read_data;
|
||||||
if (compile_options.allow_std < GFC_STD_GNU
|
if (!(compile_options.allow_std & GFC_STD_GNU)
|
||||||
&& require_type (dtp, BT_INTEGER, type, f))
|
&& require_type (dtp, BT_INTEGER, type, f))
|
||||||
return;
|
return;
|
||||||
read_radix (dtp, f, p, kind, 16);
|
read_radix (dtp, f, p, kind, 16);
|
||||||
|
@ -1443,7 +1443,7 @@ formatted_transfer_scalar_write (st_parameter_dt *dtp, bt type, void *p, int kin
|
||||||
case FMT_B:
|
case FMT_B:
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
goto need_data;
|
goto need_data;
|
||||||
if (compile_options.allow_std < GFC_STD_GNU
|
if (!(compile_options.allow_std & GFC_STD_GNU)
|
||||||
&& require_type (dtp, BT_INTEGER, type, f))
|
&& require_type (dtp, BT_INTEGER, type, f))
|
||||||
return;
|
return;
|
||||||
write_b (dtp, f, p, kind);
|
write_b (dtp, f, p, kind);
|
||||||
|
@ -1452,7 +1452,7 @@ formatted_transfer_scalar_write (st_parameter_dt *dtp, bt type, void *p, int kin
|
||||||
case FMT_O:
|
case FMT_O:
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
goto need_data;
|
goto need_data;
|
||||||
if (compile_options.allow_std < GFC_STD_GNU
|
if (!(compile_options.allow_std & GFC_STD_GNU)
|
||||||
&& require_type (dtp, BT_INTEGER, type, f))
|
&& require_type (dtp, BT_INTEGER, type, f))
|
||||||
return;
|
return;
|
||||||
write_o (dtp, f, p, kind);
|
write_o (dtp, f, p, kind);
|
||||||
|
@ -1461,7 +1461,7 @@ formatted_transfer_scalar_write (st_parameter_dt *dtp, bt type, void *p, int kin
|
||||||
case FMT_Z:
|
case FMT_Z:
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
goto need_data;
|
goto need_data;
|
||||||
if (compile_options.allow_std < GFC_STD_GNU
|
if (!(compile_options.allow_std & GFC_STD_GNU)
|
||||||
&& require_type (dtp, BT_INTEGER, type, f))
|
&& require_type (dtp, BT_INTEGER, type, f))
|
||||||
return;
|
return;
|
||||||
write_z (dtp, f, p, kind);
|
write_z (dtp, f, p, kind);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Handling of compile-time options that influence the library.
|
/* Handling of compile-time options that influence the library.
|
||||||
Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
|
Copyright (C) 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of the GNU Fortran 95 runtime library (libgfortran).
|
This file is part of the GNU Fortran runtime library (libgfortran).
|
||||||
|
|
||||||
Libgfortran is free software; you can redistribute it and/or modify
|
Libgfortran is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -138,7 +138,7 @@ init_compile_options (void)
|
||||||
compile_options.warn_std = GFC_STD_F95_DEL | GFC_STD_LEGACY;
|
compile_options.warn_std = GFC_STD_F95_DEL | GFC_STD_LEGACY;
|
||||||
compile_options.allow_std = GFC_STD_F95_OBS | GFC_STD_F95_DEL
|
compile_options.allow_std = GFC_STD_F95_OBS | GFC_STD_F95_DEL
|
||||||
| GFC_STD_F2003 | GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77
|
| GFC_STD_F2003 | GFC_STD_F2008 | GFC_STD_F95 | GFC_STD_F77
|
||||||
| GFC_STD_GNU | GFC_STD_LEGACY;
|
| GFC_STD_F2008_OBS | GFC_STD_GNU | GFC_STD_LEGACY;
|
||||||
compile_options.pedantic = 0;
|
compile_options.pedantic = 0;
|
||||||
compile_options.dump_core = 0;
|
compile_options.dump_core = 0;
|
||||||
compile_options.backtrace = 0;
|
compile_options.backtrace = 0;
|
||||||
|
|
Loading…
Reference in New Issue