<div dir="ltr"><div>I don't think I can:</div><div><ul><li>Hack around __gcc_atomic_t.</li><li>Unconditionally pass -fabi-version=6 to the RUN command (because LLVM won't accept it).</li></ul></div><div>it seems like changing test/libcxx/test/config.py would be better.</div><div><br></div><div>WDYT?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 1, 2016 at 1:28 PM, JF Bastien via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@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">Author: jfb<br>
Date: Mon Aug  1 15:28:13 2016<br>
New Revision: 277380<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=277380&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=277380&view=rev</a><br>
Log:<br>
atomics.align: XFAIL GCC<br>
<br>
It currently fails because GCC changed the mangling of templates, which affects std::atomic using __attribute__((vector(X))). The bot using GCC 4.9 generates the following message:<br>
<br>
In file included from /home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp:24:0:<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic: In instantiation of 'atomic_test<T>::atomic_test() [with T = __vector(2) int]':<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp:66:3:   required from here<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:583:5: error: 'std::__1::__gcc_atomic::__gcc_atomic_t<_Tp>::__gcc_atomic_t() [with _Tp = __vector(2) int]' conflicts with a previous declaration<br>
     __gcc_atomic_t() _NOEXCEPT = default;<br>
     ^<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:583:5: note: previous declaration 'std::__1::__gcc_atomic::__gcc_atomic_t<_Tp>::__gcc_atomic_t() [with _Tp = __vector(1) int]'<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:583:5: note: -fabi-version=6 (or =0) avoids this error with a change in mangling<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:583:5: error: 'std::__1::__gcc_atomic::__gcc_atomic_t<_Tp>::__gcc_atomic_t() [with _Tp = __vector(2) int]' conflicts with a previous declaration<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:583:5: note: previous declaration 'std::__1::__gcc_atomic::__gcc_atomic_t<_Tp>::__gcc_atomic_t() [with _Tp = __vector(1) int]'<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:583:5: note: -fabi-version=6 (or =0) avoids this error with a change in mangling<br>
/home/llvm-builder/llvm-buildslave-root/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11/llvm/projects/libcxx/include/atomic:939:5: note: synthesized method 'std::__1::__gcc_atomic::__gcc_atomic_t<_Tp>::__gcc_atomic_t() [with _Tp = __vector(2) int]' first required here<br>
     __atomic_base() _NOEXCEPT = default;<br>
     ^<br>
<br>
GCC's docs say the following about ABI version 6:<br>
Version 6, which first appeared in G++ 4.7, corrects the promotion behavior of C++11 scoped enums and the mangling of template argument packs, const/static_cast, prefix ++ and –, and a class scope function used as a template argument.<br>
<br>
Modified:<br>
    libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp<br>
<br>
Modified: libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp?rev=277380&r1=277379&r2=277380&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp?rev=277380&r1=277379&r2=277380&view=diff</a><br>
==============================================================================<br>
--- libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp (original)<br>
+++ libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp Mon Aug  1 15:28:13 2016<br>
@@ -11,6 +11,10 @@<br>
 // REQUIRES: libatomic<br>
 // RUN: %build -latomic<br>
 // RUN: %run<br>
+//<br>
+// GCC currently fails because it needs -fabi-version=6 to fix mangling of<br>
+// std::atomic when used with __attribute__((vector(X))).<br>
+// XFAIL: gcc<br>
<br>
 // <atomic><br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>