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

Richard Smith richard at metafoo.co.uk
Wed Aug 29 11:04:39 PDT 2012


On Wed, Aug 29, 2012 at 3:38 AM, Hans Wennborg <hans at chromium.org> wrote:

> 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.


When it comes to the interactions of constexpr and thread_local, I think
almost no-one does.


> Does the attached patch look like it's doing the
> right thing?
>

LGTM


> Thanks for looking into this.
>

Likewise!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120829/9a2ba3fa/attachment.html>


More information about the cfe-commits mailing list