* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
@ 2012-03-14 10:42 ` paolo.carlini at oracle dot com
2012-03-14 10:58 ` redi at gcc dot gnu.org
` (6 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-03-14 10:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |paolo.carlini at oracle dot
| |com
--- Comment #5 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-03-14 10:36:10 UTC ---
Jason, what do you think about this very old request? Implementing the warning
itself should be pretty trivial (and we could have outside -Wall and -Wextra,
thus should bother no one), but I'm not sure we really want it. Then I'm not
sure where we want to draw the line, eg, in the provided snippet I'm not 100%
sure about the base class case.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
2012-03-14 10:42 ` [Bug c++/14710] Warning about useless casts paolo.carlini at oracle dot com
@ 2012-03-14 10:58 ` redi at gcc dot gnu.org
2012-03-14 12:54 ` paolo.carlini at oracle dot com
` (5 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2012-03-14 10:58 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-03-14 10:52:18 UTC ---
I can see some value in the base class case too, but whether it's useless
depends on context, here the exact same casts are not redundant because they
select between two overloads:
struct A { int a; };
struct B : A { int b; };
void func(A *);
void func(B *);
int main()
{
B b;
func((A*)&b);
func(static_cast<A*>(&b));
}
Should it apply in templates? When casting to reference types as well as
pointers? That might give a warning for std::forward and similar cases, which
are entirely correct.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
2012-03-14 10:42 ` [Bug c++/14710] Warning about useless casts paolo.carlini at oracle dot com
2012-03-14 10:58 ` redi at gcc dot gnu.org
@ 2012-03-14 12:54 ` paolo.carlini at oracle dot com
2012-03-14 18:33 ` jason at gcc dot gnu.org
` (4 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-03-14 12:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
--- Comment #7 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-03-14 11:47:30 UTC ---
Indeed, I was vaguely considering similar things..
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
` (2 preceding siblings ...)
2012-03-14 12:54 ` paolo.carlini at oracle dot com
@ 2012-03-14 18:33 ` jason at gcc dot gnu.org
2012-03-14 23:34 ` paolo.carlini at oracle dot com
` (3 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2012-03-14 18:33 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
--- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> 2012-03-14 18:00:33 UTC ---
I wouldn't warn about a cast that changes the type or value category of an
expression at all, or a cast that ends up being the same type as the result of
template instantiation. But a warning for (A*)&a seems reasonable.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
` (3 preceding siblings ...)
2012-03-14 18:33 ` jason at gcc dot gnu.org
@ 2012-03-14 23:34 ` paolo.carlini at oracle dot com
2012-03-19 15:55 ` paolo at gcc dot gnu.org
` (2 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-03-14 23:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC|paolo.carlini at oracle dot |
|com |
AssignedTo|unassigned at gcc dot |paolo.carlini at oracle dot
|gnu.org |com
Target Milestone|--- |4.8.0
--- Comment #9 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-03-14 23:10:06 UTC ---
Ok, thanks. Let's see..
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
` (4 preceding siblings ...)
2012-03-14 23:34 ` paolo.carlini at oracle dot com
@ 2012-03-19 15:55 ` paolo at gcc dot gnu.org
2012-03-19 15:56 ` paolo.carlini at oracle dot com
2014-02-26 21:28 ` jason at gcc dot gnu.org
7 siblings, 0 replies; 12+ messages in thread
From: paolo at gcc dot gnu.org @ 2012-03-19 15:55 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
--- Comment #10 from paolo at gcc dot gnu.org <paolo at gcc dot gnu.org> 2012-03-19 15:51:36 UTC ---
Author: paolo
Date: Mon Mar 19 15:51:25 2012
New Revision: 185524
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=185524
Log:
2012-03-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/14710
* doc/invoke.texi: Document -Wuseless-cast.
/c-family
2012-03-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/14710
* c.opt ([Wuseless-cast]): Add.
/cp
2012-03-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/14710
* cp-tree.h (maybe_warn_about_useless_cast): Declare.
* typeck.c (maybe_warn_about_useless_cast): Define.
(build_reinterpret_cast, build_const_cast,
build_static_cast, cp_build_c_cast): Use it.
* rtti.c (build_dynamic_cast): Likewise.
* pt.c (tsubst_copy_and_build, case CAST_EXPR): Increment/decrement
c_inhibit_evaluation_warnings before/after the build_* calls.
/testsuite
2012-03-16 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/14710
* g++.dg/warn/Wuseless-cast.C: New.
Added:
trunk/gcc/testsuite/g++.dg/warn/Wuseless-cast.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/pt.c
trunk/gcc/cp/rtti.c
trunk/gcc/cp/tree.c
trunk/gcc/cp/typeck.c
trunk/gcc/doc/invoke.texi
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
` (5 preceding siblings ...)
2012-03-19 15:55 ` paolo at gcc dot gnu.org
@ 2012-03-19 15:56 ` paolo.carlini at oracle dot com
2014-02-26 21:28 ` jason at gcc dot gnu.org
7 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-03-19 15:56 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
--- Comment #11 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-03-19 15:54:35 UTC ---
Done.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/14710] Warning about useless casts
[not found] <bug-14710-4@http.gcc.gnu.org/bugzilla/>
` (6 preceding siblings ...)
2012-03-19 15:56 ` paolo.carlini at oracle dot com
@ 2014-02-26 21:28 ` jason at gcc dot gnu.org
7 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2014-02-26 21:28 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710
--- Comment #12 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Feb 26 21:28:08 2014
New Revision: 208183
URL: http://gcc.gnu.org/viewcvs?rev=208183&root=gcc&view=rev
Log:
PR c++/59231
PR c++/11586
PR c++/14710
PR c++/57132
gcc/
* c-common.c (shorten_compare): Don't check
c_inhibit_evaluation_warnings.
gcc/cp/
* pt.c (struct warning_sentinel): New.
(tsubst_copy_and_build): Use it instead of
c_inhibit_evaluation_warnings.
Added:
trunk/gcc/testsuite/g++.dg/warn/Wsign-compare-7.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-common.c
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/pt.c
trunk/gcc/cp/typeck.c
trunk/gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc
trunk/gcc/testsuite/g++.dg/cpp0x/overflow1.C
^ permalink raw reply [flat|nested] 12+ messages in thread