summaryrefslogtreecommitdiff
path: root/gcc/c-family
diff options
context:
space:
mode:
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-14 13:30:32 +0000
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-14 13:30:32 +0000
commitd3b7ee7cc788bd22aa3682d2babfbdd1db0b88ac (patch)
treefc0863eee154e2d3cc964810f8b77726fbaa7a94 /gcc/c-family
parentc8010b803d34fa7e096747067e33c650b36ecc06 (diff)
downloadgcc-d3b7ee7cc788bd22aa3682d2babfbdd1db0b88ac.tar.gz
2012-05-14 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 53063 c-family/ * c.opt (Wc++0X-compat,Wdelete-non-virtual-dtor,Wjump-misses-init, Wreorder): Use LangEnabledBy. * c-opts.c (c_common_handle_option): Do not enable them explicitly. Call lang-specific generated functions. (c_common_post_options): Do not set them here. gcc/ * doc/options.texi: (LangEnabledBy): Document it. * optc-gen.awk: Handle LangEnabledBy. * opth-gen.awk: Generate declaration for lang-specific functions. * opt-read.awk: Record lang numbers. * opt-functions.awk (flag_set_p): Ignore the arguments of flags. (lang_sanitized_name): New. ada/ * gcc-interface/misc.c: Include opts.h and options.h before tm.h. (gnat_handle_option): Call lang-specific generated function. fortran/ * options.c (gfc_handle_option): Call lang-specific generated function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187462 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-family')
-rw-r--r--gcc/c-family/ChangeLog9
-rw-r--r--gcc/c-family/c-opts.c49
-rw-r--r--gcc/c-family/c.opt8
3 files changed, 50 insertions, 16 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 226568593d8..de50b215961 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,12 @@
+2012-05-14 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR 53063
+ * c.opt (Wc++0X-compat,Wdelete-non-virtual-dtor,Wjump-misses-init,
+ Wreorder): Use LangEnabledBy.
+ * c-opts.c (c_common_handle_option): Do not enable them
+ explicitly. Call lang-specific generated functions.
+ (c_common_post_options): Do not set them here.
+
2012-05-13 Manuel López-Ibáñez <manu@gcc.gnu.org>
* c.opt (Wclobbered,Wempty-body,Wignored-qualifiers,
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 8470de15ce0..a7fadc817aa 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -397,9 +397,9 @@ c_common_handle_option (size_t scode, const char *arg, int value,
if (warn_main == -1)
warn_main = (value ? 2 : 0);
- /* In C, -Wall turns on -Wenum-compare, which we do here.
- In C++ it is on by default, which is done in
- c_common_post_options. */
+ /* In C, -Wall and -Wc++-compat turns on -Wenum-compare,
+ which we do here. In C++ it is on by default, which is
+ done in c_common_post_options. */
if (warn_enum_compare == -1)
warn_enum_compare = value;
}
@@ -407,9 +407,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
{
/* C++-specific warnings. */
warn_sign_compare = value;
- warn_reorder = value;
- warn_cxx0x_compat = value;
- warn_delnonvdtor = value;
warn_narrowing = value;
}
@@ -434,10 +431,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
implies -Wenum-compare. */
if (warn_enum_compare == -1 && value)
warn_enum_compare = value;
- /* Because C++ always warns about a goto which misses an
- initialization, -Wc++-compat turns on -Wjump-misses-init. */
- if (warn_jump_misses_init == -1 && value)
- warn_jump_misses_init = value;
cpp_opts->warn_cxx_operator_names = value;
break;
@@ -836,6 +829,40 @@ c_common_handle_option (size_t scode, const char *arg, int value,
break;
}
+ switch (c_language)
+ {
+ case clk_c:
+ C_handle_option_auto (&global_options, &global_options_set,
+ scode, arg, value,
+ c_family_lang_mask, kind,
+ loc, handlers, global_dc);
+ break;
+
+ case clk_objc:
+ ObjC_handle_option_auto (&global_options, &global_options_set,
+ scode, arg, value,
+ c_family_lang_mask, kind,
+ loc, handlers, global_dc);
+ break;
+
+ case clk_cxx:
+ CXX_handle_option_auto (&global_options, &global_options_set,
+ scode, arg, value,
+ c_family_lang_mask, kind,
+ loc, handlers, global_dc);
+ break;
+
+ case clk_objcxx:
+ ObjCXX_handle_option_auto (&global_options, &global_options_set,
+ scode, arg, value,
+ c_family_lang_mask, kind,
+ loc, handlers, global_dc);
+ break;
+
+ default:
+ gcc_unreachable ();
+ }
+
return result;
}
@@ -926,8 +953,6 @@ c_common_post_options (const char **pfilename)
warn_strict_aliasing = 0;
if (warn_strict_overflow == -1)
warn_strict_overflow = 0;
- if (warn_jump_misses_init == -1)
- warn_jump_misses_init = 0;
/* -Woverlength-strings is off by default, but is enabled by -Wpedantic.
It is never enabled in C++, as the minimum limit is not normative
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 8afde8a25e2..0f13dc34eef 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -288,7 +288,7 @@ C ObjC Var(warn_cxx_compat) Warning
Warn about C constructs that are not in the common subset of C and C++
Wc++0x-compat
-C++ ObjC++ Var(warn_cxx0x_compat) Warning
+C++ ObjC++ Var(warn_cxx0x_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
Deprecated in favor of -Wc++11-compat
Wc++11-compat
@@ -336,7 +336,7 @@ C ObjC Var(warn_declaration_after_statement) Warning
Warn when a declaration is found after a statement
Wdelete-non-virtual-dtor
-C++ ObjC++ Var(warn_delnonvdtor) Warning
+C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall)
Warn about deleting polymorphic objects with non-virtual destructors
Wdeprecated
@@ -446,7 +446,7 @@ C ObjC C++ ObjC++ Warning
Warn about PCH files that are found but not used
Wjump-misses-init
-C ObjC Var(warn_jump_misses_init) Init(-1) Warning
+C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
Warn when a jump misses a variable initialization
Wliteral-suffix
@@ -598,7 +598,7 @@ C ObjC C++ ObjC++ Var(warn_redundant_decls) Warning
Warn about multiple declarations of the same object
Wreorder
-C++ ObjC++ Var(warn_reorder) Warning
+C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
Warn when the compiler reorders code
Wreturn-type