aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-decl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/c/c-decl.c')
-rw-r--r--gcc/c/c-decl.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 3c4b18e..54f58a5 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -5758,7 +5758,7 @@ grokdeclarator (const struct c_declarator *declarator,
/* Issue a warning if this is an ISO C 99 program or if
-Wreturn-type and this is a function, or if -Wimplicit;
prefer the former warning since it is more explicit. */
- if ((warn_implicit_int || warn_return_type || flag_isoc99)
+ if ((warn_implicit_int || warn_return_type > 0 || flag_isoc99)
&& funcdef_flag)
warn_about_return_type = 1;
else
@@ -8752,7 +8752,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
if (warn_about_return_type)
warn_defaults_to (loc, flag_isoc99 ? OPT_Wimplicit_int
- : (warn_return_type ? OPT_Wreturn_type
+ : (warn_return_type > 0 ? OPT_Wreturn_type
: OPT_Wimplicit_int),
"return type defaults to %<int%>");
@@ -9463,8 +9463,9 @@ finish_function (void)
finish_fname_decls ();
- /* Complain if there's just no return statement. */
- if (warn_return_type
+ /* Complain if there's no return statement only if option specified on
+ command line. */
+ if (warn_return_type > 0
&& TREE_CODE (TREE_TYPE (TREE_TYPE (fndecl))) != VOID_TYPE
&& !current_function_returns_value && !current_function_returns_null
/* Don't complain if we are no-return. */