aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <coudert@clipper.ens.fr>2005-08-31 14:31:30 +0200
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2005-08-31 12:31:30 +0000
commitee5426a488f8b28099c6f462aef34b157182d2ac (patch)
treefb8c8283c9af4e152ecf97cb2798af7f3abc4e79 /gcc
parentc52501398534057dfdd1bf212d43f351f62b69ab (diff)
downloadgcc-ee5426a488f8b28099c6f462aef34b157182d2ac.zip
gcc-ee5426a488f8b28099c6f462aef34b157182d2ac.tar.gz
gcc-ee5426a488f8b28099c6f462aef34b157182d2ac.tar.bz2
re PR fortran/20592 (-fno-automatic (g77 option) is missing from gfortran.)
PR fortran/20592 * gfortran.h (gfc_option_t): Add flag_automatic. * invoke.texi: Document the -fno-automatic option. * lang.opt: Add a -fautomatic option. * options.c (gfc_init_options): Default for -fautomatic is on. (gfc_handle_option): Add handling of -fautomatic option. * resolve.c (gfc_resolve): When -fno-automatic is used, mark needed variables as SAVE. From-SVN: r103671
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog11
-rw-r--r--gcc/fortran/gfortran.h1
-rw-r--r--gcc/fortran/invoke.texi13
-rw-r--r--gcc/fortran/lang.opt4
-rw-r--r--gcc/fortran/options.c5
-rw-r--r--gcc/fortran/resolve.c2
6 files changed, 33 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fc306e6..a03d3df 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,14 @@
+2005-08-31 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR fortran/20592
+ * gfortran.h (gfc_option_t): Add flag_automatic.
+ * invoke.texi: Document the -fno-automatic option.
+ * lang.opt: Add a -fautomatic option.
+ * options.c (gfc_init_options): Default for -fautomatic is on.
+ (gfc_handle_option): Add handling of -fautomatic option.
+ * resolve.c (gfc_resolve): When -fno-automatic is used, mark
+ needed variables as SAVE.
+
2005-08-27 Erik Edelmann <erik.edelmann@iki.fi>
* trans-array.c (gfc_trans_deferred_array): Fix comments.
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 8c4303b..ed9fcba 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -1438,6 +1438,7 @@ typedef struct
int flag_pack_derived;
int flag_repack_arrays;
int flag_f2c;
+ int flag_automatic;
int flag_backslash;
int flag_d_lines;
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 945c9f1..847ab29 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -143,7 +143,7 @@ by type. Explanations are in the following sections.
@item Code Generation Options
@xref{Code Gen Options,,Options for Code Generation Conventions}.
@gccoptlist{
--ff2c -fno-underscoring -fsecond-underscore @gol
+-fno-automatic -ff2c -fno-underscoring -fsecond-underscore @gol
-fbounds-check -fmax-stack-var-size=@var{n} @gol
-fpackderived -frepack-arrays}
@end table
@@ -537,8 +537,17 @@ one of the forms is listed---the one which is not the default. You
can figure out the other form by either removing @option{no-} or adding
it.
-
@table @gcctabopt
+@cindex @option{-fno-automatic} option
+@cindex options, @option{-fno-automatic}
+@item -fno-automatic
+@cindex SAVE statement
+@cindex statements, SAVE
+Treat each program unit as if the @code{SAVE} statement was specified for
+every local variable and array referenced in it. Does not affect common
+blocks. (Some Fortran compilers provide this option under the name
+@option{-static}.)
+
@cindex @option{-ff2c} option
@cindex options, @option{-ff2c}
@item -ff2c
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
index 29d4317..8cad234 100644
--- a/gcc/fortran/lang.opt
+++ b/gcc/fortran/lang.opt
@@ -69,6 +69,10 @@ Wunused-labels
F95
Warn when a label is unused
+fautomatic
+F95
+Do not treat local variables and COMMON blocks as if they were named in SAVE statements
+
fbackslash
F95
Specify that backslash in string introduces an escape character
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index c980499..8e8d6a8 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -70,6 +70,7 @@ gfc_init_options (unsigned int argc ATTRIBUTE_UNUSED,
gfc_option.flag_no_backend = 0;
gfc_option.flag_pack_derived = 0;
gfc_option.flag_repack_arrays = 0;
+ gfc_option.flag_automatic = 1;
gfc_option.flag_backslash = 1;
gfc_option.flag_d_lines = -1;
@@ -331,6 +332,10 @@ gfc_handle_option (size_t scode, const char *arg, int value)
gfc_option.flag_dollar_ok = value;
break;
+ case OPT_fautomatic:
+ gfc_option.flag_automatic = value;
+ break;
+
case OPT_fbackslash:
gfc_option.flag_backslash = value;
break;
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index ace5958..968d137 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -5053,7 +5053,7 @@ gfc_resolve (gfc_namespace * ns)
gfc_traverse_ns (ns, resolve_values);
- if (ns->save_all)
+ if (!gfc_option.flag_automatic || ns->save_all)
gfc_save_all (ns);
iter_stack = NULL;