c.opt (Waddress): New.

2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* c.opt (Waddress): New.
	* common.opt (Walways-true): Delete.
	(Wstring-literal-comparison): Delete.
	* doc/invoke.texi (Warning Options): Delete -Walways-true and
	-Wstring-literal-comparison. Add -Waddress.
	(Waddress): New.
	(Walways-true): Delete.
	(Wstring-literal-comparison): Delete.
	* doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
	consistently instead of -Walways-true in example.
	* c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
	* c-typeck.c (parser_build_binary_op): Replace
	-Wstring-literal-comparison and -Walways-true with -Waddress.
	* c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
	with -Waddress.

cp/
	* typeck.c (build_binary_op): Replace -Wstring-literal-comparison
	and -Walways-true with -Waddress.
	* cvt.c (convert_to_void): Replace unconditional warning with
	-Waddress.

testsuite/
	* gcc.dg/20031012-1.c: Replace -Walways-true with -Waddress.
	* gcc.dg/Walways-true-1.c: Likewise.
	* gcc.dg/weak/weak-3.c: Likewise.
	* gcc.dg/Werror-1.c: Likewise.
	* gcc.dg/Werror-3.c: Likewise.
	* gcc.dg/Werror-4.c: Likewise.
	* gcc.dg/Werror-5.c: Likewise.
	* gcc.dg/Werror-6.c: Likewise.
	* gcc.dg/Werror-7.c: Likewise.
	* gcc.dg/Werror-8.c: Likewise.
	* gcc.dg/Werror-10.c: Likewise.
	* gcc.dg/Werror-11.c: Likewise.
	* gcc.dg/Werror-12.c: Likewise.
	* g++.old-deja/g++.mike/warn8.C: Likewise.
	* g++.dg/warn/Walways-true-1.C: Likewise.
	* g++.dg/warn/Walways-true-2.C: Likewise.
	* g++.dg/warn/noeffect8.C: Warn only with -Waddress.
	* g++.dg/warn/Wstring-literal-comparison-1.C: Replace
	-Wstring-literal-comparison with -Waddress.
	* gcc.dg/Wstring-literal-comparison-4.c: Replace
	-Wno-string-literal-comparison with -Wno-address.

From-SVN: r122136
This commit is contained in:
Manuel López-Ibáñez 2007-02-19 20:02:28 +00:00
parent 459ffad3fd
commit c116cd05fb
36 changed files with 111 additions and 70 deletions

View File

@ -1,3 +1,21 @@
2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* c.opt (Waddress): New.
* common.opt (Walways-true): Delete.
(Wstring-literal-comparison): Delete.
* doc/invoke.texi (Warning Options): Delete -Walways-true and
-Wstring-literal-comparison. Add -Waddress.
(Waddress): New.
(Walways-true): Delete.
(Wstring-literal-comparison): Delete.
* doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
consistently instead of -Walways-true in example.
* c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
* c-typeck.c (parser_build_binary_op): Replace
-Wstring-literal-comparison and -Walways-true with -Waddress.
* c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
with -Waddress.
2007-02-19 Eric Botcazou <ebotcazou@adacore.com> 2007-02-19 Eric Botcazou <ebotcazou@adacore.com>
* tree-cfg.c (dump_function_to_file): Be prepared for functions * tree-cfg.c (dump_function_to_file): Be prepared for functions

View File

@ -2716,7 +2716,7 @@ c_common_truthvalue_conversion (tree expr)
if (decl_with_nonnull_addr_p (inner)) if (decl_with_nonnull_addr_p (inner))
{ {
/* Common Ada/Pascal programmer's mistake. */ /* Common Ada/Pascal programmer's mistake. */
warning (OPT_Walways_true, warning (OPT_Waddress,
"the address of %qD will always evaluate as %<true%>", "the address of %qD will always evaluate as %<true%>",
inner); inner);
return truthvalue_true_node; return truthvalue_true_node;

View File

@ -395,9 +395,8 @@ c_common_handle_option (size_t scode, const char *arg, int value)
warn_sign_compare = value; warn_sign_compare = value;
warn_switch = value; warn_switch = value;
warn_strict_aliasing = value; warn_strict_aliasing = value;
warn_address = value;
warn_strict_overflow = value; warn_strict_overflow = value;
warn_string_literal_comparison = value;
warn_always_true = value;
warn_array_bounds = value; warn_array_bounds = value;
/* Only warn about unknown pragmas that are not in system /* Only warn about unknown pragmas that are not in system

View File

@ -2640,13 +2640,11 @@ parser_build_binary_op (enum tree_code code, struct c_expr arg1,
{ {
if ((code1 == STRING_CST && !integer_zerop (arg2.value)) if ((code1 == STRING_CST && !integer_zerop (arg2.value))
|| (code2 == STRING_CST && !integer_zerop (arg1.value))) || (code2 == STRING_CST && !integer_zerop (arg1.value)))
warning (OPT_Wstring_literal_comparison, warning (OPT_Waddress, "comparison with string literal results in unspecified behaviour");
"comparison with string literal");
} }
else if (TREE_CODE_CLASS (code) == tcc_comparison else if (TREE_CODE_CLASS (code) == tcc_comparison
&& (code1 == STRING_CST || code2 == STRING_CST)) && (code1 == STRING_CST || code2 == STRING_CST))
warning (OPT_Wstring_literal_comparison, warning (OPT_Waddress, "comparison with string literal results in unspecified behaviour");
"comparison with string literal");
if (TREE_OVERFLOW_P (result.value) if (TREE_OVERFLOW_P (result.value)
&& !TREE_OVERFLOW_P (arg1.value) && !TREE_OVERFLOW_P (arg1.value)
@ -8025,7 +8023,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
{ {
if (TREE_CODE (op0) == ADDR_EXPR if (TREE_CODE (op0) == ADDR_EXPR
&& decl_with_nonnull_addr_p (TREE_OPERAND (op0, 0))) && decl_with_nonnull_addr_p (TREE_OPERAND (op0, 0)))
warning (OPT_Walways_true, "the address of %qD will never be NULL", warning (OPT_Waddress, "the address of %qD will never be NULL",
TREE_OPERAND (op0, 0)); TREE_OPERAND (op0, 0));
result_type = type0; result_type = type0;
} }
@ -8033,7 +8031,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
{ {
if (TREE_CODE (op1) == ADDR_EXPR if (TREE_CODE (op1) == ADDR_EXPR
&& decl_with_nonnull_addr_p (TREE_OPERAND (op1, 0))) && decl_with_nonnull_addr_p (TREE_OPERAND (op1, 0)))
warning (OPT_Walways_true, "the address of %qD will never be NULL", warning (OPT_Waddress, "the address of %qD will never be NULL",
TREE_OPERAND (op1, 0)); TREE_OPERAND (op1, 0));
result_type = type1; result_type = type1;
} }

View File

@ -116,6 +116,10 @@ Wabi
C++ ObjC++ Var(warn_abi) Warning C++ ObjC++ Var(warn_abi) Warning
Warn about things that will change when compiling with an ABI-compliant compiler Warn about things that will change when compiling with an ABI-compliant compiler
Waddress
C ObjC C++ ObjC++ Var(warn_address) Warning
Warn about suspicious uses of memory addresses
Wall Wall
C ObjC C++ ObjC++ Warning C ObjC C++ ObjC++ Warning
Enable most warning messages Enable most warning messages

View File

@ -74,10 +74,6 @@ Waggregate-return
Common Var(warn_aggregate_return) Warning Common Var(warn_aggregate_return) Warning
Warn about returning structures, unions or arrays Warn about returning structures, unions or arrays
Walways-true
Common Var(warn_always_true) Warning
Warn about comparisons that always evaluate to true
Warray-bounds Warray-bounds
Common Var(warn_array_bounds) Common Var(warn_array_bounds)
Warn if an array is accessed out of bounds Warn if an array is accessed out of bounds
@ -166,10 +162,6 @@ Wstrict-overflow=
Common Joined UInteger Common Joined UInteger
Warn about optimizations that assume that signed overflow is undefined Warn about optimizations that assume that signed overflow is undefined
Wstring-literal-comparison
Common Var(warn_string_literal_comparison) Warning
Warn about comparisons to constant string literals
Wswitch Wswitch
Common Var(warn_switch) Warning Common Var(warn_switch) Warning
Warn about enumerated switches, with no default, missing a case Warn about enumerated switches, with no default, missing a case

View File

@ -1,3 +1,10 @@
2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* typeck.c (build_binary_op): Replace -Wstring-literal-comparison
and -Walways-true with -Waddress.
* cvt.c (convert_to_void): Replace unconditional warning with
-Waddress.
2007-02-18 Kazu Hirata <kazu@codesourcery.com> 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
* decl.c, tree.c: Fix comment typos. * decl.c, tree.c: Fix comment typos.

View File

@ -929,7 +929,7 @@ convert_to_void (tree expr, const char *implicit)
else if (implicit && probe == expr && is_overloaded_fn (probe)) else if (implicit && probe == expr && is_overloaded_fn (probe))
{ {
/* Only warn when there is no &. */ /* Only warn when there is no &. */
warning (0, "%s is a reference, not call, to function %qE", warning (OPT_Waddress, "%s is a reference, not call, to function %qE",
implicit, expr); implicit, expr);
if (TREE_CODE (expr) == COMPONENT_REF) if (TREE_CODE (expr) == COMPONENT_REF)
expr = TREE_OPERAND (expr, 0); expr = TREE_OPERAND (expr, 0);

View File

@ -3319,8 +3319,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
"comparing floating point with == or != is unsafe"); "comparing floating point with == or != is unsafe");
if ((TREE_CODE (orig_op0) == STRING_CST && !integer_zerop (op1)) if ((TREE_CODE (orig_op0) == STRING_CST && !integer_zerop (op1))
|| (TREE_CODE (orig_op1) == STRING_CST && !integer_zerop (op0))) || (TREE_CODE (orig_op1) == STRING_CST && !integer_zerop (op0)))
warning (OPT_Wstring_literal_comparison, warning (OPT_Waddress, "comparison with string literal results in unspecified behaviour");
"comparison with string literal");
build_type = boolean_type_node; build_type = boolean_type_node;
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE
@ -3337,7 +3336,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
{ {
if (TREE_CODE (op0) == ADDR_EXPR if (TREE_CODE (op0) == ADDR_EXPR
&& decl_with_nonnull_addr_p (TREE_OPERAND (op0, 0))) && decl_with_nonnull_addr_p (TREE_OPERAND (op0, 0)))
warning (OPT_Walways_true, "the address of %qD will never be NULL", warning (OPT_Waddress, "the address of %qD will never be NULL",
TREE_OPERAND (op0, 0)); TREE_OPERAND (op0, 0));
result_type = type0; result_type = type0;
} }
@ -3346,7 +3345,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
{ {
if (TREE_CODE (op1) == ADDR_EXPR if (TREE_CODE (op1) == ADDR_EXPR
&& decl_with_nonnull_addr_p (TREE_OPERAND (op1, 0))) && decl_with_nonnull_addr_p (TREE_OPERAND (op1, 0)))
warning (OPT_Walways_true, "the address of %qD will never be NULL", warning (OPT_Waddress, "the address of %qD will never be NULL",
TREE_OPERAND (op1, 0)); TREE_OPERAND (op1, 0));
result_type = type1; result_type = type1;
} }
@ -3495,8 +3494,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
case GT_EXPR: case GT_EXPR:
if (TREE_CODE (orig_op0) == STRING_CST if (TREE_CODE (orig_op0) == STRING_CST
|| TREE_CODE (orig_op1) == STRING_CST) || TREE_CODE (orig_op1) == STRING_CST)
warning (OPT_Wstring_literal_comparison, warning (OPT_Waddress, "comparison with string literal results in unspecified behaviour");
"comparison with string literal");
build_type = boolean_type_node; build_type = boolean_type_node;
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE) if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE)

View File

@ -10149,8 +10149,8 @@ option.
@example @example
#pragma GCC diagnostic warning "-Wformat" #pragma GCC diagnostic warning "-Wformat"
#pragma GCC diagnostic error "-Walways-true" #pragma GCC diagnostic error "-Wformat"
#pragma GCC diagnostic ignored "-Walways-true" #pragma GCC diagnostic ignored "-Wformat"
@end example @end example
Note that these pragmas override any command line options. Also, Note that these pragmas override any command line options. Also,

View File

@ -223,7 +223,7 @@ Objective-C and Objective-C++ Dialects}.
@item Warning Options @item Warning Options
@xref{Warning Options,,Options to Request or Suppress Warnings}. @xref{Warning Options,,Options to Request or Suppress Warnings}.
@gccoptlist{-fsyntax-only -pedantic -pedantic-errors @gol @gccoptlist{-fsyntax-only -pedantic -pedantic-errors @gol
-w -Wextra -Wall -Waggregate-return -Walways-true -Warray-bounds @gol -w -Wextra -Wall -Waddress -Waggregate-return -Warray-bounds @gol
-Wno-attributes -Wc++-compat -Wc++0x-compat -Wcast-align -Wcast-qual @gol -Wno-attributes -Wc++-compat -Wc++0x-compat -Wcast-align -Wcast-qual @gol
-Wchar-subscripts -Wclobbered -Wcomment @gol -Wchar-subscripts -Wclobbered -Wcomment @gol
-Wconversion -Wcoverage-mismatch -Wno-deprecated-declarations @gol -Wconversion -Wcoverage-mismatch -Wno-deprecated-declarations @gol
@ -249,7 +249,6 @@ Objective-C and Objective-C++ Dialects}.
-Wsign-compare -Wstack-protector @gol -Wsign-compare -Wstack-protector @gol
-Wstrict-aliasing -Wstrict-aliasing=2 @gol -Wstrict-aliasing -Wstrict-aliasing=2 @gol
-Wstrict-overflow -Wstrict-overflow=@var{n} @gol -Wstrict-overflow -Wstrict-overflow=@var{n} @gol
-Wstring-literal-comparison @gol
-Wswitch -Wswitch-default -Wswitch-enum @gol -Wswitch -Wswitch-default -Wswitch-enum @gol
-Wsystem-headers -Wtrigraphs -Wundef -Wuninitialized @gol -Wsystem-headers -Wtrigraphs -Wundef -Wuninitialized @gol
-Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol -Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol
@ -3381,18 +3380,27 @@ an incorrect result when the signed value is converted to unsigned.
This warning is also enabled by @option{-Wextra}; to get the other warnings This warning is also enabled by @option{-Wextra}; to get the other warnings
of @option{-Wextra} without this warning, use @samp{-Wextra -Wno-sign-compare}. of @option{-Wextra} without this warning, use @samp{-Wextra -Wno-sign-compare}.
@item -Waddress
@opindex Waddress
@opindex Wno-address
Warn about suspicious uses of memory addresses. These include using
the address of a function in a conditional expression, such as
@code{void func(void); if (func)}, and comparisons against the memory
address of a string literal, such as @code{if (x == "abc")}. Such
uses typically indicate a programmer error: the address of a function
always evaluates to true, so their use in a conditional usually
indicate that the programmer forgot the parentheses in a function
call; and comparisons against string literals result in unspecified
behavior and are not portable in C, so they usually indicate that the
programmer intended to use @code{strcmp}. This warning is enabled by
@option{-Wall}.
@item -Waggregate-return @item -Waggregate-return
@opindex Waggregate-return @opindex Waggregate-return
Warn if any functions that return structures or unions are defined or Warn if any functions that return structures or unions are defined or
called. (In languages where you can return an array, this also elicits called. (In languages where you can return an array, this also elicits
a warning.) a warning.)
@item -Walways-true
@opindex Walways-true
Warn about comparisons which are always true such as testing if
unsigned values are greater than or equal to zero. This warning is
enabled by @option{-Wall}.
@item -Wno-attributes @item -Wno-attributes
@opindex Wno-attributes @opindex Wno-attributes
@opindex Wattributes @opindex Wattributes
@ -3742,15 +3750,6 @@ imply anything.
This option is only active when @option{-fstack-protector} is active. It This option is only active when @option{-fstack-protector} is active. It
warns about functions that will not be protected against stack smashing. warns about functions that will not be protected against stack smashing.
@item -Wstring-literal-comparison
@opindex Wstring-literal-comparison
Warn about suspicious comparisons to string literal constants. In C,
direct comparisons against the memory address of a string literal, such
as @code{if (x == "abc")}, typically indicate a programmer error, and
even when intentional, result in unspecified behavior and are not portable.
Usually these warnings alert that the programmer intended to use
@code{strcmp}. This warning is enabled by @option{-Wall}.
@item -Woverlength-strings @item -Woverlength-strings
@opindex Woverlength-strings @opindex Woverlength-strings
Warn about string constants which are longer than the ``minimum Warn about string constants which are longer than the ``minimum

View File

@ -1,3 +1,27 @@
2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* gcc.dg/20031012-1.c: Replace -Walways-true with -Waddress.
* gcc.dg/Walways-true-1.c: Likewise.
* gcc.dg/weak/weak-3.c: Likewise.
* gcc.dg/Werror-1.c: Likewise.
* gcc.dg/Werror-3.c: Likewise.
* gcc.dg/Werror-4.c: Likewise.
* gcc.dg/Werror-5.c: Likewise.
* gcc.dg/Werror-6.c: Likewise.
* gcc.dg/Werror-7.c: Likewise.
* gcc.dg/Werror-8.c: Likewise.
* gcc.dg/Werror-10.c: Likewise.
* gcc.dg/Werror-11.c: Likewise.
* gcc.dg/Werror-12.c: Likewise.
* g++.old-deja/g++.mike/warn8.C: Likewise.
* g++.dg/warn/Walways-true-1.C: Likewise.
* g++.dg/warn/Walways-true-2.C: Likewise.
* g++.dg/warn/noeffect8.C: Warn only with -Waddress.
* g++.dg/warn/Wstring-literal-comparison-1.C: Replace
-Wstring-literal-comparison with -Waddress.
* gcc.dg/Wstring-literal-comparison-4.c: Replace
-Wno-string-literal-comparison with -Wno-address.
2007-02-19 Eric Botcazou <ebotcazou@adacore.com> 2007-02-19 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/self_aggregate_with_call.adb: New test. * gnat.dg/self_aggregate_with_call.adb: New test.

View File

@ -1,8 +1,8 @@
// Test -Walways-true for testing an address against NULL. // Test -Waddress for testing an address against NULL.
// Origin: Ian Lance Taylor <iant@google.com> // Origin: Ian Lance Taylor <iant@google.com>
// { dg-do compile} // { dg-do compile}
// { dg-options "-Walways-true" } // { dg-options "-Waddress" }
extern int foo (int); extern int foo (int);

View File

@ -4,7 +4,7 @@
// Origin: Ian Lance Taylor <iant@google.com> // Origin: Ian Lance Taylor <iant@google.com>
// { dg-do compile} // { dg-do compile}
// { dg-options "-Walways-true" } // { dg-options "-Waddress" }
// { dg-require-weak "" } // { dg-require-weak "" }
extern int foo (int) __attribute__ ((weak)); extern int foo (int) __attribute__ ((weak));

View File

@ -1,6 +1,6 @@
/* PR c/7776 */ /* PR c/7776 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wstring-literal-comparison" } */ /* { dg-options "-Waddress" } */
int test1(char *ptr) int test1(char *ptr)
{ {

View File

@ -1,6 +1,6 @@
/* PR c/7776 */ /* PR c/7776 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wall -Wno-string-literal-comparison" } */ /* { dg-options "-Wall -Wno-address" } */
int test1(char *ptr) int test1(char *ptr)
{ {

View File

@ -1,4 +1,6 @@
// PR c++/26696, 28996 // PR c++/26696, 28996
// { dg-do compile }
// { dg-options "-Waddress" }
struct A struct A
{ {

View File

@ -1,5 +1,5 @@
// { dg-do assemble } // { dg-do assemble }
// { dg-options "-Walways-true" } // { dg-options "-Waddress" }
struct foo { struct foo {
bool test(); bool test();

View File

@ -1,4 +1,4 @@
/* { dg-options "-Walways-true" } */ /* { dg-options "-Waddress" } */
/* Origin: Andrew Morton <akpm@osdl.org> */ /* Origin: Andrew Morton <akpm@osdl.org> */
/* Warn if a function addres of a non-weak function is used /* Warn if a function addres of a non-weak function is used
as a truth value. */ as a truth value. */

View File

@ -1,8 +1,8 @@
/* Test -Walways-true for testing an address against NULL. /* Test -Waddress for testing an address against NULL.
Origin: Ian Lance Taylor <iant@google.com>. */ Origin: Ian Lance Taylor <iant@google.com>. */
/* { dg-do compile} */ /* { dg-do compile} */
/* { dg-options "-Walways-true" } */ /* { dg-options "-Waddress" } */
extern int foo (int); extern int foo (int);

View File

@ -4,7 +4,7 @@
Origin: Ian Lance Taylor <iant@google.com>. */ Origin: Ian Lance Taylor <iant@google.com>. */
/* { dg-do compile} */ /* { dg-do compile} */
/* { dg-options "-Walways-true" } */ /* { dg-options "-Waddress" } */
/* { dg-require-weak "" } */ /* { dg-require-weak "" } */
extern int foo (int) __attribute__ ((weak)); extern int foo (int) __attribute__ ((weak));

View File

@ -1,5 +1,5 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Walways-true -Wattributes -Werror" } */ /* { dg-options "-Waddress -Wattributes -Werror" } */
/* { dg-warning "warnings being treated as errors" "" {target "*-*-*"} 0 } */ /* { dg-warning "warnings being treated as errors" "" {target "*-*-*"} 0 } */
/* This is the first in a series of test cases that test the /* This is the first in a series of test cases that test the
@ -7,7 +7,7 @@
diagnostic error foo. This one has all the bits we're testing, the diagnostic error foo. This one has all the bits we're testing, the
others are subsets of this one. */ others are subsets of this one. */
#pragma GCC diagnostic error "-Walways-true" #pragma GCC diagnostic error "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */

View File

@ -4,7 +4,7 @@
/* Make sure #pragma can work with -Werror. */ /* Make sure #pragma can work with -Werror. */
#pragma GCC diagnostic error "-Walways-true" #pragma GCC diagnostic error "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */

View File

@ -4,7 +4,7 @@
/* Make sure #pragma can override -Werror. */ /* Make sure #pragma can override -Werror. */
#pragma GCC diagnostic warning "-Walways-true" #pragma GCC diagnostic warning "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */

View File

@ -1,9 +1,9 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wattributes -Walways-true" } */ /* { dg-options "-Wattributes -Waddress" } */
/* Make sure #pragma can override -Wfoo. */ /* Make sure #pragma can override -Wfoo. */
#pragma GCC diagnostic ignored "-Walways-true" #pragma GCC diagnostic ignored "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "attribute directive ignored" } */

View File

@ -1,5 +1,5 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Walways-true -Wattributes" } */ /* { dg-options "-Waddress -Wattributes" } */
/* Make sure the command line option enables the warning. */ /* Make sure the command line option enables the warning. */

View File

@ -3,7 +3,7 @@
/* Make sure the pragma enables the error. */ /* Make sure the pragma enables the error. */
#pragma GCC diagnostic error "-Walways-true" #pragma GCC diagnostic error "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */

View File

@ -1,5 +1,5 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Walways-true -Wattributes -Werror" } */ /* { dg-options "-Waddress -Wattributes -Werror" } */
/* { dg-warning "warnings being treated as errors" "" {target "*-*-*"} 0 } */ /* { dg-warning "warnings being treated as errors" "" {target "*-*-*"} 0 } */
/* Make sure -Werror turns warnings in to errors. */ /* Make sure -Werror turns warnings in to errors. */

View File

@ -1,5 +1,5 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wattributes -Werror=always-true" } */ /* { dg-options "-Wattributes -Werror=address" } */
/* Make sure -Werror-foo emits an error and not a warning */ /* Make sure -Werror-foo emits an error and not a warning */

View File

@ -1,5 +1,5 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Walways-true -Werror -Wno-error=always-true -Wattributes" } */ /* { dg-options "-Waddress -Werror -Wno-error=address -Wattributes" } */
/* { dg-warning "warnings being treated as errors" "" {target "*-*-*"} 0 } */ /* { dg-warning "warnings being treated as errors" "" {target "*-*-*"} 0 } */
/* Make sure -Wno-error= overrides -Werror. */ /* Make sure -Wno-error= overrides -Werror. */

View File

@ -3,7 +3,7 @@
/* Make sure #pragma can enable a warning. */ /* Make sure #pragma can enable a warning. */
#pragma GCC diagnostic warning "-Walways-true" #pragma GCC diagnostic warning "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */

View File

@ -3,7 +3,7 @@
/* Make sure #pragma can enable a warning as an error. */ /* Make sure #pragma can enable a warning as an error. */
#pragma GCC diagnostic error "-Walways-true" #pragma GCC diagnostic error "-Waddress"
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */ void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */

View File

@ -1,6 +1,6 @@
/* PR c/7776 */ /* PR c/7776 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wstring-literal-comparison" } */ /* { dg-options "-Waddress" } */
int test1(char *ptr) int test1(char *ptr)
{ {

View File

@ -1,6 +1,6 @@
/* PR c/7776 */ /* PR c/7776 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wall -Wno-string-literal-comparison" } */ /* { dg-options "-Wall -Wno-address" } */
int test1(char *ptr) int test1(char *ptr)
{ {

View File

@ -1,6 +1,6 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-weak "" } */ /* { dg-require-weak "" } */
/* { dg-options "-Walways-true" } */ /* { dg-options "-Waddress" } */
/* Warning when addr convert to bool always gives known result. /* Warning when addr convert to bool always gives known result.
Ada/Pascal programmers sometimes write 0-param functions without Ada/Pascal programmers sometimes write 0-param functions without
(), and might as well warn on variables, too. */ (), and might as well warn on variables, too. */

View File

@ -1,7 +1,7 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-alias "" } */ /* { dg-require-alias "" } */
/* { dg-require-weak "" } */ /* { dg-require-weak "" } */
/* { dg-options "-fno-common -Walways-true" } */ /* { dg-options "-fno-common -Waddress" } */
/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1a" } } */ /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1a" } } */
/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1b" } } */ /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1b" } } */