[cfe-dev] [PATCH] libc++: help diagnosing the following std::atomic compile error

Stephan Tolksdorf st at quanttec.com
Thu May 23 07:26:02 PDT 2013


On 23.05.13 02:37, Richard Smith wrote:
> On Wed, May 22, 2013 at 3:01 PM, John McCall <rjmccall at apple.com
> <mailto:rjmccall at apple.com>> wrote:
>
>     On May 22, 2013, at 2:49 AM, Stephan Tolksdorf <st at quanttec.com
>     <mailto:st at quanttec.com>> wrote:
>      > On 22.05.13 01:04, Howard Hinnant wrote:
>      >> I recommend filing a bug against clang on this.  I am hesitant
>     to commit the libc++ fix due to David Chisnall's concerns.  If the
>     clang team reassigns the bug to libc++, then I will commit the
>     libc++ solution.
>      >>
>      >
>      > In case anyone has missed the previous reference to
>     http://llvm.org/bugs/show_bug.cgi?id=16056 and is considering a
>     decision on how to proceed, I'd like to describe the consequence of
>     that issue for the current _Atomic-based implementation of <atomic>:
>      >
>      > If you initialize a static atomic variable with a constant
>     expression (e.g. for some kind of lazy initialization scheme), your
>     value is not constant initialized as expected but instead is
>     dynamically initialized at program startup (because clang currently
>     doesn't treat _Atomic(T) as a literal type). This may make your code
>     vulnerable to the infamous "static initialization order fiasco",
>     which can result in difficult to find bugs.
>
>     That seems fixable;  _Atomic(T) should be a literal type if T is.
>
>
> Agreed, and fixed in r182541.

Thanks a lot!




More information about the cfe-dev mailing list