From: Marek Polacek Date: Thu, 1 May 2014 07:16:10 +0000 (+0000) Subject: re PR c/43245 (add option to control "discarding qualifiers" warnings) X-Git-Tag: releases/gcc-5.1.0~7829 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=d00887e89999f5f24210f6cd6c3895a64eb9f2cd;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e3ae8dcfc81..2d2b7878c4c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-05-01 Marek Polacek + + PR c/43245 + * doc/invoke.texi: Document -Wdiscarded-qualifiers. + 2014-04-30 Alan Lawrence * config/aarch64/arm_neon.h (vuzp1_f32, vuzp1_p8, vuzp1_p16, vuzp1_s8, diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 47bb11438ad..fddfcd8c2f0 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2014-05-01 Marek Polacek + + PR c/43245 + * c.opt (Wdiscarded-qualifiers): Add. + 2014-04-30 Marek Polacek * c-ubsan.c (ubsan_instrument_division): Handle REAL_TYPEs. Perform diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 94447082fb5..1bbb81c8425 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -355,6 +355,10 @@ Wdeprecated C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning 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 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning Warn about compile-time integer division by zero diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index cee032969b6..b10f6f7da9f 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2014-05-01 Marek Polacek + + 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 PR c/56989 diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 409b0a7b99c..e25a25ca48e 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -5852,7 +5852,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, vice-versa. */ if (TYPE_QUALS_NO_ADDR_SPACE (ttl) & ~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 %q#v qualified function " "pointer from unqualified"), @@ -5868,7 +5868,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, } else if (TYPE_QUALS_NO_ADDR_SPACE (ttr) & ~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 " "%qv qualifier from pointer target type"), G_("assignment discards %qv qualifier " @@ -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) & ~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 " "%qv qualifier from pointer target type"), G_("assignment discards %qv qualifier " @@ -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. */ if (TYPE_QUALS_NO_ADDR_SPACE (ttl) & ~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 " "%q#v qualified function pointer " "from unqualified"), diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index cc6d405f168..0eba1e0a162 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -242,6 +242,7 @@ Objective-C and Objective-C++ Dialects}. -Wchar-subscripts -Wclobbered -Wcomment -Wconditionally-supported @gol -Wconversion -Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp @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-endif-labels -Werror -Werror=* @gol -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol @@ -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 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 @opindex Wno-div-by-zero @opindex Wdiv-by-zero diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c62126e98dc..619049730bd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-05-01 Marek Polacek + + PR c/43245 + * gcc.dg/pr43245.c: New test. + 2014-05-01 Marek Polacek PR c/56989 diff --git a/gcc/testsuite/gcc.dg/pr43245.c b/gcc/testsuite/gcc.dg/pr43245.c new file mode 100644 index 00000000000..85490ffaa82 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr43245.c @@ -0,0 +1,18 @@ +/* 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; +}