diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-08-12 20:19:59 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-08-12 20:19:59 +0000 |
commit | 654b60732e6a604471862085f0037fd05df86887 (patch) | |
tree | 412c4a82e24e651226e265eae27b203315512a79 /gcc | |
parent | 5cda5098057c002cf332708f0e5b53bb35d49d76 (diff) | |
download | gcc-654b60732e6a604471862085f0037fd05df86887.zip gcc-654b60732e6a604471862085f0037fd05df86887.tar.gz gcc-654b60732e6a604471862085f0037fd05df86887.tar.bz2 |
re PR fortran/31629 (option to make module entities PRIVATE by default)
PR fortran/31629
* lang.opt (-fmodule-private): New option.
* gfortran.h (gfc_option_t): Add flag_module_private member.
* invoke.texi (-fmodule-private): Document the new option.
* module.c (gfc_check_access): Allow the -fmodule-private option
to modify the default behaviour.
* options.c (gfc_init_options): Initialize flag_module_private.
(gfc_handle_option): Handle -fmodule-private.
* gfortran.dg/module_private_1.f90: New test.
From-SVN: r127381
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/fortran/gfortran.h | 1 | ||||
-rw-r--r-- | gcc/fortran/invoke.texi | 10 | ||||
-rw-r--r-- | gcc/fortran/lang.opt | 4 | ||||
-rw-r--r-- | gcc/fortran/module.c | 5 | ||||
-rw-r--r-- | gcc/fortran/options.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/module_private_1.f90 | 20 |
8 files changed, 59 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ecb7569..9e82b0f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,16 @@ 2007-08-12 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/31629 + * lang.opt (-fmodule-private): New option. + * gfortran.h (gfc_option_t): Add flag_module_private member. + * invoke.texi (-fmodule-private): Document the new option. + * module.c (gfc_check_access): Allow the -fmodule-private option + to modify the default behaviour. + * options.c (gfc_init_options): Initialize flag_module_private. + (gfc_handle_option): Handle -fmodule-private. + +2007-08-12 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/29600 * intrinsic.c (add_functions): Add KIND arguments to COUNT, IACHAR, ICHAR, INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index dd1647d..704ff7e 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1865,6 +1865,7 @@ typedef struct int flag_d_lines; int flag_openmp; int flag_sign_zero; + int flag_module_private; int fpe; diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index b1d790a..3f27528 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -121,7 +121,7 @@ by type. Explanations are in the following sections. -ffixed-line-length-@var{n} -ffixed-line-length-none @gol -ffree-line-length-@var{n} -ffree-line-length-none @gol -fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 @gol --fcray-pointer -fopenmp -frange-check -fno-backslash } +-fcray-pointer -fopenmp -frange-check -fno-backslash -fmodule-private} @item Error and Warning Options @xref{Error and Warning Options,,Options to request or suppress errors @@ -238,6 +238,14 @@ Allow @samp{$} as a valid character in a symbol name. Change the interpretation of backslashes in string literals from ``C-style'' escape characters to a single backslash character. +@item -fmodule-private +@opindex @code{fmodule-private} +@cindex module entities +@cindex private +Set the default accessibility of module entities to @code{PRIVATE}. +Use-associated entities will not be accessible unless they are explicitly +declared as @code{PUBLIC}. + @item -ffixed-line-length-@var{n} @opindex @code{ffixed-line-length-}@var{n} @cindex file format, fixed diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index bb99a82..3072051 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -212,6 +212,10 @@ fmax-stack-var-size= Fortran RejectNegative Joined UInteger -fmax-stack-var-size=<n> Size in bytes of the largest array that will be put on the stack +fmodule-private +Fortran +Set default accessibility of module entities to PRIVATE. + fopenmp Fortran Enable OpenMP diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index baba5c7..9ef0f40 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -3714,7 +3714,10 @@ gfc_check_access (gfc_access specific_access, gfc_access default_access) if (specific_access == ACCESS_PRIVATE) return FALSE; - return default_access != ACCESS_PRIVATE; + if (gfc_option.flag_module_private) + return default_access == ACCESS_PUBLIC; + else + return default_access != ACCESS_PRIVATE; } diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index ad639ee..0bea67d 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -93,6 +93,7 @@ gfc_init_options (unsigned int argc ATTRIBUTE_UNUSED, gfc_option.flag_preprocessed = 0; gfc_option.flag_automatic = 1; gfc_option.flag_backslash = 1; + gfc_option.flag_module_private = 0; gfc_option.flag_backtrace = 0; gfc_option.flag_allow_leading_underscore = 0; gfc_option.flag_dump_core = 0; @@ -575,6 +576,10 @@ gfc_handle_option (size_t scode, const char *arg, int value) gfc_option.flag_max_stack_var_size = value; break; + case OPT_fmodule_private: + gfc_option.flag_module_private = value; + break; + case OPT_frange_check: gfc_option.flag_range_check = value; break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b2ae17c..33fb738 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2007-08-12 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/31629 + * gcc/testsuite/gfortran.dg/module_private_1.f90: New test. + +2007-08-12 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/29600 * gfortran.dg/intrinsics_kind_argument_1.f90: New test. * gfortran.dg/pure_dummy_length_1.f90: Adapt to new error wording. diff --git a/gcc/testsuite/gfortran.dg/module_private_1.f90 b/gcc/testsuite/gfortran.dg/module_private_1.f90 new file mode 100644 index 0000000..66bc564 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/module_private_1.f90 @@ -0,0 +1,20 @@ +! { dg-do compile } +! { dg-options "-fmodule-private" } +module bar + implicit none + public :: i + integer :: i +end module bar + +module foo + implicit none + integer :: j +end module foo + +program main + use bar, only : i + use foo, only : j ! { dg-error "not found in module" } + i = 1 + j = 1 + print *, i, j +end program main |