The attached patch adds a -Wunused-value warning when an expression
with side effects is used in an unevaluated expression context, such
as sizeof(), or decltype(). It mostly reuses the logic from
Expr::HasSideEffects, except with a flag that treats certain
expressions as not having side effects -- mostly
instantiation-dependent contexts, and function call-like operations.

int f();
int j = 0;

(void)sizeof(f()); // Ok
(void)sizeof(++j); // Warn
(void)sizeof(int[++j]); // Ok

I've added support for: sizeof, typeid, _Generic, _Alignof, noexcept,
and decltype.

~Aaron

Attachment: UnevaluatedExpr.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to