[cfe-commits] r162835 - in /cfe/trunk: lib/AST/ExprConstant.cpp test/Sema/init.c

Hans Wennborg hans at chromium.org
Wed Aug 29 03:38:48 PDT 2012


On Wed, Aug 29, 2012 at 10:40 AM, Richard Smith <richard at metafoo.co.uk> wrote:
> On Wed, Aug 29, 2012 at 2:20 AM, Hans Wennborg <hans at chromium.org> wrote:
>> Thanks, Richard! Fixed in r162837.
>
> Thanks.
>
> I've looked into what's specified for C++11 constant expression semantics,
> and it looks like this isn't the correct behavior there. C++11 thread_local
> variables *can* be used in core constant expressions, but can't be part of
> the eventual result of constant expression evaluation. It looks like the
> check belongs in CheckLValueConstantExpression instead.
>
> For instance, this is valid under the C++11 rules:
>
> thread_local int n;
> constexpr bool b = &n == &n;

I guess I'm out of my depth here, because I don't really know how
these things work. Does the attached patch look like it's doing the
right thing?

Thanks for looking into this.

 - Hans
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.patch
Type: application/octet-stream
Size: 2058 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120829/9a3a5775/attachment.obj>


More information about the cfe-commits mailing list