[libcxx] r277380 - atomics.align: XFAIL GCC

JF Bastien via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 1 13:39:54 PDT 2016


I don't think I can:

   - Hack around __gcc_atomic_t.
   - Unconditionally pass -fabi-version=6 to the RUN command (because LLVM
   won't accept it).

it seems like changing test/libcxx/test/config.py would be better.

WDYT?

On Mon, Aug 1, 2016 at 1:28 PM, JF Bastien via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: jfb
> Date: Mon Aug  1 15:28:13 2016
> New Revision: 277380
>
> URL: http://llvm.org/viewvc/llvm-project?rev=277380&view=rev
> Log:
> atomics.align: XFAIL GCC
>
> 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:
>
> 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:
> /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]':
> /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
> /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
>      __gcc_atomic_t() _NOEXCEPT = default;
>      ^
> /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]'
> /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
> /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
> /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]'
> /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
> /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
>      __atomic_base() _NOEXCEPT = default;
>      ^
>
> GCC's docs say the following about ABI version 6:
> 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.
>
> Modified:
>     libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
>
> Modified: libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
> URL:
> 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
>
> ==============================================================================
> --- libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
> (original)
> +++ libcxx/trunk/test/libcxx/atomics/atomics.align/align.pass.sh.cpp Mon
> Aug  1 15:28:13 2016
> @@ -11,6 +11,10 @@
>  // REQUIRES: libatomic
>  // RUN: %build -latomic
>  // RUN: %run
> +//
> +// GCC currently fails because it needs -fabi-version=6 to fix mangling of
> +// std::atomic when used with __attribute__((vector(X))).
> +// XFAIL: gcc
>
>  // <atomic>
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160801/10624fd8/attachment-0001.html>


More information about the cfe-commits mailing list