On Fri, Nov 13, 2015 at 02:54:33PM +0300, Kirill Yukhin wrote: > @@ -9013,6 +9016,35 @@ handle_omp_declare_simd_attribute (tree *, tree, tree, > int, bool *) > return NULL_TREE; > } > > +/* Handle an "simd" attribute. */
/* Handle a "simd" attribute. */ instead? > +static tree > +handle_simd_attribute (tree *node, tree name, tree, int , bool *no_add_attrs) No space after int. > +@item simd > +@cindex @code{simd} function attribute. > +This attribute enables creation of one or more function versions that > +can process multiple arguments using SIMD instructions from a > +single invocation. Specifying this attribute allows compiler to > +assume that such a versions are available at link time (provided Not a native english speaker, but I'd leave the "a " out. > +in the same or another translation unit). Generated versions are > +target dependent and described in corresponding Vector ABI document. For > +x86_64 target this document can be found > +@w{@uref{https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt,here}}. > +It is prohibited to use the attribute along with Cilk Plus's @code{vector} I think we usually don't say prohibited in the docs, perhaps "The attribute should not be used together with Cilk Plus @code{vector} attribute on the same function."? > +attribute. If the attribute is specified and @code{#pragma omp declare simd} > +presented on a declaration and @code{-fopenmp} or @code{-fopenmp-simd} is present on ? > diff --git a/gcc/testsuite/c-c++-common/attr-simd-2.c > b/gcc/testsuite/c-c++-common/attr-simd-2.c > new file mode 100644 > index 0000000..bc91ccf > --- /dev/null > +++ b/gcc/testsuite/c-c++-common/attr-simd-2.c > @@ -0,0 +1,14 @@ > +/* { dg-do compile } */ > +/* { dg-options "-fdump-tree-optimized -fopenmp-simd" } */ > + > +#pragma omp declare simd > +__attribute__((__simd__)) > +extern Maybe just add #ifdef __cplusplus "C" #endif and remove the C++ mangling cruft from the scan-assembler lines? > +int simd_attr (void) > +{ > + return 0; > +} > + > +/* { dg-final { scan-tree-dump "omp declare simd" "optimized" } } */ > +/* { dg-final { scan-assembler-times "_ZGVbN4_(?:_Z9)?simd_attr(?:v)?:" 1 { > target { i?86-*-* x86_64-*-* } } } } */ > +/* { dg-final { scan-assembler-times "_ZGVbM4_(?:_Z9)?simd_attr(?:v)?:" 1 { > target { i?86-*-* x86_64-*-* } } } } */ > --- /dev/null > +++ b/gcc/testsuite/c-c++-common/attr-simd.c Similarly. Ok for trunk with those changes. Jakub