re PR c++/28584 (Cast to pointer from integer of different size)
2010-04-09 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c++/28584 * c.opt (Wint-to-pointer-cast): Available in C++. * doc/invoke.texi (Wint-to-pointer-cast): Available in C++. cp/ * typeck.c (cp_build_c_cast): Warn for casting integer to larger pointer type. testsuite/ * gcc.dg/Wint-to-pointer-cast-1.c: Move to... * c-c++-common/Wint-to-pointer-cast-1.c: ... here. * gcc.dg/Wint-to-pointer-cast-2.c: Move to... * c-c++-common/Wint-to-pointer-cast-2.c: ... here. * gcc.dg/Wint-to-pointer-cast-3.c: Move to... * c-c++-common/Wint-to-pointer-cast-3.c: ... here. Update. * g++.old-deja/g++.mike/warn1.C: Add -Wno-int-to-pointer-cast. * g++.dg/other/increment1.C: Likewise. From-SVN: r158150
This commit is contained in:
parent
d3a9eea2c0
commit
dc8d273907
@ -1,3 +1,9 @@
|
||||
2010-04-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
PR c++/28584
|
||||
* c.opt (Wint-to-pointer-cast): Available in C++.
|
||||
* doc/invoke.texi (Wint-to-pointer-cast): Available in C++.
|
||||
|
||||
2010-04-08 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* tree.h (TREE_ADDRESSABLE): Document its effect for function types.
|
||||
|
@ -277,7 +277,7 @@ Wimport
|
||||
C ObjC C++ ObjC++ Undocumented
|
||||
|
||||
Wint-to-pointer-cast
|
||||
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
|
||||
|
||||
Winvalid-offsetof
|
||||
|
@ -1,3 +1,9 @@
|
||||
2010-04-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
PR c++/28584
|
||||
* typeck.c (cp_build_c_cast): Warn for casting integer to larger
|
||||
pointer type.
|
||||
|
||||
2010-04-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/43016
|
||||
|
@ -6289,6 +6289,15 @@ cp_build_c_cast (tree type, tree expr, tsubst_flags_t complain)
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
if (TREE_CODE (type) == POINTER_TYPE
|
||||
&& TREE_CODE (TREE_TYPE (value)) == INTEGER_TYPE
|
||||
/* Casting to an integer of smaller size is an error detected elsewhere. */
|
||||
&& TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (value))
|
||||
/* Don't warn about converting any constant. */
|
||||
&& !TREE_CONSTANT (value))
|
||||
warning_at (input_location, OPT_Wint_to_pointer_cast,
|
||||
"cast to pointer from integer of different size");
|
||||
|
||||
/* A C-style cast can be a const_cast. */
|
||||
result = build_const_cast_1 (type, value, /*complain=*/false,
|
||||
&valid_p);
|
||||
|
@ -4284,11 +4284,13 @@ warning about it.
|
||||
The restrictions on @samp{offsetof} may be relaxed in a future version
|
||||
of the C++ standard.
|
||||
|
||||
@item -Wno-int-to-pointer-cast @r{(C and Objective-C only)}
|
||||
@item -Wno-int-to-pointer-cast
|
||||
@opindex Wno-int-to-pointer-cast
|
||||
@opindex Wint-to-pointer-cast
|
||||
Suppress warnings from casts to pointer type of an integer of a
|
||||
different size.
|
||||
different size. In C++, casting to a pointer type of smaller size is
|
||||
an error. @option{Wint-to-pointer-cast} is enabled by default.
|
||||
|
||||
|
||||
@item -Wno-pointer-to-int-cast @r{(C and Objective-C only)}
|
||||
@opindex Wno-pointer-to-int-cast
|
||||
|
@ -1,3 +1,15 @@
|
||||
2010-04-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
PR c++/28584
|
||||
* gcc.dg/Wint-to-pointer-cast-1.c: Move to...
|
||||
* c-c++-common/Wint-to-pointer-cast-1.c: ... here.
|
||||
* gcc.dg/Wint-to-pointer-cast-2.c: Move to...
|
||||
* c-c++-common/Wint-to-pointer-cast-2.c: ... here.
|
||||
* gcc.dg/Wint-to-pointer-cast-3.c: Move to...
|
||||
* c-c++-common/Wint-to-pointer-cast-3.c: ... here. Update.
|
||||
* g++.old-deja/g++.mike/warn1.C: Add -Wno-int-to-pointer-cast.
|
||||
* g++.dg/other/increment1.C: Likewise.
|
||||
|
||||
2010-04-09 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/18918
|
||||
|
@ -16,5 +16,7 @@ void *p;
|
||||
char
|
||||
g (void)
|
||||
{
|
||||
return (char) p; /* { dg-warning "cast from pointer to integer of different size" } */
|
||||
return (char) p;
|
||||
/* { dg-warning "cast from pointer to integer of different size" "" { target c } 19 } */
|
||||
/* { dg-error "cast from 'void\\*' to 'char' loses precision" "" { target c++ } 19 } */
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
// PR c++/37561
|
||||
// { dg-do compile }
|
||||
// { dg-options "-Wno-int-to-pointer-cast" }
|
||||
|
||||
__PTRDIFF_TYPE__ p;
|
||||
char q;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// { dg-do assemble }
|
||||
// { dg-options "-Wall" }
|
||||
// { dg-options "-Wall -Wno-int-to-pointer-cast" }
|
||||
|
||||
typedef char * charptr;
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
|
Loading…
Reference in New Issue
Block a user