llvm/llvm-project

Improve -Wparentheses for arbitrary bool contexts

Open

#33,528 opened on Aug 14, 2017

View on GitHub
 (14 comments) (0 reactions) (1 assignee)C++ (26,378 stars) (10,782 forks)batch import
bugzillaclang:diagnosticsgood first issue

Description

Bugzilla Link 34180
Version unspecified
OS Linux
CC @m4tx,@zygoloid

Extended Description

https://godbolt.org/g/Ca2Xtv

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'

Contributor guide