Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/ext/vector29.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// PR c++/69022 - attribute vector_size ignored with dependent bytes // { dg-do compile } template <int N> struct A { static const int X = N; }; #if __cplusplus >= 201202L # define ASSERT(e) static_assert (e, #e) #else # define ASSERT(e) \ do { struct S { bool: !!(e); } asrt; (void)&asrt; } while (0) #endif template <class T, int N> struct B: A<N> { #if __cplusplus >= 201202L using A<N>::X; # define VecSize X #else # define VecSize A<N>::X #endif static void foo () { char a __attribute__ ((vector_size (N))); ASSERT (sizeof a == N); T b __attribute__ ((vector_size (N))); ASSERT (sizeof b == N); } static void bar () { char c1 __attribute__ ((vector_size (VecSize))); ASSERT (sizeof c1 == VecSize); char c2 __attribute__ ((vector_size (A<N>::X))); ASSERT (sizeof c2 == A<N>::X); T d1 __attribute__ ((vector_size (VecSize))); ASSERT (sizeof d1 == VecSize); T d2 __attribute__ ((vector_size (A<N>::X))); ASSERT (sizeof d2 == A<N>::X); } }; void bar () { B<int, 16>::foo (); B<int, 16>::bar (); }