Commit 52ec0ea3 by Marek Polacek Committed by Marek Polacek

invoke.texi: Document -Wint-conversion.

	* doc/invoke.texi: Document -Wint-conversion.
c-family/
	* c.opt (Wint-conversion): New option.
c/
	* c-typeck.c (convert_for_assignment): Pass OPT_Wint_conversion
	instead of 0 to WARN_FOR_ASSIGNMENT.
testsuite/
	* gcc.dg/Wint-conversion.c: New test.

From-SVN: r212193
parent d5c3d343
2014-07-01 Marek Polacek <polacek@redhat.com> 2014-07-01 Marek Polacek <polacek@redhat.com>
* doc/invoke.texi: Document -Wint-conversion.
2014-07-01 Marek Polacek <polacek@redhat.com>
PR c/58286 PR c/58286
* doc/invoke.texi: Document -Wincompatible-pointer-types. * doc/invoke.texi: Document -Wincompatible-pointer-types.
......
2014-07-01 Marek Polacek <polacek@redhat.com> 2014-07-01 Marek Polacek <polacek@redhat.com>
* c.opt (Wint-conversion): New option.
2014-07-01 Marek Polacek <polacek@redhat.com>
PR c/58286 PR c/58286
* c.opt (Wincompatible-pointer-types): New option. * c.opt (Wincompatible-pointer-types): New option.
......
...@@ -474,6 +474,10 @@ Winherited-variadic-ctor ...@@ -474,6 +474,10 @@ Winherited-variadic-ctor
C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning C++ ObjC++ Var(warn_inh_var_ctor) Init(1) Warning
Warn about C++11 inheriting constructors when the base has a variadic constructor Warn about C++11 inheriting constructors when the base has a variadic constructor
Wint-conversion
C ObjC Var(warn_int_conversion) Init(1) Warning
Warn about incompatible integer to pointer and pointer to integer conversions
Wint-to-pointer-cast Wint-to-pointer-cast
C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
Warn when there is a cast to a pointer from an integer of a different size Warn when there is a cast to a pointer from an integer of a different size
......
2014-07-01 Marek Polacek <polacek@redhat.com> 2014-07-01 Marek Polacek <polacek@redhat.com>
* c-typeck.c (convert_for_assignment): Pass OPT_Wint_conversion
instead of 0 to WARN_FOR_ASSIGNMENT.
2014-07-01 Marek Polacek <polacek@redhat.com>
PR c/58286 PR c/58286
* c-typeck.c (convert_for_assignment): Pass * c-typeck.c (convert_for_assignment): Pass
OPT_Wincompatible_pointer_types instead of 0 to WARN_FOR_ASSIGNMENT. OPT_Wincompatible_pointer_types instead of 0 to WARN_FOR_ASSIGNMENT.
......
...@@ -6213,7 +6213,8 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, ...@@ -6213,7 +6213,8 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
or one that results from arithmetic, even including or one that results from arithmetic, even including
a cast to integer type. */ a cast to integer type. */
if (!null_pointer_constant) if (!null_pointer_constant)
WARN_FOR_ASSIGNMENT (location, expr_loc, 0, WARN_FOR_ASSIGNMENT (location, expr_loc,
OPT_Wint_conversion,
G_("passing argument %d of %qE makes " G_("passing argument %d of %qE makes "
"pointer from integer without a cast"), "pointer from integer without a cast"),
G_("assignment makes pointer from integer " G_("assignment makes pointer from integer "
...@@ -6227,7 +6228,8 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, ...@@ -6227,7 +6228,8 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
} }
else if (codel == INTEGER_TYPE && coder == POINTER_TYPE) else if (codel == INTEGER_TYPE && coder == POINTER_TYPE)
{ {
WARN_FOR_ASSIGNMENT (location, expr_loc, 0, WARN_FOR_ASSIGNMENT (location, expr_loc,
OPT_Wint_conversion,
G_("passing argument %d of %qE makes integer " G_("passing argument %d of %qE makes integer "
"from pointer without a cast"), "from pointer without a cast"),
G_("assignment makes integer from pointer " G_("assignment makes integer from pointer "
......
...@@ -253,7 +253,7 @@ Objective-C and Objective-C++ Dialects}. ...@@ -253,7 +253,7 @@ Objective-C and Objective-C++ Dialects}.
-Wframe-larger-than=@var{len} -Wno-free-nonheap-object -Wjump-misses-init @gol -Wframe-larger-than=@var{len} -Wno-free-nonheap-object -Wjump-misses-init @gol
-Wignored-qualifiers -Wincompatible-pointer-types @gol -Wignored-qualifiers -Wincompatible-pointer-types @gol
-Wimplicit -Wimplicit-function-declaration -Wimplicit-int @gol -Wimplicit -Wimplicit-function-declaration -Wimplicit-int @gol
-Winit-self -Winline @gol -Winit-self -Winline -Wno-int-conversion @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 -Wlogical-not-parentheses -Wlong-long @gol -Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol
...@@ -4214,6 +4214,14 @@ Do not warn when there is a conversion between pointers that have incompatible ...@@ -4214,6 +4214,14 @@ Do not warn when there is a conversion between pointers that have incompatible
types. This warning is for cases not covered by @option{-Wno-pointer-sign}, types. This warning is for cases not covered by @option{-Wno-pointer-sign},
which warns for pointer argument passing or assignment with different signedness which warns for pointer argument passing or assignment with different signedness
@item -Wno-int-conversion @r{(C and Objective-C only)}
@opindex Wno-int-conversion
@opindex Wint-conversion
Do not warn about incompatible integer to pointer and pointer to integer
conversions. This warning is about implicit conversions; for explicit
conversions the warnings @option{-Wno-int-to-pointer-cast} and
@option{-Wno-pointer-to-int-cast} may be used.
@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-07-01 Marek Polacek <polacek@redhat.com> 2014-07-01 Marek Polacek <polacek@redhat.com>
* gcc.dg/Wint-conversion.c: New test.
2014-07-01 Marek Polacek <polacek@redhat.com>
PR c/58286 PR c/58286
* gcc.dg/Wincompatible-pointer-types.c: New test. * gcc.dg/Wincompatible-pointer-types.c: New test.
......
/* { dg-do compile } */
/* { dg-options "-Wno-int-conversion" } */
int fn1 (int *), *fn2 (int);
int
fn1 (int *p)
{
int i = p;
i = p;
fn2 (p);
return p;
}
int *
fn2 (int i)
{
int *p = i;
p = i;
fn1 (i);
return i;
}
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