Commit d00887e8 by Marek Polacek Committed by Marek Polacek

re PR c/43245 (add option to control "discarding qualifiers" warnings)

	PR c/43245
	* doc/invoke.texi: Document -Wdiscarded-qualifiers.
c-family/
	* c.opt (Wdiscarded-qualifiers): Add.
c/
	* c-typeck.c (convert_for_assignment): Pass OPT_Wdiscarded_qualifiers
	instead of 0 to WARN_FOR_QUALIFIERS.
testsuite/
	* gcc.dg/pr43245.c: New test.

From-SVN: r209970
parent 5436fa2e
2014-05-01 Marek Polacek <polacek@redhat.com>
PR c/43245
* doc/invoke.texi: Document -Wdiscarded-qualifiers.
2014-04-30 Alan Lawrence <alan.lawrence@arm.com> 2014-04-30 Alan Lawrence <alan.lawrence@arm.com>
* config/aarch64/arm_neon.h (vuzp1_f32, vuzp1_p8, vuzp1_p16, vuzp1_s8, * config/aarch64/arm_neon.h (vuzp1_f32, vuzp1_p8, vuzp1_p16, vuzp1_s8,
......
2014-05-01 Marek Polacek <polacek@redhat.com>
PR c/43245
* c.opt (Wdiscarded-qualifiers): Add.
2014-04-30 Marek Polacek <polacek@redhat.com> 2014-04-30 Marek Polacek <polacek@redhat.com>
* c-ubsan.c (ubsan_instrument_division): Handle REAL_TYPEs. Perform * c-ubsan.c (ubsan_instrument_division): Handle REAL_TYPEs. Perform
......
...@@ -355,6 +355,10 @@ Wdeprecated ...@@ -355,6 +355,10 @@ Wdeprecated
C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning
Warn if a deprecated compiler feature, class, method, or field is used Warn if a deprecated compiler feature, class, method, or field is used
Wdiscarded-qualifiers
C ObjC Var(warn_discarded_qualifiers) Init(1) Warning
Warn if type qualifiers on pointers are discarded
Wdiv-by-zero Wdiv-by-zero
C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
Warn about compile-time integer division by zero Warn about compile-time integer division by zero
......
2014-05-01 Marek Polacek <polacek@redhat.com> 2014-05-01 Marek Polacek <polacek@redhat.com>
PR c/43245
* c-typeck.c (convert_for_assignment): Pass OPT_Wdiscarded_qualifiers
instead of 0 to WARN_FOR_QUALIFIERS.
2014-05-01 Marek Polacek <polacek@redhat.com>
PR c/56989 PR c/56989
* c-typeck.c (default_conversion): Use better location for * c-typeck.c (default_conversion): Use better location for
error call. error call.
......
...@@ -5852,7 +5852,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, ...@@ -5852,7 +5852,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
vice-versa. */ vice-versa. */
if (TYPE_QUALS_NO_ADDR_SPACE (ttl) if (TYPE_QUALS_NO_ADDR_SPACE (ttl)
& ~TYPE_QUALS_NO_ADDR_SPACE (ttr)) & ~TYPE_QUALS_NO_ADDR_SPACE (ttr))
WARN_FOR_QUALIFIERS (location, 0, WARN_FOR_QUALIFIERS (location, OPT_Wdiscarded_qualifiers,
G_("passing argument %d of %qE " G_("passing argument %d of %qE "
"makes %q#v qualified function " "makes %q#v qualified function "
"pointer from unqualified"), "pointer from unqualified"),
...@@ -5868,7 +5868,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, ...@@ -5868,7 +5868,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
} }
else if (TYPE_QUALS_NO_ADDR_SPACE (ttr) else if (TYPE_QUALS_NO_ADDR_SPACE (ttr)
& ~TYPE_QUALS_NO_ADDR_SPACE (ttl)) & ~TYPE_QUALS_NO_ADDR_SPACE (ttl))
WARN_FOR_QUALIFIERS (location, 0, WARN_FOR_QUALIFIERS (location, OPT_Wdiscarded_qualifiers,
G_("passing argument %d of %qE discards " G_("passing argument %d of %qE discards "
"%qv qualifier from pointer target type"), "%qv qualifier from pointer target type"),
G_("assignment discards %qv qualifier " G_("assignment discards %qv qualifier "
...@@ -6049,7 +6049,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, ...@@ -6049,7 +6049,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
if (TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC (ttr) if (TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC (ttr)
& ~TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC (ttl)) & ~TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC (ttl))
{ {
WARN_FOR_QUALIFIERS (location, 0, WARN_FOR_QUALIFIERS (location, OPT_Wdiscarded_qualifiers,
G_("passing argument %d of %qE discards " G_("passing argument %d of %qE discards "
"%qv qualifier from pointer target type"), "%qv qualifier from pointer target type"),
G_("assignment discards %qv qualifier " G_("assignment discards %qv qualifier "
...@@ -6086,7 +6086,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, ...@@ -6086,7 +6086,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
where an ordinary one is wanted, but not vice-versa. */ where an ordinary one is wanted, but not vice-versa. */
if (TYPE_QUALS_NO_ADDR_SPACE (ttl) if (TYPE_QUALS_NO_ADDR_SPACE (ttl)
& ~TYPE_QUALS_NO_ADDR_SPACE (ttr)) & ~TYPE_QUALS_NO_ADDR_SPACE (ttr))
WARN_FOR_QUALIFIERS (location, 0, WARN_FOR_QUALIFIERS (location, OPT_Wdiscarded_qualifiers,
G_("passing argument %d of %qE makes " G_("passing argument %d of %qE makes "
"%q#v qualified function pointer " "%q#v qualified function pointer "
"from unqualified"), "from unqualified"),
......
...@@ -242,6 +242,7 @@ Objective-C and Objective-C++ Dialects}. ...@@ -242,6 +242,7 @@ Objective-C and Objective-C++ Dialects}.
-Wchar-subscripts -Wclobbered -Wcomment -Wconditionally-supported @gol -Wchar-subscripts -Wclobbered -Wcomment -Wconditionally-supported @gol
-Wconversion -Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp @gol -Wconversion -Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp @gol
-Wno-deprecated -Wno-deprecated-declarations -Wdisabled-optimization @gol -Wno-deprecated -Wno-deprecated-declarations -Wdisabled-optimization @gol
-Wno-discarded-qualifiers @gol
-Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare @gol -Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare @gol
-Wno-endif-labels -Werror -Werror=* @gol -Wno-endif-labels -Werror -Werror=* @gol
-Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol
...@@ -4182,6 +4183,15 @@ This option is only active when @option{-ftree-vrp} is active ...@@ -4182,6 +4183,15 @@ This option is only active when @option{-ftree-vrp} is active
(default for @option{-O2} and above). It warns about subscripts to arrays (default for @option{-O2} and above). It warns about subscripts to arrays
that are always out of bounds. This warning is enabled by @option{-Wall}. that are always out of bounds. This warning is enabled by @option{-Wall}.
@item -Wno-discarded-qualifiers
@opindex Wno-discarded-qualifiers
@opindex Wdiscarded-qualifiers
Do not warn if type qualifiers on pointers are being discarded.
Typically, the compiler will warn if a @code{const char *} variable is
passed to a function that takes @code{char *} parameter. This option
can be used to suppress such a warning. This warning is only supported
for C.
@item -Wno-div-by-zero @item -Wno-div-by-zero
@opindex Wno-div-by-zero @opindex Wno-div-by-zero
@opindex Wdiv-by-zero @opindex Wdiv-by-zero
......
2014-05-01 Marek Polacek <polacek@redhat.com> 2014-05-01 Marek Polacek <polacek@redhat.com>
PR c/43245
* gcc.dg/pr43245.c: New test.
2014-05-01 Marek Polacek <polacek@redhat.com>
PR c/56989 PR c/56989
* gcc.dg/pr56989.c: New test. * gcc.dg/pr56989.c: New test.
......
/* PR c/43245 */
/* { dg-do compile } */
/* { dg-options "-Wno-discarded-qualifiers" } */
void
foo (char *p)
{
}
char *
bar (void)
{
const char *s = "foo";
char *s1 = s;
s1 = s;
foo (s);
return s;
}
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