c-omp.c (c_omp_declare_simd_clauses_to_numbers): If all clauses are to be removed, return NULL rather than original clauses list.
* c-omp.c (c_omp_declare_simd_clauses_to_numbers): If all clauses are to be removed, return NULL rather than original clauses list. * decl.c (grokfndecl): Handle flag_openmp_simd like flag_openmp. * pt.c (apply_late_template_attributes): Likewise. * g++.dg/vect/vect.exp: Run also simd* tests. * gcc.dg/vect/tree-vect.h (abort, exit): For C++ use extern "C". (check_vect): Fix up get_cpuid call for C++. * g++.dg/vect/simd-clone-1.cc: New test. From-SVN: r225583
This commit is contained in:
parent
7b841a1252
commit
b03b462f1f
|
@ -1,3 +1,8 @@
|
||||||
|
2015-07-08 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* c-omp.c (c_omp_declare_simd_clauses_to_numbers): If all clauses
|
||||||
|
are to be removed, return NULL rather than original clauses list.
|
||||||
|
|
||||||
2015-07-07 Andrew MacLeod <amacleod@redhat.com>
|
2015-07-07 Andrew MacLeod <amacleod@redhat.com>
|
||||||
|
|
||||||
* array-notation-common.c: Adjust includes.
|
* array-notation-common.c: Adjust includes.
|
||||||
|
|
|
@ -1040,6 +1040,8 @@ c_omp_declare_simd_clauses_to_numbers (tree parms, tree clauses)
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
OMP_CLAUSE_CHAIN (clvec[i]) = (i < len - 1) ? clvec[i + 1] : NULL_TREE;
|
OMP_CLAUSE_CHAIN (clvec[i]) = (i < len - 1) ? clvec[i + 1] : NULL_TREE;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
clauses = NULL_TREE;
|
||||||
clvec.release ();
|
clvec.release ();
|
||||||
return clauses;
|
return clauses;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2015-07-08 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* decl.c (grokfndecl): Handle flag_openmp_simd like flag_openmp.
|
||||||
|
* pt.c (apply_late_template_attributes): Likewise.
|
||||||
|
|
||||||
2015-07-08 Marek Polacek <polacek@redhat.com>
|
2015-07-08 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c++/66748
|
PR c++/66748
|
||||||
|
|
|
@ -7910,7 +7910,7 @@ grokfndecl (tree ctype,
|
||||||
if (TYPE_NOTHROW_P (type) || nothrow_libfn_p (decl))
|
if (TYPE_NOTHROW_P (type) || nothrow_libfn_p (decl))
|
||||||
TREE_NOTHROW (decl) = 1;
|
TREE_NOTHROW (decl) = 1;
|
||||||
|
|
||||||
if (flag_openmp || flag_cilkplus)
|
if (flag_openmp || flag_openmp_simd || flag_cilkplus)
|
||||||
{
|
{
|
||||||
/* Adjust "omp declare simd" attributes. */
|
/* Adjust "omp declare simd" attributes. */
|
||||||
tree ods = lookup_attribute ("omp declare simd", *attrlist);
|
tree ods = lookup_attribute ("omp declare simd", *attrlist);
|
||||||
|
|
|
@ -9071,7 +9071,7 @@ apply_late_template_attributes (tree *decl_p, tree attributes, int attr_flags,
|
||||||
{
|
{
|
||||||
*p = TREE_CHAIN (t);
|
*p = TREE_CHAIN (t);
|
||||||
TREE_CHAIN (t) = NULL_TREE;
|
TREE_CHAIN (t) = NULL_TREE;
|
||||||
if ((flag_openmp || flag_cilkplus)
|
if ((flag_openmp || flag_openmp_simd || flag_cilkplus)
|
||||||
&& is_attribute_p ("omp declare simd",
|
&& is_attribute_p ("omp declare simd",
|
||||||
get_attribute_name (t))
|
get_attribute_name (t))
|
||||||
&& TREE_VALUE (t))
|
&& TREE_VALUE (t))
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2015-07-08 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* g++.dg/vect/vect.exp: Run also simd* tests.
|
||||||
|
* gcc.dg/vect/tree-vect.h (abort, exit): For C++ use extern "C".
|
||||||
|
(check_vect): Fix up get_cpuid call for C++.
|
||||||
|
* g++.dg/vect/simd-clone-1.cc: New test.
|
||||||
|
|
||||||
2015-07-08 H.J. Lu <hongjiu.lu@intel.com>
|
2015-07-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* gcc.target/i386/pr37870.c (dg-options): Add -mlong-double-80.
|
* gcc.target/i386/pr37870.c (dg-options): Add -mlong-double-80.
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
// { dg-require-effective-target vect_simd_clones }
|
||||||
|
// { dg-additional-options "-fopenmp-simd -fno-inline" }
|
||||||
|
// { dg-additional-options "-mavx" { target avx_runtime } }
|
||||||
|
|
||||||
|
#include "../../gcc.dg/vect/tree-vect.h"
|
||||||
|
|
||||||
|
struct S
|
||||||
|
{
|
||||||
|
int s;
|
||||||
|
#pragma omp declare simd notinbranch linear(x)
|
||||||
|
int f (int x);
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma omp declare simd notinbranch linear(x)
|
||||||
|
int
|
||||||
|
S::f (int x)
|
||||||
|
{
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int N>
|
||||||
|
struct T
|
||||||
|
{
|
||||||
|
int t;
|
||||||
|
#pragma omp declare simd notinbranch linear(x)
|
||||||
|
int f (int x);
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma omp declare simd notinbranch linear(x)
|
||||||
|
template <int N>
|
||||||
|
int
|
||||||
|
T<N>::f (int x)
|
||||||
|
{
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
do_main ()
|
||||||
|
{
|
||||||
|
int i, r = 0;
|
||||||
|
S s;
|
||||||
|
T<0> t;
|
||||||
|
#pragma omp simd reduction(+:r)
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
r += s.f (i) + t.f (i);
|
||||||
|
if (r != 64 * 63)
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
check_vect ();
|
||||||
|
do_main ();
|
||||||
|
}
|
|
@ -58,7 +58,7 @@ lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
|
||||||
dg-init
|
dg-init
|
||||||
|
|
||||||
# Main loop.
|
# Main loop.
|
||||||
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.{c,cc,S} ]] \
|
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/{pr,simd}*.{c,cc,S} ]] \
|
||||||
"" $DEFAULT_VECTCFLAGS
|
"" $DEFAULT_VECTCFLAGS
|
||||||
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
|
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
|
||||||
"" $VECT_SLP_CFLAGS
|
"" $VECT_SLP_CFLAGS
|
||||||
|
|
|
@ -5,8 +5,14 @@
|
||||||
# include "cpuid.h"
|
# include "cpuid.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sig_ill_handler (int sig)
|
sig_ill_handler (int sig)
|
||||||
|
@ -26,7 +32,7 @@ check_vect (void)
|
||||||
asm volatile (".long 0x10000484");
|
asm volatile (".long 0x10000484");
|
||||||
#elif defined(__i386__) || defined(__x86_64__)
|
#elif defined(__i386__) || defined(__x86_64__)
|
||||||
{
|
{
|
||||||
int a, b, c, d, want_level, want_c, want_d;
|
unsigned int a, b, c, d, want_level, want_c, want_d;
|
||||||
|
|
||||||
/* Determine what instruction set we've been compiled for, and detect
|
/* Determine what instruction set we've been compiled for, and detect
|
||||||
that we're running with it. This allows us to at least do a compile
|
that we're running with it. This allows us to at least do a compile
|
||||||
|
|
Loading…
Reference in New Issue