aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-07-27 10:59:51 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2010-07-27 10:59:51 +0100
commit7a9bf9a4e0fdbf96ac988e149941e24f13e97b8d (patch)
treecb22bfd268b7388c3f8e1f2942cb855aada62993 /gcc/fortran
parent42694189bdade115459859e898e0b78d1cdb033c (diff)
downloadgcc-7a9bf9a4e0fdbf96ac988e149941e24f13e97b8d.zip
gcc-7a9bf9a4e0fdbf96ac988e149941e24f13e97b8d.tar.gz
gcc-7a9bf9a4e0fdbf96ac988e149941e24f13e97b8d.tar.bz2
langhooks-def.h (lhd_init_options, [...]): New.
* langhooks-def.h (lhd_init_options, LANG_HOOKS_OPTION_LANG_MASK, LANG_HOOKS_COMPLAIN_WRONG_LANG_P): New. (LANG_HOOKS_INIT_OPTIONS): Update default definition. (LANG_HOOKS_INITIALIZER): Add new hooks. * langhooks.c (lhd_init_options, lhd_complain_wrong_lang_p): New. * langhooks.h (struct lang_hooks): Add new hooks option_lang_mask and complain_wrong_lang_p. Update init_options prototype. * c-objc-common.c (c_initialize_diagnostics): First call c_common_initialize_diagnostics. * c-objc-common.h (LANG_HOOKS_OPTION_LANG_MASK, LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define. * coretypes.h (struct cl_option, struct cl_decoded_option): Declare. * hooks.c (hook_uint_uint_constcharptrptr_0): Remove. (hook_uint_void_0): New. * hooks.h (hook_uint_uint_constcharptrptr_0): Remove. (hook_uint_void_0): New. * opts-common.c (decode_cmdline_option, decode_cmdline_options_to_array): Also fill in canonical_option field. * opts.c (complain_wrong_lang): Use langhook to determine whether to complain instead of special-casing LTO. (decode_options): Separate lang_mask determination with option_lang_mask hook from call of init_options hook. * opts.h (struct cl_decoded_option): Add canonical_option. ada: * gcc-interface/misc.c (gnat_option_lang_mask): New. (gnat_init_options): Update prototype. Reconstruct argv array from decoded options. c-family: * c-common.h (c_common_option_lang_mask, c_common_initialize_diagnostics, c_common_complain_wrong_lang_p): New. (c_common_init_options): Update prototype. * c-opts.c (c_common_option_lang_mask): New. (c_common_initialize_diagnostics): Split out of c_common_init_options. (accept_all_c_family_options, c_common_complain_wrong_lang_p): New. (c_common_init_options): Update prototype. Use decoded options in search for -lang-asm. cp: * cp-objcp-common.c (cxx_initialize_diagnostics): First call c_common_initialize_diagnostics. * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK, LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define. fortran: * cpp.c (gfc_cpp_init_options): Update prototype. Use number of decoded options in allocating deferred_opt. * cpp.h (gfc_cpp_init_options): Update prototype. * f95-lang.c (LANG_HOOKS_OPTION_LANG_MASK): Define. * gfortran.h (gfc_option_lang_mask): New. (gfc_init_options): Update prototype. * options.c (gfc_option_lang_mask): New. (gfc_init_options): Update prototype. Pass new arguments to gfc_cpp_init_options. java: * lang.c (java_option_lang_mask): New. (java_init_options): Update prototype. (LANG_HOOKS_OPTION_LANG_MASK): Define. lto: * lto-lang.c (lto_option_lang_mask, lto_complain_wrong_lang_p): New. (lto_init_options): Update prototype. (LANG_HOOKS_OPTION_LANG_MASK, LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define. From-SVN: r162560
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog12
-rw-r--r--gcc/fortran/cpp.c7
-rw-r--r--gcc/fortran/cpp.h5
-rw-r--r--gcc/fortran/f95-lang.c2
-rw-r--r--gcc/fortran/gfortran.h4
-rw-r--r--gcc/fortran/options.c18
6 files changed, 37 insertions, 11 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 7700e0b..dcff2b2 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,15 @@
+2010-07-27 Joseph Myers <joseph@codesourcery.com>
+
+ * cpp.c (gfc_cpp_init_options): Update prototype. Use number of
+ decoded options in allocating deferred_opt.
+ * cpp.h (gfc_cpp_init_options): Update prototype.
+ * f95-lang.c (LANG_HOOKS_OPTION_LANG_MASK): Define.
+ * gfortran.h (gfc_option_lang_mask): New.
+ (gfc_init_options): Update prototype.
+ * options.c (gfc_option_lang_mask): New.
+ (gfc_init_options): Update prototype. Pass new arguments to
+ gfc_cpp_init_options.
+
2010-07-26 Tobias Burnus <burnus@net-b.de>
PR fortran/40873
diff --git a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
index 7f960f5..b98d83f 100644
--- a/gcc/fortran/cpp.c
+++ b/gcc/fortran/cpp.c
@@ -304,8 +304,8 @@ gfc_cpp_temporary_file (void)
}
void
-gfc_cpp_init_options (unsigned int argc,
- const char **argv ATTRIBUTE_UNUSED)
+gfc_cpp_init_options (unsigned int decoded_options_count,
+ struct cl_decoded_option *decoded_options ATTRIBUTE_UNUSED)
{
/* Do not create any objects from libcpp here. If no
preprocessing is requested, this would be wasted
@@ -337,7 +337,8 @@ gfc_cpp_init_options (unsigned int argc,
gfc_cpp_option.prefix = NULL;
gfc_cpp_option.sysroot = NULL;
- gfc_cpp_option.deferred_opt = XNEWVEC (gfc_cpp_deferred_opt_t, argc);
+ gfc_cpp_option.deferred_opt = XNEWVEC (gfc_cpp_deferred_opt_t,
+ decoded_options_count);
gfc_cpp_option.deferred_opt_count = 0;
}
diff --git a/gcc/fortran/cpp.h b/gcc/fortran/cpp.h
index 556eecb..fa4383a 100644
--- a/gcc/fortran/cpp.h
+++ b/gcc/fortran/cpp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -36,7 +36,8 @@ const char *gfc_cpp_temporary_file (void);
void gfc_cpp_init_0 (void);
void gfc_cpp_init (void);
-void gfc_cpp_init_options (unsigned int argc, const char **argv);
+void gfc_cpp_init_options (unsigned int decoded_options_count,
+ struct cl_decoded_option *decoded_options);
int gfc_cpp_handle_option(size_t scode, const char *arg, int value);
diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c
index 9d0bf44..70548bf 100644
--- a/gcc/fortran/f95-lang.c
+++ b/gcc/fortran/f95-lang.c
@@ -101,6 +101,7 @@ static void gfc_init_ts (void);
#undef LANG_HOOKS_INIT
#undef LANG_HOOKS_FINISH
#undef LANG_HOOKS_WRITE_GLOBALS
+#undef LANG_HOOKS_OPTION_LANG_MASK
#undef LANG_HOOKS_INIT_OPTIONS
#undef LANG_HOOKS_HANDLE_OPTION
#undef LANG_HOOKS_POST_OPTIONS
@@ -130,6 +131,7 @@ static void gfc_init_ts (void);
#define LANG_HOOKS_INIT gfc_init
#define LANG_HOOKS_FINISH gfc_finish
#define LANG_HOOKS_WRITE_GLOBALS gfc_write_global_declarations
+#define LANG_HOOKS_OPTION_LANG_MASK gfc_option_lang_mask
#define LANG_HOOKS_INIT_OPTIONS gfc_init_options
#define LANG_HOOKS_HANDLE_OPTION gfc_handle_option
#define LANG_HOOKS_POST_OPTIONS gfc_post_options
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index bb056e2..f082d5e 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -2355,7 +2355,9 @@ void gfc_done_2 (void);
int get_c_kind (const char *, CInteropKind_t *);
/* options.c */
-unsigned int gfc_init_options (unsigned int, const char **);
+unsigned int gfc_option_lang_mask (void);
+void gfc_init_options (unsigned int,
+ struct cl_decoded_option *);
int gfc_handle_option (size_t, const char *, int, int);
bool gfc_post_options (const char **);
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 5ba2544..337802e 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -53,11 +53,21 @@ set_default_std_flags (void)
}
+/* Return language mask for Fortran options. */
+
+unsigned int
+gfc_option_lang_mask (void)
+{
+ return CL_Fortran;
+}
+
+
/* Get ready for options handling. Keep in sync with
libgfortran/runtime/compile_options.c (init_compile_options). */
-unsigned int
-gfc_init_options (unsigned int argc, const char **argv)
+void
+gfc_init_options (unsigned int decoded_options_count,
+ struct cl_decoded_option *decoded_options)
{
gfc_source_file = NULL;
gfc_option.module_dir = NULL;
@@ -143,9 +153,7 @@ gfc_init_options (unsigned int argc, const char **argv)
flag_short_enums = targetm.default_short_enums ();
/* Initialize cpp-related options. */
- gfc_cpp_init_options(argc, argv);
-
- return CL_Fortran;
+ gfc_cpp_init_options (decoded_options_count, decoded_options);
}