[PATCH] D103938: Diagnose -Wunused-value in constant evaluation context

Yuanfang Chen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jun 10 23:07:45 PDT 2021


ychen added a comment.

In D103938#2806885 <https://reviews.llvm.org/D103938#2806885>, @rsmith wrote:

> This will diagnose unused values in unreachable code in constant-evaluated contexts; that doesn't seem quite right. For example, in:
>
>   void f() {
>     new double[false ? (1, 2) : 3][false ? (1, 2) : 3];
>   }
>
> ... we'll diagnose that the `1` is unused in only one of the two array bounds, because one of them is a constant-evaluated context and the other is not.
>
> I'd suggest we start by adding a separate `DiagIfReachable` function that does the same thing as `DiagRuntimeBehavior` except without the context check, with the intent to eventually refine it to check for reachability even in expressions for which we don't build a CFG (eg, in the initializer of a global or in a constant expression).

@rsmith Thanks for the pointer! Comments addressed. For the reachability check in contexts without CFG, it seems that some delayed processing is needed since constant evaluation happens later, however, I'm not sure about that.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103938/new/

https://reviews.llvm.org/D103938



More information about the cfe-commits mailing list