llvm/llvm-project

Improve -Wparentheses for arbitrary bool contexts

Open

#33 528 ouverte le 14 août 2017

Voir sur GitHub
 (14 commentaires) (0 réactions) (1 assigné)C++ (10 782 forks)batch import
bugzillaclang:diagnosticsgood first issue

Métriques du dépôt

Stars
 (26 378 stars)
Métriques de merge PR
 (Merge moyen 1j 2h) (1 000 PRs mergées en 30 j)

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'

Guide contributeur