llvm/llvm-project
View on GitHubImprove -Wparentheses for arbitrary bool contexts
Open
#33,528 opened on Aug 14, 2017
bugzillaclang:diagnosticsgood first issue
Description
| Bugzilla Link | 34180 |
| Version | unspecified |
| OS | Linux |
| CC | @m4tx,@zygoloid |
Extended Description
bool f(int x) { return x = 0; }
GCC gives:
:2:16: warning: suggest parentheses around assignment used as truth value [-Wparentheses] return x = 0; ^
This would have caught a bug in r310794 (https://reviews.llvm.org/rL310794)
I don't know for sure, but from the reduced test case, it seems that GCC is just seeing when an assignment is used in a bool-typed context? E.g. just bool(x = 0) seems to trigger it. https://godbolt.org/g/HyBZHM
Looking at the two examples, it looks like ImplicitCastExpr to bool is probably the thing to look for.
ImplicitCastExpr 0x4fce318 <col:12, col:16> '_Bool'
ImplicitCastExpr 0x4fce578 <col:17, col:21> '_Bool'