Is -Wparentheses b0rken in 3.3?
Dave Korn
dk@artimi.com
Wed Oct 13 12:41:00 GMT 2004
> -----Original Message-----
> From: Paolo Carlini
> Sent: 13 October 2004 11:58
> Dave Korn wrote:
>
> > This is with 3.3.3 (cygwin and mainline variants).
> >
> > Is -Wparentheses supposed to catch these cases? I could
> file a bug.
> >Would anyone like to try it with HEAD?
> >
> >
> HEAD behaves the same, and I think we do *not* want the
> warning. See this thread:
>
> http://gcc.gnu.org/ml/gcc-patches/2004-08/msg01541.html
Ah, thanks for the pointer! In particular, I notice that in
http://gcc.gnu.org/ml/gcc-patches/2004-08/msg01545.html
Florian Weimer says
" I think it should also be activated for "/=" at least (because this is
a comparison operator in other languages), maybe even for "<<=" and
">>=". "
which is just what I want it for. "/=" is the VHDL equivalent of "!=", and
since I have a colleague here who has to write both C and VHDL, there's a
very real potential for confusion[*]. However, I see that it's arguable
both ways which way the warning should behave, and since the issue has been
addressed in PR17120, I won't bother filing a bug. I will try and implement
it locally however. Hmm, I see that for C it's detected by
c_common_truthvalue_conversion.
case MODIFY_EXPR:
if (warn_parentheses && C_EXP_ORIGINAL_CODE (expr) == MODIFY_EXPR)
warning ("suggest parentheses around assignment used as truth
value");
break;
Am I right to assume that the reason this catches some MODIFY_EXPRs and
not others is in some way because of parser_build_binary_op clearing
C_EXP_ORIGINAL_CODE (or rather, _not_ setting it with a call to
C_SET_EXP_ORIGINAL_CODE)?
cheers,
DaveK
[*] Not just potential in fact, it just happened to him and caused a bit of
lost time debugging it, so it's very real.
--
Can't think of a witty .sigline today....
More information about the Gcc
mailing list