diff options
author | Francois-Xavier Coudert <coudert@clipper.ens.fr> | 2007-01-20 19:33:20 +0100 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-01-20 18:33:20 +0000 |
commit | e6472bcede51c6d029a60fe644f50c982d689c53 (patch) | |
tree | 420164ab04b47273cddf4ac4aa692f1d7a3797dd /gcc | |
parent | b153d3e1cab96c4c95abfc4ae957775ad92379aa (diff) | |
download | gcc-e6472bcede51c6d029a60fe644f50c982d689c53.zip gcc-e6472bcede51c6d029a60fe644f50c982d689c53.tar.gz gcc-e6472bcede51c6d029a60fe644f50c982d689c53.tar.bz2 |
gfortran.h (gfc_options_t): Add flag_allow_leading_underscore.
* gfortran.h (gfc_options_t): Add flag_allow_leading_underscore.
* lang.opt: Add -fallow-leading-underscore.
* match.c (gfc_match_name): Allow leading underscore in symbol
name if -fallow-leading-underscore is used.
* symbol.c (gfc_get_default_type): Add special case for symbol
names beginning with an underscore.
* trans-decl.c (gfc_get_extern_function_decl,
gfc_build_intrinsic_function_decls): Add _gfortran prefix to
library symbols selected_int_kind, selected_real_kind and
all specifics.
* options.c (gfc_init_options, gfc_handle_option): Handle the
new -fallow-leading-underscore option.
* m4/misc_specifics.m4: Add _gfortran prefix to specific names.
* m4/specific2.m4: Likewise.
* m4/specific.m4: Likewise.
* intrinsics/f2c_specifics.F90: Likewise.
* intrinsics/selected_int_kind.f90: Add _gfortran prefix.
* intrinsics/selected_real_kind.f90: Likewise.
* intrinsics/dprod_r8.f90: Likewise.
* Makefile.am: Add -fallow-leading-underscore to the
gfor_specific_src files, as well as selected_real_kind.F90
and selected_int_kind.F90
* Makefile.in: Regenerate.
* generated/_sqrt_c8.F90: Regenerate.
* generated/_sign_r16.F90: Regenerate.
* generated/_log_c16.F90: Regenerate.
* generated/_sin_c10.F90: Regenerate.
* generated/_tanh_r4.F90: Regenerate.
* generated/_tanh_r8.F90: Regenerate.
* generated/_log10_r10.F90: Regenerate.
* generated/_aimag_c4.F90: Regenerate.
* generated/_sign_r4.F90: Regenerate.
* generated/_aimag_c8.F90: Regenerate.
* generated/_sign_r8.F90: Regenerate.
* generated/_mod_i4.F90: Regenerate.
* generated/_cos_r16.F90: Regenerate.
* generated/_aint_r10.F90: Regenerate.
* generated/_mod_i8.F90: Regenerate.
* generated/_abs_i16.F90: Regenerate.
* generated/_sqrt_c10.F90: Regenerate.
* generated/_atan2_r4.F90: Regenerate.
* generated/_cos_c4.F90: Regenerate.
* generated/_atan_r16.F90: Regenerate.
* generated/_tanh_r10.F90: Regenerate.
* generated/_atan2_r8.F90: Regenerate.
* generated/_cos_c8.F90: Regenerate.
* generated/_exp_r4.F90: Regenerate.
* generated/_log_r10.F90: Regenerate.
* generated/_exp_r8.F90: Regenerate.
* generated/_abs_r4.F90: Regenerate.
* generated/_abs_r8.F90: Regenerate.
* generated/_sin_r16.F90: Regenerate.
* generated/_tan_r4.F90: Regenerate.
* generated/_tan_r8.F90: Regenerate.
* generated/_sign_i4.F90: Regenerate.
* generated/_sign_i8.F90: Regenerate.
* generated/_exp_c16.F90: Regenerate.
* generated/_sqrt_r16.F90: Regenerate.
* generated/_conjg_c4.F90: Regenerate.
* generated/_conjg_c8.F90: Regenerate.
* generated/_dim_r16.F90: Regenerate.
* generated/_mod_r10.F90: Regenerate.
* generated/_abs_c10.F90: Regenerate.
* generated/_conjg_c16.F90: Regenerate.
* generated/_tan_r16.F90: Regenerate.
* generated/_asinh_r10.F90: Regenerate.
* generated/_abs_i4.F90: Regenerate.
* generated/_abs_i8.F90: Regenerate.
* generated/_acos_r10.F90: Regenerate.
* generated/_exp_r10.F90: Regenerate.
* generated/_acosh_r16.F90: Regenerate.
* generated/_atan2_r16.F90: Regenerate.
* generated/_cos_c16.F90: Regenerate.
* generated/_mod_i16.F90: Regenerate.
* generated/_asin_r4.F90: Regenerate.
* generated/_anint_r16.F90: Regenerate.
* generated/_asin_r8.F90: Regenerate.
* generated/_aimag_c10.F90: Regenerate.
* generated/_exp_c4.F90: Regenerate.
* generated/_sinh_r10.F90: Regenerate.
* generated/_exp_c8.F90: Regenerate.
* generated/_log10_r4.F90: Regenerate.
* generated/_log10_r8.F90: Regenerate.
* generated/_abs_c4.F90: Regenerate.
* generated/_abs_r16.F90: Regenerate.
* generated/_abs_c8.F90: Regenerate.
* generated/_asin_r10.F90: Regenerate.
* generated/_sign_r10.F90: Regenerate.
* generated/_atanh_r16.F90: Regenerate.
* generated/_log_c10.F90: Regenerate.
* generated/_cosh_r16.F90: Regenerate.
* generated/_sin_c16.F90: Regenerate.
* generated/_cos_r10.F90: Regenerate.
* generated/_log10_r16.F90: Regenerate.
* generated/_aint_r16.F90: Regenerate.
* generated/_acos_r4.F90: Regenerate.
* generated/_acos_r8.F90: Regenerate.
* generated/_sqrt_c16.F90: Regenerate.
* generated/_acosh_r4.F90: Regenerate.
* generated/_atan_r10.F90: Regenerate.
* generated/_acosh_r8.F90: Regenerate.
* generated/_sign_i16.F90: Regenerate.
* generated/_tanh_r16.F90: Regenerate.
* generated/_log_r4.F90: Regenerate.
* generated/_log_r8.F90: Regenerate.
* generated/_sin_r4.F90: Regenerate.
* generated/_sin_r8.F90: Regenerate.
* generated/_log_r16.F90: Regenerate.
* generated/_sin_r10.F90: Regenerate.
* generated/_sqrt_r4.F90: Regenerate.
* generated/_exp_c10.F90: Regenerate.
* generated/_sqrt_r8.F90: Regenerate.
* generated/_asinh_r4.F90: Regenerate.
* generated/_sqrt_r10.F90: Regenerate.
* generated/_asinh_r8.F90: Regenerate.
* generated/_dim_r4.F90: Regenerate.
* generated/_dim_r8.F90: Regenerate.
* generated/_dim_r10.F90: Regenerate.
* generated/_cosh_r4.F90: Regenerate.
* generated/_conjg_c10.F90: Regenerate.
* generated/_tan_r10.F90: Regenerate.
* generated/_cosh_r8.F90: Regenerate.
* generated/_mod_r16.F90: Regenerate.
* generated/_abs_c16.F90: Regenerate.
* generated/_cos_r4.F90: Regenerate.
* generated/_asinh_r16.F90: Regenerate.
* generated/_cos_r8.F90: Regenerate.
* generated/_atanh_r4.F90: Regenerate.
* generated/_atanh_r8.F90: Regenerate.
* generated/_acos_r16.F90: Regenerate.
* generated/_anint_r4.F90: Regenerate.
* generated/_acosh_r10.F90: Regenerate.
* generated/_anint_r8.F90: Regenerate.
* generated/_exp_r16.F90: Regenerate.
* generated/_mod_r4.F90: Regenerate.
* generated/_cos_c10.F90: Regenerate.
* generated/_atan2_r10.F90: Regenerate.
* generated/_dim_i16.F90: Regenerate.
* generated/_mod_r8.F90: Regenerate.
* generated/_anint_r10.F90: Regenerate.
* generated/_aint_r4.F90: Regenerate.
* generated/_aint_r8.F90: Regenerate.
* generated/_dim_i4.F90: Regenerate.
* generated/_sinh_r4.F90: Regenerate.
* generated/_log_c4.F90: Regenerate.
* generated/_dim_i8.F90: Regenerate.
* generated/_sinh_r8.F90: Regenerate.
* generated/_log_c8.F90: Regenerate.
* generated/_sin_c4.F90: Regenerate.
* generated/_sin_c8.F90: Regenerate.
* generated/misc_specifics.F90: Regenerate.
* generated/_abs_r10.F90: Regenerate.
* generated/_aimag_c16.F90: Regenerate.
* generated/_atan_r4.F90: Regenerate.
* generated/_sinh_r16.F90: Regenerate.
* generated/_atan_r8.F90: Regenerate.
* generated/_atanh_r10.F90: Regenerate.
* generated/_cosh_r10.F90: Regenerate.
* generated/_sqrt_c4.F90: Regenerate.
* generated/_asin_r16.F90: Regenerate.
From-SVN: r121007
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/fortran/gfortran.h | 1 | ||||
-rw-r--r-- | gcc/fortran/lang.opt | 4 | ||||
-rw-r--r-- | gcc/fortran/match.c | 2 | ||||
-rw-r--r-- | gcc/fortran/options.c | 5 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 12 |
7 files changed, 39 insertions, 6 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 99a39b2..3e16d4c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,20 @@ 2007-01-20 Francois-Xavier Coudert <coudert@clipper.ens.fr> + * gfortran.h (gfc_options_t): Add flag_allow_leading_underscore. + * lang.opt: Add -fallow-leading-underscore. + * match.c (gfc_match_name): Allow leading underscore in symbol + name if -fallow-leading-underscore is used. + * symbol.c (gfc_get_default_type): Add special case for symbol + names beginning with an underscore. + * trans-decl.c (gfc_get_extern_function_decl, + gfc_build_intrinsic_function_decls): Add _gfortran prefix to + library symbols selected_int_kind, selected_real_kind and + all specifics. + * options.c (gfc_init_options, gfc_handle_option): Handle the + new -fallow-leading-underscore option. + +2007-01-20 Francois-Xavier Coudert <coudert@clipper.ens.fr> + PR fortran/30446 * options.c (gfc_handle_module_path_options): Path used in -J option is now added to the module search path. diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 64739fb..05b7ebc 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1656,6 +1656,7 @@ typedef struct int flag_f2c; int flag_automatic; int flag_backslash; + int flag_allow_leading_underscore; int flag_dump_core; int flag_external_blas; int blas_matmul_limit; diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 2991f7f..7d413ff 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -81,6 +81,10 @@ fall-intrinsics Fortran RejectNegative All intrinsics procedures are available regardless of selected standard +fallow-leading-underscore +Fortran Undocumented +; For internal use only: allow the first character of symbol names to be an underscore + fautomatic Fortran Do not treat local variables and COMMON blocks as if they were named in SAVE statements diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index e3d37d2..0fa1f63 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -392,7 +392,7 @@ gfc_match_name (char *buffer) gfc_gobble_whitespace (); c = gfc_next_char (); - if (!ISALPHA (c)) + if (!(ISALPHA (c) || (c == '_' && gfc_option.flag_allow_leading_underscore))) { if (gfc_error_flag_test() == 0) gfc_error ("Invalid character in name at %C"); diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index aa1a940..8ead48f 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -84,6 +84,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_allow_leading_underscore = 0; gfc_option.flag_dump_core = 0; gfc_option.flag_external_blas = 0; gfc_option.blas_matmul_limit = 30; @@ -450,6 +451,10 @@ gfc_handle_option (size_t scode, const char *arg, int value) gfc_option.flag_automatic = value; break; + case OPT_fallow_leading_underscore: + gfc_option.flag_allow_leading_underscore = value; + break; + case OPT_fbackslash: gfc_option.flag_backslash = value; break; diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 85aff86..c130dee 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -202,6 +202,12 @@ gfc_get_default_type (gfc_symbol * sym, gfc_namespace * ns) char letter; letter = sym->name[0]; + + if (gfc_option.flag_allow_leading_underscore && letter == '_') + gfc_internal_error ("Option -fallow_leading_underscore is for use only by " + "gfortran developers, and should not be used for " + "implicitly typed variables"); + if (letter < 'a' || letter > 'z') gfc_internal_error ("gfc_get_default_type(): Bad symbol"); diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 000772c..3028c8f 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1060,7 +1060,7 @@ gfc_get_extern_function_decl (gfc_symbol * sym) gfc_expr e; gfc_intrinsic_sym *isym; gfc_expr argexpr; - char s[GFC_MAX_SYMBOL_LEN + 13]; /* "f2c_specific" and '\0'. */ + char s[GFC_MAX_SYMBOL_LEN + 23]; /* "_gfortran_f2c_specific" and '\0'. */ tree name; tree mangled_name; @@ -1108,10 +1108,10 @@ gfc_get_extern_function_decl (gfc_symbol * sym) { /* Specific which needs a different implementation if f2c calling conventions are used. */ - sprintf (s, "f2c_specific%s", e.value.function.name); + sprintf (s, "_gfortran_f2c_specific%s", e.value.function.name); } else - sprintf (s, "specific%s", e.value.function.name); + sprintf (s, "_gfortran_specific%s", e.value.function.name); name = get_identifier (s); mangled_name = name; @@ -2082,13 +2082,15 @@ gfc_build_intrinsic_function_decls (void) gfc_charlen_type_node, pchar_type_node); gfor_fndecl_si_kind = - gfc_build_library_function_decl (get_identifier ("selected_int_kind"), + gfc_build_library_function_decl (get_identifier + (PREFIX("selected_int_kind")), gfc_int4_type_node, 1, pvoid_type_node); gfor_fndecl_sr_kind = - gfc_build_library_function_decl (get_identifier ("selected_real_kind"), + gfc_build_library_function_decl (get_identifier + (PREFIX("selected_real_kind")), gfc_int4_type_node, 2, pvoid_type_node, pvoid_type_node); |