From: Marek Polacek Date: Fri, 17 Oct 2014 18:37:25 +0000 (+0000) Subject: c-opts.c (c_common_post_options): Set warn_implicit_int. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=92574c7cdbf3f32fdc48897990d63e1dc65d5bbf;p=gcc.git c-opts.c (c_common_post_options): Set warn_implicit_int. c-family/ * c-opts.c (c_common_post_options): Set warn_implicit_int. * c.opt (Wimplicit-int): Initialize to -1. c/ * c-decl.c (grokdeclarator): Use OPT_Wimplicit_int unconditionally. (start_function): Use OPT_Wimplicit_int instead of 0. (store_parm_decls_oldstyle): Likewise. testsuite/ * gcc.dg/Wimplicit-int-1.c: New test. * gcc.dg/Wimplicit-int-2.c: New test. * gcc.dg/Wimplicit-int-3.c: New test. * gcc.dg/Wimplicit-int-4.c: New test. From-SVN: r216412 --- diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 0a47f434d00..6d43fb77328 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2014-10-17 Marek Polacek + + * c-opts.c (c_common_post_options): Set warn_implicit_int. + * c.opt (Wimplicit-int): Initialize to -1. + 2014-10-16 Andrew MacLeod * c-pragma.c: Adjust include files. diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index eb078e3f5cd..448eb3e8b74 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -864,6 +864,10 @@ c_common_post_options (const char **pfilename) if (warn_implicit_function_declaration == -1) warn_implicit_function_declaration = flag_isoc99; + /* -Wimplicit-int is enabled by default for C99. */ + if (warn_implicit_int == -1) + warn_implicit_int = flag_isoc99; + /* Declone C++ 'structors if -Os. */ if (flag_declone_ctor_dtor == -1) flag_declone_ctor_dtor = optimize_size; diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 72ac2eddd89..4f96cf83d84 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -488,7 +488,7 @@ C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning LangEnabledBy(C Warn about implicit function declarations Wimplicit-int -C ObjC Var(warn_implicit_int) Warning LangEnabledBy(C ObjC,Wimplicit) +C ObjC Var(warn_implicit_int) Init(-1) Warning LangEnabledBy(C ObjC,Wimplicit) Warn when a declaration does not specify a type Wimport diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index ac28472bbad..d6a58a86e60 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2014-10-17 Marek Polacek + + * c-decl.c (grokdeclarator): Use OPT_Wimplicit_int unconditionally. + (start_function): Use OPT_Wimplicit_int instead of 0. + (store_parm_decls_oldstyle): Likewise. + 2014-10-17 Alan Modra PR middle-end/61848 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 839c67bf7e9..b18da483fea 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -5330,11 +5330,11 @@ grokdeclarator (const struct c_declarator *declarator, else { if (name) - warn_defaults_to (loc, flag_isoc99 ? 0 : OPT_Wimplicit_int, + warn_defaults_to (loc, OPT_Wimplicit_int, "type defaults to % in declaration " "of %qE", name); else - warn_defaults_to (loc, flag_isoc99 ? 0 : OPT_Wimplicit_int, + warn_defaults_to (loc, OPT_Wimplicit_int, "type defaults to % in type name"); } } @@ -8120,7 +8120,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, } if (warn_about_return_type) - warn_defaults_to (loc, flag_isoc99 ? 0 + warn_defaults_to (loc, flag_isoc99 ? OPT_Wimplicit_int : (warn_return_type ? OPT_Wreturn_type : OPT_Wimplicit_int), "return type defaults to %"); @@ -8429,7 +8429,8 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) if (flag_isoc99) pedwarn (DECL_SOURCE_LOCATION (decl), - 0, "type of %qD defaults to %", decl); + OPT_Wimplicit_int, "type of %qD defaults to %", + decl); else warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wmissing_parameter_type, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b355cb0c6b4..a73dad957c6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-10-17 Marek Polacek + + * gcc.dg/Wimplicit-int-1.c: New test. + * gcc.dg/Wimplicit-int-2.c: New test. + * gcc.dg/Wimplicit-int-3.c: New test. + * gcc.dg/Wimplicit-int-4.c: New test. + 2014-10-17 Andrew MacLeod * g++.dg/plugin/pragma_plugin.c: Revert flattening to test plugin header diff --git a/gcc/testsuite/gcc.dg/Wimplicit-int-1.c b/gcc/testsuite/gcc.dg/Wimplicit-int-1.c new file mode 100644 index 00000000000..0c89caf8c47 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wimplicit-int-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ + +static l; /* { dg-warning "type defaults to" } */ + +foo (a) /* { dg-warning "return type defaults to" } */ +/* { dg-warning "type of .a. defaults to .int." "type" { target *-*-* } 6 } */ +{ + auto p; /* { dg-warning "type defaults to" } */ + typedef bar; /* { dg-warning "type defaults to" } */ +} diff --git a/gcc/testsuite/gcc.dg/Wimplicit-int-2.c b/gcc/testsuite/gcc.dg/Wimplicit-int-2.c new file mode 100644 index 00000000000..158b61ce47e --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wimplicit-int-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-pedantic-errors" } */ + +static l; /* { dg-error "type defaults to" } */ + +foo (a) /* { dg-error "return type defaults to" } */ +/* { dg-error "type of .a. defaults to .int." "type" { target *-*-* } 6 } */ +{ + auto p; /* { dg-error "type defaults to" } */ + typedef bar; /* { dg-error "type defaults to" } */ +} diff --git a/gcc/testsuite/gcc.dg/Wimplicit-int-3.c b/gcc/testsuite/gcc.dg/Wimplicit-int-3.c new file mode 100644 index 00000000000..654ce736c25 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wimplicit-int-3.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-pedantic-errors -Wno-implicit-int" } */ + +static l; + +foo (a) +{ + auto p; + typedef bar; +} diff --git a/gcc/testsuite/gcc.dg/Wimplicit-int-4.c b/gcc/testsuite/gcc.dg/Wimplicit-int-4.c new file mode 100644 index 00000000000..b25283564bc --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wimplicit-int-4.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-Wno-implicit -Wimplicit-int" } */ + +static l; /* { dg-warning "type defaults to" } */ + +foo (a) /* { dg-warning "return type defaults to" } */ +/* { dg-warning "type of .a. defaults to .int." "type" { target *-*-* } 6 } */ +{ + auto p; /* { dg-warning "type defaults to" } */ + typedef bar; /* { dg-warning "type defaults to" } */ +}