llvm/llvm-project

Improve -Wparentheses for arbitrary bool contexts

Open

#33.528 aberto em 14 de ago. de 2017

Ver no GitHub
 (14 comments) (0 reactions) (1 assignee)C++ (10.782 forks)batch import
bugzillaclang:diagnosticsgood first issue

Métricas do repositório

Stars
 (26.378 stars)
Métricas de merge de PR
 (Mesclagem média 1d 2h) (1.000 fundiu PRs em 30d)

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'

Guia do colaborador