<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 29 May 2018 at 15:35, JF Bastien via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Hi cfe-dev,<div><br></div><div>C++11 onwards specs the non-member functions atomic_load and atomic_load_explicit as taking the atomic<T> by const (potentially volatile) pointer. C11, in its infinite wisdom, decided to drop the const, and C17 will fix this with <a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/summary.htm#dr_459" target="_blank">DR459</a> (the current draft forgot to fix B.16, but that’s not the normative part).</div><div><br></div><div>I suggest we allow passing const _Atomic(T)* in all versions of C. It seems silly to special-case C11’s semantics because they allow strictly less code to work. I’d usually just post these patches, but the not-quite-correct C11 semantics made me think twice.</div><div><br></div><div>This doesn’t affect C++ (unless you try to use stdatomic.h in C++ which… you shouldn’t…).</div><div><br></div><div>I would change the following (independently, they don’t need to synchronize-with):</div><div><ul><li>clang’s lib/Headers/stdatomic.<wbr>h implements these as #define to the __c11_* equivalent, which are builtins with custom typecheck. Fix the typecheck.</li><li>Additionally, libc++ defines the __c11_* functions in include/atomic for the sake of GCC compatibility. Fix their declaration.</li></ul></div><div><br></div><div>It seems GCC already doesn’t require const: <a href="https://godbolt.org/g/4Q2vre" target="_blank">https://godbolt.org/g/<wbr>4Q2vre</a></div><div><br></div><div>Thoughts?</div></div></blockquote><div><br></div><div>Your plan sounds fine to me. We generally apply DR resolutions retroactively. </div></div></div></div>