[PATCH] D111400: [Clang] Implement P2242R3

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 14 08:10:00 PST 2022


aaron.ballman added a comment.

In D111400#3172097 <https://reviews.llvm.org/D111400#3172097>, @cor3ntin wrote:

> Regression compared to the status quo:
> This code no longer warns (as noted by Hubert above)
>
>   auto f = [](bool b) {
>     if (b) return 42;
>     static int x = 0;
>     return x;
>   };
>   constexpr int x = f(true);
>   const int *p = &x;
>
> GCC doesn't warn and... if we wanted to produce a warning there, I have no idea how to go about it.

I think I found the issue in the code, but one thing that's strange is that we don't seem to treat it as an extension but instead issue an error, but the behavior is consistent with other things we handle as an extension there (e.g., a local variable in C++14 mode).



================
Comment at: clang/lib/Sema/SemaDeclCXX.cpp:1900
+                << (VD->getTLSKind() == VarDecl::TLS_Dynamic);
           }
         }
----------------
I think this is missing an `else` case to return `false` when checking for validity, similar to what's done on line 1916 and 1928.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111400



More information about the cfe-commits mailing list