+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>
* array-notation-common.c: Adjust includes.
for (i = 0; i < len; i++)
OMP_CLAUSE_CHAIN (clvec[i]) = (i < len - 1) ? clvec[i + 1] : NULL_TREE;
}
+ else
+ clauses = NULL_TREE;
clvec.release ();
return clauses;
}
+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>
PR c++/66748
if (TYPE_NOTHROW_P (type) || nothrow_libfn_p (decl))
TREE_NOTHROW (decl) = 1;
- if (flag_openmp || flag_cilkplus)
+ if (flag_openmp || flag_openmp_simd || flag_cilkplus)
{
/* Adjust "omp declare simd" attributes. */
tree ods = lookup_attribute ("omp declare simd", *attrlist);
{
*p = TREE_CHAIN (t);
TREE_CHAIN (t) = NULL_TREE;
- if ((flag_openmp || flag_cilkplus)
+ if ((flag_openmp || flag_openmp_simd || flag_cilkplus)
&& is_attribute_p ("omp declare simd",
get_attribute_name (t))
&& TREE_VALUE (t))
+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>
* gcc.target/i386/pr37870.c (dg-options): Add -mlong-double-80.
--- /dev/null
+// { 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 ();
+}
dg-init
# 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
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
"" $VECT_SLP_CFLAGS
# include "cpuid.h"
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
extern void abort (void);
extern void exit (int);
+#ifdef __cplusplus
+}
+#endif
static void
sig_ill_handler (int sig)
asm volatile (".long 0x10000484");
#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
that we're running with it. This allows us to at least do a compile