common.opt (Wlarger-than=): New.

2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* common.opt (Wlarger-than=): New.
	* doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
	-Wlarger-than=.
	* opts.c (common_handle_option): Handle -Wlarger-than=.
	* optc-gen.awk: Likewise.
	* opth-gen.awk: Likewise.
	* stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
testsuite/
	* gcc.dg/Wlarger-than2.c: New.

From-SVN: r132674
parent 185a6cc1
2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* common.opt (Wlarger-than=): New.
* doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
-Wlarger-than=.
* opts.c (common_handle_option): Handle -Wlarger-than=.
* optc-gen.awk: Likewise.
* opth-gen.awk: Likewise.
* stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
* tree-optimize.c (tree_rest_of_compilation): Likewise.
2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* c-common.c (match_case_to_enum_1): Add appropriate * c-common.c (match_case_to_enum_1): Add appropriate
......
...@@ -127,7 +127,10 @@ Warn when an inlined function cannot be inlined ...@@ -127,7 +127,10 @@ Warn when an inlined function cannot be inlined
Wlarger-than- Wlarger-than-
Common RejectNegative Joined UInteger Warning Common RejectNegative Joined UInteger Warning
-Wlarger-than-<number> Warn if an object is larger than <number> bytes
Wlarger-than=
Common RejectNegative Joined UInteger Warning
-Wlarger-than=<number> Warn if an object is larger than <number> bytes
Wlogical-op Wlogical-op
Common Warning Var(warn_logical_op) Common Warning Var(warn_logical_op)
......
...@@ -241,7 +241,7 @@ Objective-C and Objective-C++ Dialects}. ...@@ -241,7 +241,7 @@ Objective-C and Objective-C++ Dialects}.
-Wimplicit -Wimplicit-function-declaration -Wimplicit-int @gol -Wimplicit -Wimplicit-function-declaration -Wimplicit-int @gol
-Wimport -Wno-import -Winit-self -Winline @gol -Wimport -Wno-import -Winit-self -Winline @gol
-Wno-int-to-pointer-cast -Wno-invalid-offsetof @gol -Wno-int-to-pointer-cast -Wno-invalid-offsetof @gol
-Winvalid-pch -Wlarger-than-@var{len} -Wunsafe-loop-optimizations @gol -Winvalid-pch -Wlarger-than=@var{len} -Wunsafe-loop-optimizations @gol
-Wlogical-op -Wlong-long @gol -Wlogical-op -Wlong-long @gol
-Wmain -Wmissing-braces -Wmissing-field-initializers @gol -Wmain -Wmissing-braces -Wmissing-field-initializers @gol
-Wmissing-format-attribute -Wmissing-include-dirs @gol -Wmissing-format-attribute -Wmissing-include-dirs @gol
...@@ -3516,7 +3516,8 @@ Do not warn whenever an @samp{#else} or an @samp{#endif} are followed by text. ...@@ -3516,7 +3516,8 @@ Do not warn whenever an @samp{#else} or an @samp{#endif} are followed by text.
Warn whenever a local variable shadows another local variable, parameter or Warn whenever a local variable shadows another local variable, parameter or
global variable or whenever a built-in function is shadowed. global variable or whenever a built-in function is shadowed.
@item -Wlarger-than-@var{len} @item -Wlarger-than=@var{len}
@opindex Wlarger-than=@var{len}
@opindex Wlarger-than-@var{len} @opindex Wlarger-than-@var{len}
Warn whenever an object of larger than @var{len} bytes is defined. Warn whenever an object of larger than @var{len} bytes is defined.
......
...@@ -150,7 +150,7 @@ for (i = 0; i < n_opts; i++) { ...@@ -150,7 +150,7 @@ for (i = 0; i < n_opts; i++) {
len = length (opts[i]); len = length (opts[i]);
enum = "OPT_" opts[i] enum = "OPT_" opts[i]
if (opts[i] == "finline-limit=") if (opts[i] == "finline-limit=" || opts[i] == "Wlarger-than=")
enum = enum "eq" enum = enum "eq"
gsub ("[^A-Za-z0-9]", "_", enum) gsub ("[^A-Za-z0-9]", "_", enum)
......
...@@ -160,7 +160,7 @@ for (i = 0; i < n_opts; i++) { ...@@ -160,7 +160,7 @@ for (i = 0; i < n_opts; i++) {
len = length (opts[i]); len = length (opts[i]);
enum = "OPT_" opts[i] enum = "OPT_" opts[i]
if (opts[i] == "finline-limit=") if (opts[i] == "finline-limit=" || opts[i] == "Wlarger-than=")
enum = enum "eq" enum = enum "eq"
gsub ("[^A-Za-z0-9]", "_", enum) gsub ("[^A-Za-z0-9]", "_", enum)
......
...@@ -1540,6 +1540,11 @@ common_handle_option (size_t scode, const char *arg, int value, ...@@ -1540,6 +1540,11 @@ common_handle_option (size_t scode, const char *arg, int value,
break; break;
case OPT_Wlarger_than_: case OPT_Wlarger_than_:
/* This form corresponds to -Wlarger-than-.
Kept for backward compatibility.
Don't use it as the first argument of warning(). */
case OPT_Wlarger_than_eq:
larger_than_size = value; larger_than_size = value;
warn_larger_than = value != -1; warn_larger_than = value != -1;
break; break;
......
...@@ -464,9 +464,9 @@ layout_decl (tree decl, unsigned int known_align) ...@@ -464,9 +464,9 @@ layout_decl (tree decl, unsigned int known_align)
int size_as_int = TREE_INT_CST_LOW (size); int size_as_int = TREE_INT_CST_LOW (size);
if (compare_tree_int (size, size_as_int) == 0) if (compare_tree_int (size, size_as_int) == 0)
warning (OPT_Wlarger_than_, "size of %q+D is %d bytes", decl, size_as_int); warning (OPT_Wlarger_than_eq, "size of %q+D is %d bytes", decl, size_as_int);
else else
warning (OPT_Wlarger_than_, "size of %q+D is larger than %wd bytes", warning (OPT_Wlarger_than_eq, "size of %q+D is larger than %wd bytes",
decl, larger_than_size); decl, larger_than_size);
} }
} }
......
2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* gcc.dg/Wlarger-than2.c: New.
2008-02-26 Paolo Carlini <pcarlini@suse.de> 2008-02-26 Paolo Carlini <pcarlini@suse.de>
PR c++/35323 PR c++/35323
/* { dg-do compile } */
/* { dg-options "-Wlarger-than=8" } */
static void foo (void)
{
char buf[9]; /* { dg-warning "size of.*9 bytes" } */
}
...@@ -427,10 +427,10 @@ tree_rest_of_compilation (tree fndecl) ...@@ -427,10 +427,10 @@ tree_rest_of_compilation (tree fndecl)
= TREE_INT_CST_LOW (TYPE_SIZE_UNIT (ret_type)); = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (ret_type));
if (compare_tree_int (TYPE_SIZE_UNIT (ret_type), size_as_int) == 0) if (compare_tree_int (TYPE_SIZE_UNIT (ret_type), size_as_int) == 0)
warning (OPT_Wlarger_than_, "size of return value of %q+D is %u bytes", warning (OPT_Wlarger_than_eq, "size of return value of %q+D is %u bytes",
fndecl, size_as_int); fndecl, size_as_int);
else else
warning (OPT_Wlarger_than_, "size of return value of %q+D is larger than %wd bytes", warning (OPT_Wlarger_than_eq, "size of return value of %q+D is larger than %wd bytes",
fndecl, larger_than_size); fndecl, larger_than_size);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment