aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2021-05-31 11:30:50 +0200
committerMartin Liska <mliska@suse.cz>2021-05-31 11:30:50 +0200
commit520839b3244507adc4f3ad640e5cab46e2ccbf8f (patch)
tree0d408f4e8cebbcbfa3115a907a162168b57bd65d /gcc
parent9104f3d64deca97a7698e9dde45010ca3cf75928 (diff)
parent21d7bba242f1a7349adc6a57aa4c874f7bb159f8 (diff)
downloadgcc-520839b3244507adc4f3ad640e5cab46e2ccbf8f.zip
gcc-520839b3244507adc4f3ad640e5cab46e2ccbf8f.tar.gz
gcc-520839b3244507adc4f3ad640e5cab46e2ccbf8f.tar.bz2
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog94
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/c-family/ChangeLog10
-rw-r--r--gcc/c-family/c-common.c139
-rw-r--r--gcc/c-family/c-common.h4
-rw-r--r--gcc/c/ChangeLog26
-rw-r--r--gcc/c/c-decl.c1
-rw-r--r--gcc/c/c-parser.c38
-rw-r--r--gcc/config/h8300/h8300.c29
-rw-r--r--gcc/config/rs6000/predicates.md3
-rw-r--r--gcc/cp/ChangeLog41
-rw-r--r--gcc/cp/call.c22
-rw-r--r--gcc/cp/constexpr.c42
-rw-r--r--gcc/cp/coroutines.cc10
-rw-r--r--gcc/cp/cp-objcp-common.c1
-rw-r--r--gcc/cp/cp-tree.h3
-rw-r--r--gcc/cp/module.cc5
-rw-r--r--gcc/cp/parser.c15
-rw-r--r--gcc/cp/pt.c14
-rw-r--r--gcc/cp/semantics.c5
-rw-r--r--gcc/cp/typeck.c36
-rw-r--r--gcc/doc/extend.texi28
-rw-r--r--gcc/fortran/ChangeLog29
-rw-r--r--gcc/fortran/gfortran.texi2
-rw-r--r--gcc/gimple-ssa-evrp.c6
-rw-r--r--gcc/gimplify.c8
-rw-r--r--gcc/internal-fn.c6
-rw-r--r--gcc/internal-fn.def3
-rw-r--r--gcc/internal-fn.h1
-rw-r--r--gcc/lto/lto-common.c2
-rw-r--r--gcc/testsuite/ChangeLog100
-rw-r--r--gcc/testsuite/c-c++-common/builtin-shufflevector-2.c18
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-1.c56
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-10.c56
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-13.c22
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-14.c22
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-2.c50
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-3.c22
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-4.c16
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-5.c22
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-6.c22
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-7.c22
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-8.c56
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr99928-9.c56
-rw-r--r--gcc/testsuite/c-c++-common/torture/builtin-shufflevector-1.c49
-rw-r--r--gcc/testsuite/g++.dg/ext/builtin-shufflevector-1.C18
-rw-r--r--gcc/testsuite/g++.dg/ext/builtin-shufflevector-2.C12
-rw-r--r--gcc/testsuite/g++.dg/inherit/virtual15.C18
-rw-r--r--gcc/testsuite/g++.dg/inherit/virtual15a.C19
-rw-r--r--gcc/testsuite/g++.target/powerpc/pr99842.C188
-rw-r--r--gcc/testsuite/gcc.dg/Wstringop-overflow-55.c8
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr80776-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr100778-1.c18
-rw-r--r--gcc/tree-iterator.h36
-rw-r--r--gcc/tree-streamer-in.c2
-rw-r--r--gcc/tree-streamer-out.c2
-rw-r--r--gcc/tree-vect-slp.c4
-rw-r--r--gcc/tree.h8
63 files changed, 1268 insertions, 293 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 290e374..05e1640 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,97 @@
+2021-05-29 Jeff Law <jlaw@tachyum.com>
+
+ * config/h8300/h8300.c (h8300_emit_stack_adjustment): Drop unused
+ parameter. Call callers fixed.
+ (push): Likewise.
+ (output_plussi): Add FALLTHRU markers.
+ (h8300_shift_needs_scratch_p): Add gcc_unreachable marker.
+
+2021-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * gimplify.c (gimplify_scan_omp_clauses): For taskloop simd
+ combined with parallel, make sure to add shared clause to
+ parallel for explicit linear clause.
+
+2021-05-29 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/100787
+ * gimple-ssa-evrp.c: Disable exporting of global ranges.
+
+2021-05-28 Jason Merrill <jason@redhat.com>
+
+ * tree-iterator.h (struct tree_stmt_iterator): Add operator++,
+ operator--, operator*, operator==, and operator!=.
+ (class tsi_range): New.
+
+2021-05-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/100778
+ * tree-vect-slp.c (vect_build_slp_tree_1): Prevent possibly
+ trapping ops in different BBs.
+
+2021-05-28 Richard Biener <rguenther@suse.de>
+
+ PR ipa/100791
+ * tree-inline.c (copy_bb): When processing __builtin_va_arg_pack
+ copy fntype from original call.
+
+2021-05-28 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/100751
+ * doc/gcov.texi: Revert partially a hunk that was wrong.
+
+2021-05-28 Cooper Qu <cooper.qu@linux.alibaba.com>
+
+ * config/csky/csky-linux-elf.h (HAVE_sync_compare_and_swapqi):
+ Defined.
+ (HAVE_sync_compare_and_swaphi): Likewise.
+ (HAVE_sync_compare_and_swapsi): Likewise.
+
+2021-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * tree.h (OMP_CLAUSE_MAP_IMPLICIT): Define.
+
+2021-05-28 Tobias Burnus <tobias@codesourcery.com>
+
+ * gimplify.c (gimplify_omp_affinity): New.
+ (gimplify_scan_omp_clauses): Call it; remove affinity clause afterwards.
+ * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_AFFINITY.
+ * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE_AFFINITY.
+ * tree.c (omp_clause_num_ops, omp_clause_code_name): Add clause.
+ (walk_tree_1): Handle OMP_CLAUSE_AFFINITY.
+
+2021-05-28 Joern Rennecke <joern.rennecke@riscy-ip.com>
+ Richard Biener <rguenther@suse.de>
+
+ * match.pd <popcount & / + pattern matching>:
+ When generating popcount directly fails, try doing it in two halves.
+
+2021-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * Makefile.in (generated_files): Add gimple-match.c and
+ generic-match.c
+
+2021-05-28 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * gensupport.c (alter_predicate_for_insn): Handle MATCH_DUP.
+
+2021-05-28 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * gensupport.c (alter_constraints): Add MATCH_SCRATCH case.
+
+2021-05-28 Kewen Lin <linkw@linux.ibm.com>
+
+ PR tree-optimization/99398
+ * tree-ssa-forwprop.c (simplify_permutation): Optimize some cases
+ where the fed operands are CTOR/CST and propagated through
+ VIEW_CONVERT_EXPR. Call vec_perm_indices::new_shrunk_vector.
+ * vec-perm-indices.c (vec_perm_indices::new_shrunk_vector): New
+ function.
+ * vec-perm-indices.h (vec_perm_indices::new_shrunk_vector): New
+ declare.
+
2021-05-27 Uroš Bizjak <ubizjak@gmail.com>
* config/i386/mmx.md (addv2sf3): Do not call
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 2fcc100..9bfad84 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20210528
+20210531
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 28544c7..2905179 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,13 @@
+2021-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * c-omp.c (c_omp_split_clauses): For reduction clause if combined with
+ target add a map tofrom clause with OMP_CLAUSE_MAP_IMPLICIT.
+
+2021-05-28 Tobias Burnus <tobias@codesourcery.com>
+
+ * c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_AFFINITY.
+
2021-05-25 Martin Liska <mliska@suse.cz>
PR tree-optimization/92860
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index b7daa2e..c4eb2b1 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -51,6 +51,8 @@ along with GCC; see the file COPYING3. If not see
#include "c-spellcheck.h"
#include "selftest.h"
#include "debug.h"
+#include "tree-vector-builder.h"
+#include "vec-perm-indices.h"
cpp_reader *parse_in; /* Declared in c-pragma.h. */
@@ -383,6 +385,7 @@ const struct c_common_resword c_common_reswords[] =
{ "__builtin_has_attribute", RID_BUILTIN_HAS_ATTRIBUTE, 0 },
{ "__builtin_launder", RID_BUILTIN_LAUNDER, D_CXXONLY },
{ "__builtin_shuffle", RID_BUILTIN_SHUFFLE, 0 },
+ { "__builtin_shufflevector", RID_BUILTIN_SHUFFLEVECTOR, 0 },
{ "__builtin_tgmath", RID_BUILTIN_TGMATH, D_CONLY },
{ "__builtin_offsetof", RID_OFFSETOF, 0 },
{ "__builtin_types_compatible_p", RID_TYPES_COMPATIBLE_P, D_CONLY },
@@ -1108,6 +1111,142 @@ c_build_vec_perm_expr (location_t loc, tree v0, tree v1, tree mask,
return ret;
}
+/* Build a VEC_PERM_EXPR if V0, V1 are not error_mark_nodes
+ and have vector types, V0 has the same element type as V1, and the
+ number of elements the result is that of MASK. */
+tree
+c_build_shufflevector (location_t loc, tree v0, tree v1, vec<tree> mask,
+ bool complain)
+{
+ tree ret;
+ bool wrap = true;
+ bool maybe_const = false;
+
+ if (v0 == error_mark_node || v1 == error_mark_node)
+ return error_mark_node;
+
+ if (!gnu_vector_type_p (TREE_TYPE (v0))
+ || !gnu_vector_type_p (TREE_TYPE (v1)))
+ {
+ if (complain)
+ error_at (loc, "%<__builtin_shufflevector%> arguments must be vectors");
+ return error_mark_node;
+ }
+
+ /* ??? In principle one could select a constant part of a variable size
+ vector but things get a bit awkward with trying to support this here. */
+ unsigned HOST_WIDE_INT v0n, v1n;
+ if (!TYPE_VECTOR_SUBPARTS (TREE_TYPE (v0)).is_constant (&v0n)
+ || !TYPE_VECTOR_SUBPARTS (TREE_TYPE (v1)).is_constant (&v1n))
+ {
+ if (complain)
+ error_at (loc, "%<__builtin_shufflevector%> arguments must be constant"
+ " size vectors");
+ return error_mark_node;
+ }
+
+ if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (v0)))
+ != TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (v1))))
+ {
+ if (complain)
+ error_at (loc, "%<__builtin_shufflevector%> argument vectors must "
+ "have the same element type");
+ return error_mark_node;
+ }
+
+ if (!pow2p_hwi (mask.length ()))
+ {
+ if (complain)
+ error_at (loc, "%<__builtin_shufflevector%> must specify a result "
+ "with a power of two number of elements");
+ return error_mark_node;
+ }
+
+ if (!c_dialect_cxx ())
+ {
+ /* Avoid C_MAYBE_CONST_EXPRs inside VEC_PERM_EXPR. */
+ v0 = c_fully_fold (v0, false, &maybe_const);
+ wrap &= maybe_const;
+
+ v1 = c_fully_fold (v1, false, &maybe_const);
+ wrap &= maybe_const;
+ }
+
+ unsigned HOST_WIDE_INT maskl = MAX (mask.length (), MAX (v0n, v1n));
+ unsigned HOST_WIDE_INT pad = (v0n < maskl ? maskl - v0n : 0);
+ vec_perm_builder sel (maskl, maskl, 1);
+ unsigned i;
+ for (i = 0; i < mask.length (); ++i)
+ {
+ tree idx = mask[i];
+ if (!tree_fits_shwi_p (idx))
+ {
+ if (complain)
+ error_at (loc, "invalid element index %qE to "
+ "%<__builtin_shufflevector%>", idx);
+ return error_mark_node;
+ }
+ HOST_WIDE_INT iidx = tree_to_shwi (idx);
+ if (iidx < -1
+ || (iidx != -1
+ && (unsigned HOST_WIDE_INT) iidx >= v0n + v1n))
+ {
+ if (complain)
+ error_at (loc, "invalid element index %qE to "
+ "%<__builtin_shufflevector%>", idx);
+ return error_mark_node;
+ }
+ /* ??? Our VEC_PERM_EXPR does not allow for -1 yet. */
+ if (iidx == -1)
+ iidx = i;
+ /* ??? Our VEC_PERM_EXPR does not allow different sized inputs,
+ so pad out a smaller v0. */
+ else if ((unsigned HOST_WIDE_INT) iidx >= v0n)
+ iidx += pad;
+ sel.quick_push (iidx);
+ }
+ /* ??? VEC_PERM_EXPR does not support a result that is smaller than
+ the inputs, so we have to pad id out. */
+ for (; i < maskl; ++i)
+ sel.quick_push (i);
+
+ vec_perm_indices indices (sel, 2, maskl);
+
+ tree ret_type = build_vector_type (TREE_TYPE (TREE_TYPE (v0)), maskl);
+ tree mask_type = build_vector_type (build_nonstandard_integer_type
+ (TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (ret_type))), 1),
+ maskl);
+ /* Pad out arguments to the common vector size. */
+ if (v0n < maskl)
+ {
+ constructor_elt elt = { NULL_TREE, build_zero_cst (TREE_TYPE (v0)) };
+ v0 = build_constructor_single (ret_type, NULL_TREE, v0);
+ for (i = 1; i < maskl / v0n; ++i)
+ vec_safe_push (CONSTRUCTOR_ELTS (v0), elt);
+ }
+ if (v1n < maskl)
+ {
+ constructor_elt elt = { NULL_TREE, build_zero_cst (TREE_TYPE (v1)) };
+ v1 = build_constructor_single (ret_type, NULL_TREE, v1);
+ for (i = 1; i < maskl / v1n; ++i)
+ vec_safe_push (CONSTRUCTOR_ELTS (v1), elt);
+ }
+ ret = build3_loc (loc, VEC_PERM_EXPR, ret_type, v0, v1,
+ vec_perm_indices_to_tree (mask_type, indices));
+ /* Get the lowpart we are interested in. */
+ if (mask.length () < maskl)
+ {
+ tree lpartt = build_vector_type (TREE_TYPE (ret_type), mask.length ());
+ ret = build3_loc (loc, BIT_FIELD_REF,
+ lpartt, ret, TYPE_SIZE (lpartt), bitsize_zero_node);
+ }
+
+ if (!c_dialect_cxx () && !wrap)
+ ret = c_wrap_maybe_const (ret, true);
+
+ return ret;
+}
+
/* Build a VEC_CONVERT ifn for __builtin_convertvector builtin. */
tree
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index f30b6c6..be4b29a 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -107,7 +107,7 @@ enum rid
RID_ASM, RID_TYPEOF, RID_ALIGNOF, RID_ATTRIBUTE, RID_VA_ARG,
RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL, RID_CHOOSE_EXPR,
RID_TYPES_COMPATIBLE_P, RID_BUILTIN_COMPLEX, RID_BUILTIN_SHUFFLE,
- RID_BUILTIN_CONVERTVECTOR, RID_BUILTIN_TGMATH,
+ RID_BUILTIN_SHUFFLEVECTOR, RID_BUILTIN_CONVERTVECTOR, RID_BUILTIN_TGMATH,
RID_BUILTIN_HAS_ATTRIBUTE,
RID_DFLOAT32, RID_DFLOAT64, RID_DFLOAT128,
@@ -1048,6 +1048,8 @@ extern bool lvalue_p (const_tree);
extern bool vector_targets_convertible_p (const_tree t1, const_tree t2);
extern bool vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note);
extern tree c_build_vec_perm_expr (location_t, tree, tree, tree, bool = true);
+extern tree c_build_shufflevector (location_t, tree, tree,
+ vec<tree>, bool = true);
extern tree c_build_vec_convert (location_t, tree, location_t, tree, bool = true);
extern void init_c_lex (void);
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 669a818..411058f 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,29 @@
+2021-05-28 Richard Biener <rguenther@suse.de>
+
+ PR c/100803
+ * gimple-parser.c (c_parser_gimple_paren_condition): Diagnose
+ invalid if conditions.
+
+2021-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * c-typeck.c (handle_omp_array_sections): Copy OMP_CLAUSE_MAP_IMPLICIT.
+ (c_finish_omp_clauses): Move not just OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT
+ marked clauses last, but also OMP_CLAUSE_MAP_IMPLICIT. Add
+ map_firstprivate_head bitmap, set it for GOMP_MAP_FIRSTPRIVATE_POINTER
+ maps and silently remove OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT if it is
+ present too. For OMP_CLAUSE_MAP_IMPLICIT silently remove the clause
+ if present in map_head, map_field_head or map_firstprivate_head
+ bitmaps.
+
+2021-05-28 Tobias Burnus <tobias@codesourcery.com>
+
+ * c-parser.c (c_parser_omp_clause_affinity): New.
+ (c_parser_omp_clause_name, c_parser_omp_variable_list,
+ c_parser_omp_all_clauses, OMP_TASK_CLAUSE_MASK): Handle affinity clause.
+ * c-typeck.c (handle_omp_array_sections_1, handle_omp_array_sections,
+ c_finish_omp_clauses): Likewise.
+
2021-05-26 Eric Botcazou <ebotcazou@adacore.com>
PR c/100653
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 3c7b306..28f851b 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -10547,6 +10547,7 @@ names_builtin_p (const char *name)
case RID_BUILTIN_CONVERTVECTOR:
case RID_BUILTIN_HAS_ATTRIBUTE:
case RID_BUILTIN_SHUFFLE:
+ case RID_BUILTIN_SHUFFLEVECTOR:
case RID_CHOOSE_EXPR:
case RID_OFFSETOF:
case RID_TYPES_COMPATIBLE_P:
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index d71fd0a..c491b12 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -10000,6 +10000,44 @@ c_parser_postfix_expression (c_parser *parser)
set_c_expr_source_range (&expr, loc, close_paren_loc);
break;
}
+ case RID_BUILTIN_SHUFFLEVECTOR:
+ {
+ vec<c_expr_t, va_gc> *cexpr_list;
+ unsigned int i;
+ c_expr_t *p;
+ location_t close_paren_loc;
+
+ c_parser_consume_token (parser);
+ if (!c_parser_get_builtin_args (parser,
+ "__builtin_shufflevector",
+ &cexpr_list, false,
+ &close_paren_loc))
+ {
+ expr.set_error ();
+ break;
+ }
+
+ FOR_EACH_VEC_SAFE_ELT (cexpr_list, i, p)
+ *p = convert_lvalue_to_rvalue (loc, *p, true, true);
+
+ if (vec_safe_length (cexpr_list) < 3)
+ {
+ error_at (loc, "wrong number of arguments to "
+ "%<__builtin_shuffle%>");
+ expr.set_error ();
+ }
+ else
+ {
+ auto_vec<tree, 16> mask;
+ for (i = 2; i < cexpr_list->length (); ++i)
+ mask.safe_push ((*cexpr_list)[i].value);
+ expr.value = c_build_shufflevector (loc, (*cexpr_list)[0].value,
+ (*cexpr_list)[1].value,
+ mask);
+ }
+ set_c_expr_source_range (&expr, loc, close_paren_loc);
+ break;
+ }
case RID_BUILTIN_CONVERTVECTOR:
{
location_t start_loc = loc;
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 0ae8030..ba2b9da 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -91,7 +91,7 @@ static int h8300_interrupt_function_p (tree);
static int h8300_saveall_function_p (tree);
static int h8300_monitor_function_p (tree);
static int h8300_os_task_function_p (tree);
-static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT, bool);
+static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT);
static HOST_WIDE_INT round_frame_size (HOST_WIDE_INT);
static unsigned int compute_saved_regs (void);
static const char *cond_string (enum rtx_code);
@@ -452,7 +452,7 @@ Fpa (rtx par)
SIZE to adjust the stack pointer. */
static void
-h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size, bool in_prologue)
+h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
{
/* If the frame size is 0, we don't have anything to do. */
if (size == 0)
@@ -511,7 +511,7 @@ compute_saved_regs (void)
/* Emit an insn to push register RN. */
static rtx
-push (int rn, bool in_prologue)
+push (int rn)
{
rtx reg = gen_rtx_REG (word_mode, rn);
rtx x;
@@ -571,7 +571,7 @@ h8300_push_pop (int regno, int nregs, bool pop_p, bool return_p)
if (pop_p)
pop (regno);
else
- push (regno, false);
+ push (regno);
return;
}
@@ -755,7 +755,7 @@ h8300_expand_prologue (void)
if (frame_pointer_needed)
{
/* Push fp. */
- push (HARD_FRAME_POINTER_REGNUM, true);
+ push (HARD_FRAME_POINTER_REGNUM);
F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx), 0);
}
@@ -787,7 +787,7 @@ h8300_expand_prologue (void)
}
/* Leave room for locals. */
- h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()), true);
+ h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()));
if (flag_stack_usage_info)
current_function_static_stack_size
@@ -828,7 +828,7 @@ h8300_expand_epilogue (void)
returned_p = false;
/* Deallocate locals. */
- h8300_emit_stack_adjustment (1, frame_size, false);
+ h8300_emit_stack_adjustment (1, frame_size);
/* Pop the saved registers in descending order. */
saved_regs = compute_saved_regs ();
@@ -2707,10 +2707,14 @@ output_plussi (rtx *operands, bool need_flags)
if (!need_flags)
return "adds\t%2,%S0";
+ /* FALLTHRU */
+
case 0xfffffffc:
if (!need_flags)
return "subs\t%G2,%S0";
+ /* FALLTHRU */
+
case 0x00010000:
case 0x00020000:
if (!need_flags)
@@ -2719,6 +2723,8 @@ output_plussi (rtx *operands, bool need_flags)
return "inc.w\t%2,%e0";
}
+ /* FALLTHRU */
+
case 0xffff0000:
case 0xfffe0000:
if (!need_flags)
@@ -2726,6 +2732,9 @@ output_plussi (rtx *operands, bool need_flags)
operands[2] = GEN_INT (intval >> 16);
return "dec.w\t%G2,%e0";
}
+
+ /* FALLTHRU */
+
}
/* See if we can finish with 4 bytes. */
@@ -2792,10 +2801,15 @@ compute_plussi_length (rtx *operands, bool need_flags)
if (!need_flags)
return 2;
+ /* FALLTHRU */
+
case 0xffff0000:
case 0xfffe0000:
if (!need_flags)
return 2;
+
+ /* FALLTHRU */
+
}
/* See if we can finish with 4 bytes. */
@@ -3999,6 +4013,7 @@ h8300_shift_needs_scratch_p (int count, machine_mode mode, enum rtx_code type)
else if (type == ASHIFTRT)
return (ar == SHIFT_LOOP
|| (TARGET_H8300H && mode == SImode && count == 8));
+ gcc_unreachable ();
}
/* Output the assembler code for doing shifts. */
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index e21bc74..121cbf1 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -1172,7 +1172,8 @@
(match_test "(mode == V16QImode
&& (vsx_register_operand (op, mode)
|| (MEM_P (op)
- && quad_address_p (XEXP (op, 0), mode, false))))"))
+ && (indexed_or_indirect_address (XEXP (op, 0), mode)
+ || quad_address_p (XEXP (op, 0), mode, false)))))"))
;; Return 1 if this operand is valid for an MMA disassemble insn.
(define_predicate "mma_disassemble_output_operand"
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d4aa545..882c8eb 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,44 @@
+2021-05-28 Jason Merrill <jason@redhat.com>
+
+ * constexpr.c (build_data_member_initialization): Use tsi_range.
+ (build_constexpr_constructor_member_initializers): Likewise.
+ (constexpr_fn_retval, cxx_eval_statement_list): Likewise.
+ (potential_constant_expression_1): Likewise.
+ * coroutines.cc (await_statement_expander): Likewise.
+ (await_statement_walker): Likewise.
+ * module.cc (trees_out::core_vals): Likewise.
+ * pt.c (tsubst_expr): Likewise.
+ * semantics.c (set_cleanup_locs): Likewise.
+
+2021-05-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/100797
+ PR c++/95719
+ * call.c (build_over_call): Adjust base_binfo in
+ resolves_to_fixed_type_p case.
+
+2021-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * semantics.c (handle_omp_array_sections): Copy
+ OMP_CLAUSE_MAP_IMPLICIT.
+ (finish_omp_clauses): Move not just OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT
+ marked clauses last, but also OMP_CLAUSE_MAP_IMPLICIT. Add
+ map_firstprivate_head bitmap, set it for GOMP_MAP_FIRSTPRIVATE_POINTER
+ maps and silently remove OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT if it is
+ present too. For OMP_CLAUSE_MAP_IMPLICIT silently remove the clause
+ if present in map_head, map_field_head or map_firstprivate_head
+ bitmaps.
+
+2021-05-28 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.c (cp_parser_omp_clause_affinity): New.
+ (cp_parser_omp_clause_name, cp_parser_omp_var_list_no_open,
+ cp_parser_omp_all_clauses, OMP_TASK_CLAUSE_MASK): Handle affinity
+ clause.
+ * semantics.c (handle_omp_array_sections_1, handle_omp_array_sections,
+ finish_omp_clauses): Likewise.
+
2021-05-27 Matthias Kretz <kretz@kde.org>
PR c++/100716
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 3076fe6..bf524b5 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -9152,18 +9152,32 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
if (base_binfo == error_mark_node)
return error_mark_node;
}
- tree converted_arg = build_base_path (PLUS_EXPR, arg,
- base_binfo, 1, complain);
/* If we know the dynamic type of the object, look up the final overrider
in the BINFO. */
if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0
&& resolves_to_fixed_type_p (arg))
{
- fn = lookup_vfn_in_binfo (DECL_VINDEX (fn), base_binfo);
- flags |= LOOKUP_NONVIRTUAL;
+ tree ov = lookup_vfn_in_binfo (DECL_VINDEX (fn), base_binfo);
+
+ /* And unwind base_binfo to match. If we don't find the type we're
+ looking for in BINFO_INHERITANCE_CHAIN, we're looking at diamond
+ inheritance; for now do a normal virtual call in that case. */
+ tree octx = DECL_CONTEXT (ov);
+ tree obinfo = base_binfo;
+ while (obinfo && !SAME_BINFO_TYPE_P (BINFO_TYPE (obinfo), octx))
+ obinfo = BINFO_INHERITANCE_CHAIN (obinfo);
+ if (obinfo)
+ {
+ fn = ov;
+ base_binfo = obinfo;
+ flags |= LOOKUP_NONVIRTUAL;
+ }
}
+ tree converted_arg = build_base_path (PLUS_EXPR, arg,
+ base_binfo, 1, complain);
+
argarray[j++] = converted_arg;
parm = TREE_CHAIN (parm);
if (first_arg != NULL_TREE)
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index 9cb761d..297f207 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -330,12 +330,9 @@ build_data_member_initialization (tree t, vec<constructor_elt, va_gc> **vec)
return false;
if (TREE_CODE (t) == STATEMENT_LIST)
{
- tree_stmt_iterator i;
- for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
- {
- if (! build_data_member_initialization (tsi_stmt (i), vec))
- return false;
- }
+ for (tree stmt : tsi_range (t))
+ if (! build_data_member_initialization (stmt, vec))
+ return false;
return true;
}
if (TREE_CODE (t) == CLEANUP_STMT)
@@ -577,10 +574,9 @@ build_constexpr_constructor_member_initializers (tree type, tree body)
break;
case STATEMENT_LIST:
- for (tree_stmt_iterator i = tsi_start (body);
- !tsi_end_p (i); tsi_next (&i))
+ for (tree stmt : tsi_range (body))
{
- body = tsi_stmt (i);
+ body = stmt;
if (TREE_CODE (body) == BIND_EXPR)
break;
}
@@ -617,10 +613,9 @@ build_constexpr_constructor_member_initializers (tree type, tree body)
}
else if (TREE_CODE (body) == STATEMENT_LIST)
{
- tree_stmt_iterator i;
- for (i = tsi_start (body); !tsi_end_p (i); tsi_next (&i))
+ for (tree stmt : tsi_range (body))
{
- ok = build_data_member_initialization (tsi_stmt (i), &vec);
+ ok = build_data_member_initialization (stmt, &vec);
if (!ok)
break;
}
@@ -675,11 +670,10 @@ constexpr_fn_retval (tree body)
{
case STATEMENT_LIST:
{
- tree_stmt_iterator i;
tree expr = NULL_TREE;
- for (i = tsi_start (body); !tsi_end_p (i); tsi_next (&i))
+ for (tree stmt : tsi_range (body))
{
- tree s = constexpr_fn_retval (tsi_stmt (i));
+ tree s = constexpr_fn_retval (stmt);
if (s == error_mark_node)
return error_mark_node;
else if (s == NULL_TREE)
@@ -5772,7 +5766,6 @@ cxx_eval_statement_list (const constexpr_ctx *ctx, tree t,
bool *non_constant_p, bool *overflow_p,
tree *jump_target)
{
- tree_stmt_iterator i;
tree local_target;
/* In a statement-expression we want to return the last value.
For empty statement expression return void_node. */
@@ -5782,9 +5775,8 @@ cxx_eval_statement_list (const constexpr_ctx *ctx, tree t,
local_target = NULL_TREE;
jump_target = &local_target;
}
- for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
+ for (tree stmt : tsi_range (t))
{
- tree stmt = tsi_stmt (i);
/* We've found a continue, so skip everything until we reach
the label its jumping to. */
if (continues (jump_target))
@@ -8282,16 +8274,10 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
}
case STATEMENT_LIST:
- {
- tree_stmt_iterator i;
- for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
- {
- if (!RECUR (tsi_stmt (i), any))
- return false;
- }
- return true;
- }
- break;
+ for (tree stmt : tsi_range (t))
+ if (!RECUR (stmt, any))
+ return false;
+ return true;
case MODIFY_EXPR:
if (cxx_dialect < cxx14)
diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc
index 7166206..1bf1931 100644
--- a/gcc/cp/coroutines.cc
+++ b/gcc/cp/coroutines.cc
@@ -1764,10 +1764,9 @@ await_statement_expander (tree *stmt, int *do_subtree, void *d)
return NULL_TREE; /* Just process the sub-trees. */
else if (TREE_CODE (*stmt) == STATEMENT_LIST)
{
- tree_stmt_iterator i;
- for (i = tsi_start (*stmt); !tsi_end_p (i); tsi_next (&i))
+ for (tree &s : tsi_range (*stmt))
{
- res = cp_walk_tree (tsi_stmt_ptr (i), await_statement_expander,
+ res = cp_walk_tree (&s, await_statement_expander,
d, NULL);
if (res)
return res;
@@ -3509,10 +3508,9 @@ await_statement_walker (tree *stmt, int *do_subtree, void *d)
}
else if (TREE_CODE (*stmt) == STATEMENT_LIST)
{
- tree_stmt_iterator i;
- for (i = tsi_start (*stmt); !tsi_end_p (i); tsi_next (&i))
+ for (tree &s : tsi_range (*stmt))
{
- res = cp_walk_tree (tsi_stmt_ptr (i), await_statement_walker,
+ res = cp_walk_tree (&s, await_statement_walker,
d, NULL);
if (res)
return res;
diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c
index 9847270..46b2248 100644
--- a/gcc/cp/cp-objcp-common.c
+++ b/gcc/cp/cp-objcp-common.c
@@ -390,6 +390,7 @@ names_builtin_p (const char *name)
case RID_BUILTIN_CONVERTVECTOR:
case RID_BUILTIN_HAS_ATTRIBUTE:
case RID_BUILTIN_SHUFFLE:
+ case RID_BUILTIN_SHUFFLEVECTOR:
case RID_BUILTIN_LAUNDER:
case RID_BUILTIN_BIT_CAST:
case RID_OFFSETOF:
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index aa20271..c95a820 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -7895,6 +7895,9 @@ extern tree cp_build_binary_op (const op_location_t &,
extern tree build_x_vec_perm_expr (location_t,
tree, tree, tree,
tsubst_flags_t);
+extern tree build_x_shufflevector (location_t,
+ vec<tree, va_gc> *,
+ tsubst_flags_t);
#define cxx_sizeof(T) cxx_sizeof_or_alignof_type (input_location, T, SIZEOF_EXPR, false, true)
extern tree build_simple_component_ref (tree, tree);
extern tree build_ptrmemfunc_access_expr (tree, tree);
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 02c19f5..f0fb014 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -6094,9 +6094,8 @@ trees_out::core_vals (tree t)
break;
case STATEMENT_LIST:
- for (tree_stmt_iterator iter = tsi_start (t);
- !tsi_end_p (iter); tsi_next (&iter))
- if (tree stmt = tsi_stmt (iter))
+ for (tree stmt : tsi_range (t))
+ if (stmt)
WT (stmt);
WT (NULL_TREE);
break;
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 84c6be8..4a46828 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -7295,6 +7295,7 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
case RID_ADDRESSOF:
case RID_BUILTIN_SHUFFLE:
+ case RID_BUILTIN_SHUFFLEVECTOR:
case RID_BUILTIN_LAUNDER:
{
vec<tree, va_gc> *vec;
@@ -7357,6 +7358,20 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
}
break;
+ case RID_BUILTIN_SHUFFLEVECTOR:
+ if (vec->length () < 3)
+ {
+ error_at (loc, "wrong number of arguments to "
+ "%<__builtin_shufflevector%>");
+ postfix_expression = error_mark_node;
+ }
+ else
+ {
+ postfix_expression
+ = build_x_shufflevector (loc, vec, tf_warning_or_error);
+ }
+ break;
+
default:
gcc_unreachable ();
}
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index bb22d68..3130280 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -18152,9 +18152,8 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
{
case STATEMENT_LIST:
{
- tree_stmt_iterator i;
- for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
- RECUR (tsi_stmt (i));
+ for (tree stmt : tsi_range (t))
+ RECUR (stmt);
break;
}
@@ -20398,6 +20397,15 @@ tsubst_copy_and_build (tree t,
RETURN (ret);
break;
+ case IFN_SHUFFLEVECTOR:
+ {
+ ret = build_x_shufflevector (input_location, call_args,
+ complain);
+ if (ret != error_mark_node)
+ RETURN (ret);
+ break;
+ }
+
default:
/* Unsupported internal function with arguments. */
gcc_unreachable ();
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index fe370a2..e40462d 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -613,9 +613,8 @@ set_cleanup_locs (tree stmts, location_t loc)
set_cleanup_locs (CLEANUP_BODY (stmts), loc);
}
else if (TREE_CODE (stmts) == STATEMENT_LIST)
- for (tree_stmt_iterator i = tsi_start (stmts);
- !tsi_end_p (i); tsi_next (&i))
- set_cleanup_locs (tsi_stmt (i), loc);
+ for (tree stmt : tsi_range (stmts))
+ set_cleanup_locs (stmt, loc);
}
/* Finish a scope. */
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 3df4117..dbb2370 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -5989,6 +5989,42 @@ build_x_vec_perm_expr (location_t loc,
orig_arg1, orig_arg2);
return exp;
}
+
+/* Build a VEC_PERM_EXPR.
+ This is a simple wrapper for c_build_shufflevector. */
+tree
+build_x_shufflevector (location_t loc, vec<tree, va_gc> *args,
+ tsubst_flags_t complain)
+{
+ tree arg0 = (*args)[0];
+ tree arg1 = (*args)[1];
+ if (processing_template_decl)
+ {
+ for (unsigned i = 0; i < args->length (); ++i)
+ if (type_dependent_expression_p ((*args)[i]))
+ {
+ tree exp = build_min_nt_call_vec (NULL, args);
+ CALL_EXPR_IFN (exp) = IFN_SHUFFLEVECTOR;
+ return exp;
+ }
+ arg0 = build_non_dependent_expr (arg0);
+ arg1 = build_non_dependent_expr (arg1);
+ /* ??? Nothing needed for the index arguments? */
+ }
+ auto_vec<tree, 16> mask;
+ for (unsigned i = 2; i < args->length (); ++i)
+ {
+ tree idx = maybe_constant_value ((*args)[i]);
+ mask.safe_push (idx);
+ }
+ tree exp = c_build_shufflevector (loc, arg0, arg1, mask, complain & tf_error);
+ if (processing_template_decl && exp != error_mark_node)
+ {
+ exp = build_min_non_dep_call_vec (exp, NULL, args);
+ CALL_EXPR_IFN (exp) = IFN_SHUFFLEVECTOR;
+ }
+ return exp;
+}
/* Return a tree for the sum or difference (RESULTCODE says which)
of pointer PTROP and integer INTOP. */
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index bfe9c21..8711745 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -11849,6 +11849,34 @@ to and from other datatypes of the same size).
You cannot operate between vectors of different lengths or different
signedness without a cast.
+@findex __builtin_shufflevector
+Vector shuffling is available using the
+@code{__builtin_shufflevector (vec1, vec2, index...)}
+function. @var{vec1} and @var{vec2} must be expressions with
+vector type with a compatible element type. The result of
+@code{__builtin_shufflevector} is a vector with the same element type
+as @var{vec1} and @var{vec2} but that has an element count equal to
+the number of indices specified.
+
+The @var{index} arguments are a list of integers that specify the
+elements indices of the first two vectors that should be extracted and
+returned in a new vector. These element indices are numbered sequentially
+starting with the first vector, continuing into the second vector.
+An index of -1 can be used to indicate that the corresponding element in
+the returned vector is a don't care and can be freely chosen to optimized
+the generated code sequence performing the shuffle operation.
+
+Consider the following example,
+@smallexample
+typedef int v4si __attribute__ ((vector_size (16)));
+typedef int v8si __attribute__ ((vector_size (32)));
+
+v8si a = @{1,-2,3,-4,5,-6,7,-8@};
+v4si b = __builtin_shufflevector (a, a, 0, 2, 4, 6); /* b is @{1,3,5,7@} */
+v4si c = @{-2,-4,-6,-8@};
+v8si d = __builtin_shufflevector (c, b, 4, 0, 5, 1, 6, 2, 7, 3); /* d is a */
+@end smallexample
+
@findex __builtin_convertvector
Vector conversion is available using the
@code{__builtin_convertvector (vec, vectype)}
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d261101..95857cc 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,32 @@
+2021-05-30 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gfortran.texi (BOZ literal constants): Fix typo.
+
+2021-05-28 Tobias Burnus <tobias@codesourcery.com>
+
+ * dump-parse-tree.c (show_iterator): New.
+ (show_omp_namelist): Handle iterators.
+ (show_omp_clauses): Handle affinity.
+ * gfortran.h (gfc_free_omp_namelist): New union with 'udr' and new 'ns'.
+ * match.c (gfc_free_omp_namelist): Add are to choose union element.
+ * openmp.c (gfc_free_omp_clauses, gfc_match_omp_detach,
+ gfc_match_omp_clause_reduction, gfc_match_omp_flush): Update
+ call to gfc_free_omp_namelist.
+ (gfc_match_omp_variable_list): Likewise; permit preceeding whitespace.
+ (enum omp_mask1): Add OMP_CLAUSE_AFFINITY.
+ (gfc_match_iterator): New.
+ (gfc_match_omp_clauses): Use it; update call to gfc_free_omp_namelist.
+ (OMP_TASK_CLAUSES): Add OMP_CLAUSE_AFFINITY.
+ (gfc_match_omp_taskwait): Match depend clause.
+ (resolve_omp_clauses): Handle affinity; update for udr/union change.
+ (gfc_resolve_omp_directive): Resolve clauses of taskwait.
+ * st.c (gfc_free_statement): Update gfc_free_omp_namelist call.
+ * trans-openmp.c (gfc_trans_omp_array_reduction_or_udr): Likewise
+ (handle_iterator): New.
+ (gfc_trans_omp_clauses): Handle iterators for depend/affinity clause.
+ (gfc_trans_omp_taskwait): Handle depend clause.
+ (gfc_trans_omp_directive): Update call.
+
2021-05-27 Harald Anlauf <anlauf@gmx.de>
PR fortran/100602
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index 60bf257..a54153b 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -1842,7 +1842,7 @@ type, then the real-literal-constant will be interpreted as a
Besides decimal constants, Fortran also supports binary (@code{b}),
octal (@code{o}) and hexadecimal (@code{z}) integer constants. The
-syntax is: @samp{prefix quote digits quote}, were the prefix is
+syntax is: @samp{prefix quote digits quote}, where the prefix is
either @code{b}, @code{o} or @code{z}, quote is either @code{'} or
@code{"} and the digits are @code{0} or @code{1} for binary,
between @code{0} and @code{7} for octal, and between @code{0} and
diff --git a/gcc/gimple-ssa-evrp.c b/gcc/gimple-ssa-evrp.c
index 118d103..f1eea20 100644
--- a/gcc/gimple-ssa-evrp.c
+++ b/gcc/gimple-ssa-evrp.c
@@ -127,7 +127,8 @@ public:
if (dump_file && (dump_flags & TDF_DETAILS))
m_ranger->dump (dump_file);
- m_ranger->export_global_ranges ();
+ // FIXME: Do not export ranges until PR100787 is fixed.
+ //m_ranger->export_global_ranges ();
disable_ranger (cfun);
}
@@ -193,7 +194,8 @@ public:
if (dump_file && (dump_flags & TDF_DETAILS))
m_ranger->dump (dump_file);
- m_ranger->export_global_ranges ();
+ // FIXME: Do not export ranges until PR100787 is fixed.
+ //m_ranger->export_global_ranges ();
disable_ranger (cfun);
}
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index d60fc95..3ca29ce 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -9014,6 +9014,7 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
lastprivate and perhaps firstprivate too on the
parallel. Similarly for #pragma omp for simd. */
struct gimplify_omp_ctx *octx = outer_ctx;
+ bool taskloop_seen = false;
decl = NULL_TREE;
do
{
@@ -9045,11 +9046,12 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
else if (octx
&& (octx->region_type & ORT_TASK) != 0
&& octx->combined_loop)
- ;
+ taskloop_seen = true;
else if (octx
&& octx->region_type == ORT_COMBINED_PARALLEL
- && ctx->region_type == ORT_WORKSHARE
- && octx == outer_ctx)
+ && ((ctx->region_type == ORT_WORKSHARE
+ && octx == outer_ctx)
+ || taskloop_seen))
flags = GOVD_SEEN | GOVD_SHARED;
else if (octx
&& ((octx->region_type & ORT_COMBINED_TEAMS)
diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c
index f06c2711..fb8b43d 100644
--- a/gcc/internal-fn.c
+++ b/gcc/internal-fn.c
@@ -4122,6 +4122,12 @@ vectorized_internal_fn_supported_p (internal_fn ifn, tree type)
}
void
+expand_SHUFFLEVECTOR (internal_fn, gcall *)
+{
+ gcc_unreachable ();
+}
+
+void
expand_PHI (internal_fn, gcall *)
{
gcc_unreachable ();
diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def
index daeace7..b2f414d 100644
--- a/gcc/internal-fn.def
+++ b/gcc/internal-fn.def
@@ -405,6 +405,9 @@ DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
/* A NOP function with arbitrary arguments and return value. */
DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
+/* Temporary vehicle for __builtin_shufflevector. */
+DEF_INTERNAL_FN (SHUFFLEVECTOR, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
+
#undef DEF_INTERNAL_INT_FN
#undef DEF_INTERNAL_FLT_FN
#undef DEF_INTERNAL_FLT_FLOATN_FN
diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h
index 5bc5660..19d0f84 100644
--- a/gcc/internal-fn.h
+++ b/gcc/internal-fn.h
@@ -233,6 +233,7 @@ extern void expand_addsub_overflow (location_t, tree_code, tree, tree, tree,
extern void expand_internal_call (gcall *);
extern void expand_internal_call (internal_fn, gcall *);
extern void expand_PHI (internal_fn, gcall *);
+extern void expand_SHUFFLEVECTOR (internal_fn, gcall *);
extern bool vectorized_internal_fn_supported_p (internal_fn, tree);
diff --git a/gcc/lto/lto-common.c b/gcc/lto/lto-common.c
index 02d16f4..bfe52a2 100644
--- a/gcc/lto/lto-common.c
+++ b/gcc/lto/lto-common.c
@@ -1235,7 +1235,7 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map)
compare_values (DECL_IS_NOVOPS);
compare_values (DECL_IS_RETURNS_TWICE);
compare_values (DECL_IS_MALLOC);
- compare_values (DECL_IS_OPERATOR_NEW_P);
+ compare_values (FUNCTION_DECL_DECL_TYPE);
compare_values (DECL_DECLARED_INLINE_P);
compare_values (DECL_STATIC_CHAIN);
compare_values (DECL_NO_INLINE_WARNING_P);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 27e5f67..f8eedd47 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,103 @@
+2021-05-29 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * gcc.dg/plugin/diagnostic_plugin_show_trees.c (plugin_init): Fix caret_max_with.
+ * gcc.dg/plugin/diagnostic_plugin_test_inlining.c
+ (plugin_init): Likewise.
+ * gcc.dg/plugin/diagnostic_plugin_test_paths.c (plugin_init): Likewise.
+ * gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
+ (plugin_init): Likewise.
+ * gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c
+ (plugin_init): Likewise.
+
+2021-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * c-c++-common/gomp/pr99928-1.c: Add default(none) to constructs
+ combined with parallel, teams or taskloop and defaultmap(none)
+ to constructs combined with target.
+ * c-c++-common/gomp/pr99928-2.c: Likewise.
+ * c-c++-common/gomp/pr99928-3.c: Likewise.
+ * c-c++-common/gomp/pr99928-4.c: Likewise.
+ * c-c++-common/gomp/pr99928-5.c: Likewise.
+ * c-c++-common/gomp/pr99928-6.c: Likewise.
+ * c-c++-common/gomp/pr99928-7.c: Likewise.
+ * c-c++-common/gomp/pr99928-8.c: Likewise.
+ * c-c++-common/gomp/pr99928-9.c: Likewise.
+ * c-c++-common/gomp/pr99928-10.c: Likewise.
+ * c-c++-common/gomp/pr99928-13.c: Likewise.
+ * c-c++-common/gomp/pr99928-14.c: Likewise.
+
+2021-05-29 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/Wstringop-overflow-55.c:
+ * gcc.dg/pr80776-1.c:
+
+2021-05-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/100778
+ * gcc.dg/vect/bb-slp-pr100778-1.c: New testcase.
+
+2021-05-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/100797
+ PR c++/95719
+ * g++.dg/inherit/virtual15.C: New test.
+ * g++.dg/inherit/virtual15a.C: New file.
+
+2021-05-28 Richard Biener <rguenther@suse.de>
+
+ PR ipa/100791
+ * gcc.dg/pr100791.c: New testcase.
+
+2021-05-28 Richard Biener <rguenther@suse.de>
+
+ PR c/100803
+ * gcc.dg/gimplefe-error-11.c: New testcase.
+
+2021-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/99928
+ * c-c++-common/gomp/pr99928-8.c: Remove all xfails.
+ * c-c++-common/gomp/pr99928-9.c: Likewise.
+ * c-c++-common/gomp/pr99928-10.c: Likewise.
+ * c-c++-common/gomp/pr99928-16.c: New test.
+
+2021-05-28 Tobias Burnus <tobias@codesourcery.com>
+
+ * c-c++-common/gomp/affinity-1.c: New test.
+ * c-c++-common/gomp/affinity-2.c: New test.
+ * c-c++-common/gomp/affinity-3.c: New test.
+ * c-c++-common/gomp/affinity-4.c: New test.
+ * c-c++-common/gomp/affinity-5.c: New test.
+ * c-c++-common/gomp/affinity-6.c: New test.
+ * c-c++-common/gomp/affinity-7.c: New test.
+ * gfortran.dg/gomp/affinity-clause-1.f90: New test.
+ * gfortran.dg/gomp/affinity-clause-2.f90: New test.
+ * gfortran.dg/gomp/affinity-clause-3.f90: New test.
+ * gfortran.dg/gomp/affinity-clause-4.f90: New test.
+ * gfortran.dg/gomp/affinity-clause-5.f90: New test.
+ * gfortran.dg/gomp/affinity-clause-6.f90: New test.
+ * gfortran.dg/gomp/depend-iterator-1.f90: New test.
+ * gfortran.dg/gomp/depend-iterator-2.f90: New test.
+ * gfortran.dg/gomp/depend-iterator-3.f90: New test.
+ * gfortran.dg/gomp/taskwait.f90: New test.
+
+2021-05-28 Joern Rennecke <joern.rennecke@riscy-ip.com>
+ Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/popcount4ll.c: Remove lp64 condition.
+ Adjust scanning pattern for !lp64.
+ * gcc.dg/tree-ssa/popcount5ll.c: Likewise.
+ * gcc.dg/tree-ssa/popcount4l.c: Adjust scanning pattern
+ for ! int32plus.
+
+2021-05-28 Kewen Lin <linkw@linux.ibm.com>
+
+ PR tree-optimization/99398
+ * gcc.target/powerpc/vec-perm-ctor-run.c: New test.
+ * gcc.target/powerpc/vec-perm-ctor.c: New test.
+ * gcc.target/powerpc/vec-perm-ctor.h: New test.
+
2021-05-27 Matthias Kretz <kretz@kde.org>
PR c++/100716
diff --git a/gcc/testsuite/c-c++-common/builtin-shufflevector-2.c b/gcc/testsuite/c-c++-common/builtin-shufflevector-2.c
new file mode 100644
index 0000000..78cec16
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/builtin-shufflevector-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+
+typedef long v4di __attribute__((vector_size(4 * sizeof (long))));
+typedef int v4si __attribute__((vector_size(4 * sizeof (int))));
+typedef int v8si __attribute__((vector_size(8 * sizeof (int))));
+
+v4si res, a, b;
+v4di resl, al, bl;
+v8si res8, a8, b8;
+void foo (void)
+{
+ res = __builtin_shufflevector (a, 0, 0, 1, 4, 5); /* { dg-error "must be vectors" } */
+ res = __builtin_shufflevector (a, b, 0, 1, 4, 5, 6); /* { dg-error "power of two" } */
+ res = __builtin_shufflevector (a, b, 0, 1, 4, 8); /* { dg-error "invalid" } */
+ res = __builtin_shufflevector (a, b, 0, 1, -4, 5); /* { dg-error "invalid" } */
+ res = __builtin_shufflevector (a, bl, 0, 1, 4, 5); /* { dg-error "same element type" } */
+ resl = __builtin_shufflevector (a, b, 0, 1, 4, 5); /* { dg-error "" } incompatible types */
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-1.c b/gcc/testsuite/c-c++-common/gomp/pr99928-1.c
index 37181fd..b4aa8dd 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-1.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-1.c
@@ -12,14 +12,14 @@ foo (void)
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*firstprivate\\(f00\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f00\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f00\\)" "gimple" } } *//* FIXME. */
- #pragma omp distribute parallel for firstprivate (f00)
+ #pragma omp distribute parallel for firstprivate (f00) default(none)
for (int i = 0; i < 64; i++)
f00++;
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*firstprivate\\(f01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f01\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f01\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f01\\)" "gimple" } } */
- #pragma omp distribute parallel for simd firstprivate (f01)
+ #pragma omp distribute parallel for simd firstprivate (f01) default(none)
for (int i = 0; i < 64; i++)
f01++;
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*firstprivate\\(f02\\)" "gimple" } } */
@@ -40,53 +40,53 @@ bar (void)
f03++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*firstprivate\\(f04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(f04\\)" "gimple" } } */
- #pragma omp master taskloop firstprivate (f04)
+ #pragma omp master taskloop firstprivate (f04) default(none)
for (int i = 0; i < 64; i++)
f04++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*firstprivate\\(f05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(f05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f05\\)" "gimple" } } */
- #pragma omp master taskloop simd firstprivate (f05)
+ #pragma omp master taskloop simd firstprivate (f05) default(none)
for (int i = 0; i < 64; i++)
f05++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f06\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f06\\)" "gimple" } } *//* FIXME. */
- #pragma omp parallel for firstprivate (f06)
+ #pragma omp parallel for firstprivate (f06) default(none)
for (int i = 0; i < 64; i++)
f06++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f07\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f07\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f07\\)" "gimple" } } */
- #pragma omp parallel for simd firstprivate (f07)
+ #pragma omp parallel for simd firstprivate (f07) default(none)
for (int i = 0; i < 64; i++)
f07++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f08\\)" "gimple" } } */
- #pragma omp parallel loop firstprivate (f08)
+ #pragma omp parallel loop firstprivate (f08) default(none)
for (int i = 0; i < 64; i++)
f08++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*firstprivate\\(f09\\)" "gimple" } } */
- #pragma omp parallel master firstprivate (f09)
+ #pragma omp parallel master firstprivate (f09) default(none)
f09++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(f10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*firstprivate\\(f10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(f10\\)" "gimple" } } */
- #pragma omp parallel master taskloop firstprivate (f10)
+ #pragma omp parallel master taskloop firstprivate (f10) default(none)
for (int i = 0; i < 64; i++)
f10++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(f11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*firstprivate\\(f11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(f11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f11\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd firstprivate (f11)
+ #pragma omp parallel master taskloop simd firstprivate (f11) default(none)
for (int i = 0; i < 64; i++)
f11++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp sections\[^\n\r]*firstprivate\\(f12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*firstprivate\\(f12\\)" "gimple" } } */
- #pragma omp parallel sections firstprivate (f12)
+ #pragma omp parallel sections firstprivate (f12) default(none)
{
f12++;
#pragma omp section
@@ -94,36 +94,36 @@ bar (void)
}
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f13\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f13\\)" "gimple" } } */
- #pragma omp target parallel firstprivate (f13)
+ #pragma omp target parallel firstprivate (f13) default(none) defaultmap(none)
f13++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f14\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f14\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f14\\)" "gimple" } } *//* FIXME. */
- #pragma omp target parallel for firstprivate (f14)
+ #pragma omp target parallel for firstprivate (f14) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f14++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f15\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f15\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f15\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f15\\)" "gimple" } } */
- #pragma omp target parallel for simd firstprivate (f15)
+ #pragma omp target parallel for simd firstprivate (f15) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f15++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f16\\)" "gimple" } } */
- #pragma omp target parallel loop firstprivate (f16)
+ #pragma omp target parallel loop firstprivate (f16) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f16++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f17\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f17\\)" "gimple" } } */
- #pragma omp target teams firstprivate (f17)
+ #pragma omp target teams firstprivate (f17) default(none) defaultmap(none)
f17++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f18\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f18\\)" "gimple" } } *//* FIXME: This should be on distribute instead. */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*firstprivate\\(f18\\)" "gimple" } } *//* FIXME. */
- #pragma omp target teams distribute firstprivate (f18)
+ #pragma omp target teams distribute firstprivate (f18) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f18++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f19\\)" "gimple" } } */
@@ -131,7 +131,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*firstprivate\\(f19\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f19\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f19\\)" "gimple" } } *//* FIXME. */
- #pragma omp target teams distribute parallel for firstprivate (f19)
+ #pragma omp target teams distribute parallel for firstprivate (f19) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f19++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f20\\)" "gimple" } } */
@@ -140,14 +140,14 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f20\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f20\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f20\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd firstprivate (f20)
+ #pragma omp target teams distribute parallel for simd firstprivate (f20) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f20++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f21\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f21\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*firstprivate\\(f21\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f21\\)" "gimple" } } */
- #pragma omp target teams distribute simd firstprivate (f21)
+ #pragma omp target teams distribute simd firstprivate (f21) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f21++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f22\\)" "gimple" } } */
@@ -156,29 +156,29 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(f22\\)" "gimple" } } *//* NOTE: This is an implementation detail. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f22\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f22\\)" "gimple" } } */
- #pragma omp target teams loop firstprivate (f22)
+ #pragma omp target teams loop firstprivate (f22) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
f22++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*firstprivate\\(f23\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f23\\)" "gimple" } } */
- #pragma omp target simd firstprivate (f23)
+ #pragma omp target simd firstprivate (f23) defaultmap(none)
for (int i = 0; i < 64; i++)
f23++;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(f24\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f24\\)" "gimple" } } */
- #pragma omp taskloop simd firstprivate (f24)
+ #pragma omp taskloop simd firstprivate (f24) default(none)
for (int i = 0; i < 64; i++)
f24++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f25\\)" "gimple" } } *//* FIXME: This should be on distribute instead. */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*firstprivate\\(f25\\)" "gimple" } } *//* FIXME. */
- #pragma omp teams distribute firstprivate (f25)
+ #pragma omp teams distribute firstprivate (f25) default(none)
for (int i = 0; i < 64; i++)
f25++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f26\\)" "gimple" } } *//* FIXME: This should be on distribute instead. */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*firstprivate\\(f26\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f26\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f26\\)" "gimple" } } *//* FIXME. */
- #pragma omp teams distribute parallel for firstprivate (f26)
+ #pragma omp teams distribute parallel for firstprivate (f26) default(none)
for (int i = 0; i < 64; i++)
f26++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f27\\)" "gimple" } } *//* FIXME: This should be on for instead. */
@@ -186,13 +186,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(f27\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f27\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f27\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd firstprivate (f27)
+ #pragma omp teams distribute parallel for simd firstprivate (f27) default(none)
for (int i = 0; i < 64; i++)
f27++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f28\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*firstprivate\\(f28\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f28\\)" "gimple" } } */
- #pragma omp teams distribute simd firstprivate (f28)
+ #pragma omp teams distribute simd firstprivate (f28) default(none)
for (int i = 0; i < 64; i++)
f28++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(f29\\)" "gimple" } } */
@@ -200,7 +200,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(f29\\)" "gimple" } } *//* NOTE: This is an implementation detail. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(f29\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(f29\\)" "gimple" } } */
- #pragma omp teams loop firstprivate (f29)
+ #pragma omp teams loop firstprivate (f29) default(none)
for (int i = 0; i < 64; i++)
f29++;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-10.c b/gcc/testsuite/c-c++-common/gomp/pr99928-10.c
index 6c44600..4366863 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-10.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-10.c
@@ -13,14 +13,14 @@ foo (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r00 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r00 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r00 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp distribute parallel for reduction(+:r00[1:2])
+ #pragma omp distribute parallel for reduction(+:r00[1:2]) default(none)
for (int i = 0; i < 64; i++)
r00[1]++;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r01 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r01 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r01 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r01 \\+ 4" "gimple" } } */
- #pragma omp distribute parallel for simd reduction(+:r01[1:3])
+ #pragma omp distribute parallel for simd reduction(+:r01[1:3]) default(none)
for (int i = 0; i < 64; i++)
r01[1]++;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r02 \\+ 4" "gimple" } } */
@@ -43,53 +43,53 @@ bar (void)
r03[1]++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r04 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r04 \\+ 4" "gimple" } } */
- #pragma omp master taskloop reduction(+:r04[1:6])
+ #pragma omp master taskloop reduction(+:r04[1:6]) default(none)
for (int i = 0; i < 64; i++)
r04[1]++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r05 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r05 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r05 \\+ 4" "gimple" } } */
- #pragma omp master taskloop simd reduction(+:r05[1:7])
+ #pragma omp master taskloop simd reduction(+:r05[1:7]) default(none)
for (int i = 0; i < 64; i++)
r05[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r06 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r06 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp parallel for reduction(+:r06[1:8])
+ #pragma omp parallel for reduction(+:r06[1:8]) default(none)
for (int i = 0; i < 64; i++)
r06[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r07 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r07 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r07 \\+ 4" "gimple" } } */
- #pragma omp parallel for simd reduction(+:r07[1:9])
+ #pragma omp parallel for simd reduction(+:r07[1:9]) default(none)
for (int i = 0; i < 64; i++)
r07[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(r08\\)" "gimple" } } *//* FIXME: Should be shared, but firstprivate is an optimization. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r08 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r08 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp parallel loop reduction(+:r08[1:10])
+ #pragma omp parallel loop reduction(+:r08[1:10]) default(none)
for (int i = 0; i < 64; i++)
r08[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r09 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r09 \\+ 4" "gimple" } } */
- #pragma omp parallel master reduction(+:r09[1:11])
+ #pragma omp parallel master reduction(+:r09[1:11]) default(none)
r09[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(r10\\)" "gimple" } } *//* FIXME: Should be shared, but firstprivate is an optimization. */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r10 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r10 \\+ 4" "gimple" } } */
- #pragma omp parallel master taskloop reduction(+:r10[1:12])
+ #pragma omp parallel master taskloop reduction(+:r10[1:12]) default(none)
for (int i = 0; i < 64; i++)
r10[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(r11\\)" "gimple" } } *//* FIXME: Should be shared, but firstprivate is an optimization. */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r11 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r11 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r11 \\+ 4" "gimple" } } */
- #pragma omp parallel master taskloop simd reduction(+:r11[1:13])
+ #pragma omp parallel master taskloop simd reduction(+:r11[1:13]) default(none)
for (int i = 0; i < 64; i++)
r11[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r12 \\+ 4" "gimple" } } *//* FIXME: This should be on sections instead. */
/* { dg-final { scan-tree-dump-not "omp sections\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r12 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r12 \\+ 4" "gimple" } } */
- #pragma omp parallel sections reduction(+:r12[1:14])
+ #pragma omp parallel sections reduction(+:r12[1:14]) default(none)
{
r12[1]++;
#pragma omp section
@@ -99,14 +99,14 @@ bar (void)
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(firstprivate:r13 \\\[pointer assign, bias: 4\\\]\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r13\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r13 \\+ 4" "gimple" } } */
- #pragma omp target parallel reduction(+:r13[1:15])
+ #pragma omp target parallel reduction(+:r13[1:15]) default(none) defaultmap(none)
r13[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 64\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(firstprivate:r14 \\\[pointer assign, bias: 4\\\]\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r14" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r14 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r14 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp target parallel for reduction(+:r14[1:16])
+ #pragma omp target parallel for reduction(+:r14[1:16]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r14[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 68\\\]" "gimple" } } */
@@ -115,7 +115,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r15 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r15 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r15 \\+ 4" "gimple" } } */
- #pragma omp target parallel for simd reduction(+:r15[1:17])
+ #pragma omp target parallel for simd reduction(+:r15[1:17]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r15[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 72\\\]" "gimple" } } */
@@ -124,21 +124,21 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(r16\\)" "gimple" } } *//* FIXME: Should be shared, but firstprivate is an optimization. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r16 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r16 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target parallel loop reduction(+:r16[1:18])
+ #pragma omp target parallel loop reduction(+:r16[1:18]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r16[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 76\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(firstprivate:r17 \\\[pointer assign, bias: 4\\\]\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r17\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r17 \\+ 4" "gimple" } } */
- #pragma omp target teams reduction(+:r17[1:19])
+ #pragma omp target teams reduction(+:r17[1:19]) default(none) defaultmap(none)
r17[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 80\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(firstprivate:r18 \\\[pointer assign, bias: 4\\\]\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r18\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r18 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r18 \\+ 4" "gimple" } } */
- #pragma omp target teams distribute reduction(+:r18[1:20])
+ #pragma omp target teams distribute reduction(+:r18[1:20]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r18[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 84\\\]" "gimple" } } */
@@ -148,7 +148,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r19 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r19 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r19 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp target teams distribute parallel for reduction(+:r19[1:21])
+ #pragma omp target teams distribute parallel for reduction(+:r19[1:21]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r19[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 88\\\]" "gimple" } } */
@@ -159,7 +159,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r20 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r20 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r20 \\+ 4" "gimple" } } */
- #pragma omp target teams distribute parallel for simd reduction(+:r20[1:22])
+ #pragma omp target teams distribute parallel for simd reduction(+:r20[1:22]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r20[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 92\\\]" "gimple" } } */
@@ -168,7 +168,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r21 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r21 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r21 \\+ 4" "gimple" } } */
- #pragma omp target teams distribute simd reduction(+:r21[1:23])
+ #pragma omp target teams distribute simd reduction(+:r21[1:23]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r21[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 96\\\]" "gimple" } } */
@@ -179,31 +179,31 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(r22\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r22 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r22 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target teams loop reduction(+:r22[1:24])
+ #pragma omp target teams loop reduction(+:r22[1:24]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r22[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:\\\*_\[0-9]* \\\[len: 100\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(firstprivate:r23 \\\[pointer assign, bias: 4\\\]\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r23\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r23 \\+ 4" "gimple" } } */
- #pragma omp target simd reduction(+:r23[1:25])
+ #pragma omp target simd reduction(+:r23[1:25]) defaultmap(none)
for (int i = 0; i < 64; i++)
r23[1]++;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r24 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r24 \\+ 4" "gimple" } } */
- #pragma omp taskloop simd reduction(+:r24[1:26])
+ #pragma omp taskloop simd reduction(+:r24[1:26]) default(none)
for (int i = 0; i < 64; i++)
r24[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r25 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r25 \\+ 4" "gimple" } } */
- #pragma omp teams distribute reduction(+:r25[1:27])
+ #pragma omp teams distribute reduction(+:r25[1:27]) default(none)
for (int i = 0; i < 64; i++)
r25[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r26 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r26 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r26 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r26 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp teams distribute parallel for reduction(+:r26[1:28])
+ #pragma omp teams distribute parallel for reduction(+:r26[1:28]) default(none)
for (int i = 0; i < 64; i++)
r26[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r27 \\+ 4" "gimple" } } */
@@ -211,13 +211,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r27 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r27 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r27 \\+ 4" "gimple" } } */
- #pragma omp teams distribute parallel for simd reduction(+:r27[1:29])
+ #pragma omp teams distribute parallel for simd reduction(+:r27[1:29]) default(none)
for (int i = 0; i < 64; i++)
r27[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r28 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r28 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r28 \\+ 4" "gimple" } } */
- #pragma omp teams distribute simd reduction(+:r28[1:30])
+ #pragma omp teams distribute simd reduction(+:r28[1:30]) default(none)
for (int i = 0; i < 64; i++)
r28[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*firstprivate\\(r29\\)" "gimple" } } *//* FIXME: Should be shared, but firstprivate is an optimization. */
@@ -225,7 +225,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(r29\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r29 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*\\)r29 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp teams loop reduction(+:r29[1:31])
+ #pragma omp teams loop reduction(+:r29[1:31]) default(none)
for (int i = 0; i < 64; i++)
r29[1]++;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-13.c b/gcc/testsuite/c-c++-common/gomp/pr99928-13.c
index d5d8d78..d45417f 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-13.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-13.c
@@ -16,7 +16,7 @@ foo (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j00b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } */
- #pragma omp distribute parallel for simd collapse(2) lastprivate (j00a, j00b)
+ #pragma omp distribute parallel for simd collapse(2) lastprivate (j00a, j00b) default(none)
for (j00a = 0; j00a < 64; j00a++)
for (j00b = 0; j00b < 4; j00b++)
;
@@ -50,7 +50,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j03b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
- #pragma omp master taskloop simd collapse(2) lastprivate (j03a, j03b)
+ #pragma omp master taskloop simd collapse(2) lastprivate (j03a, j03b) default(none)
for (j03a = 0; j03a < 64; j03a++)
for (j03b = 0; j03b < 4; j03b++)
;
@@ -60,7 +60,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j04b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } */
- #pragma omp parallel for simd collapse(2) lastprivate (j04a, j04b)
+ #pragma omp parallel for simd collapse(2) lastprivate (j04a, j04b) default(none)
for (j04a = 0; j04a < 64; j04a++)
for (j04b = 0; j04b < 4; j04b++)
;
@@ -74,7 +74,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j05b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd collapse(2) lastprivate (j05a, j05b)
+ #pragma omp parallel master taskloop simd collapse(2) lastprivate (j05a, j05b) default(none)
for (j05a = 0; j05a < 64; j05a++)
for (j05b = 0; j05b < 4; j05b++)
;
@@ -88,7 +88,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j06b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } */
- #pragma omp target parallel for simd collapse(2) lastprivate (j06a, j06b)
+ #pragma omp target parallel for simd collapse(2) lastprivate (j06a, j06b) default(none) defaultmap(none)
for (j06a = 0; j06a < 64; j06a++)
for (j06b = 0; j06b < 4; j06b++)
;
@@ -98,7 +98,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j07b" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j07b\\)" "gimple" } } */
- #pragma omp target simd collapse(2) lastprivate (j07a, j07b)
+ #pragma omp target simd collapse(2) lastprivate (j07a, j07b) defaultmap(none)
for (j07a = 0; j07a < 64; j07a++)
for (j07b = 0; j07b < 4; j07b++)
;
@@ -116,7 +116,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j08b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd collapse(2) lastprivate (j08a, j08b)
+ #pragma omp target teams distribute parallel for simd collapse(2) lastprivate (j08a, j08b) default(none) defaultmap(none)
for (j08a = 0; j08a < 64; j08a++)
for (j08b = 0; j08b < 4; j08b++)
;
@@ -130,7 +130,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j09b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j09b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j09b\\)" "gimple" } } */
- #pragma omp target teams distribute simd collapse(2) lastprivate (j09a, j09b)
+ #pragma omp target teams distribute simd collapse(2) lastprivate (j09a, j09b) default(none) defaultmap(none)
for (j09a = 0; j09a < 64; j09a++)
for (j09b = 0; j09b < 4; j09b++)
;
@@ -140,7 +140,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j10b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j10b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j10b\\)" "gimple" } } */
- #pragma omp taskloop simd collapse(2) lastprivate (j10a, j10b)
+ #pragma omp taskloop simd collapse(2) lastprivate (j10a, j10b) default(none)
for (j10a = 0; j10a < 64; j10a++)
for (j10b = 0; j10b < 4; j10b++)
;
@@ -154,7 +154,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j11b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd collapse(2) lastprivate (j11a, j11b)
+ #pragma omp teams distribute parallel for simd collapse(2) lastprivate (j11a, j11b) default(none)
for (j11a = 0; j11a < 64; j11a++)
for (j11b = 0; j11b < 4; j11b++)
;
@@ -164,7 +164,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j12b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j12b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j12b\\)" "gimple" } } */
- #pragma omp teams distribute simd collapse(2) lastprivate (j12a, j12b)
+ #pragma omp teams distribute simd collapse(2) lastprivate (j12a, j12b) default(none)
for (j12a = 0; j12a < 64; j12a++)
for (j12b = 0; j12b < 4; j12b++)
;
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-14.c b/gcc/testsuite/c-c++-common/gomp/pr99928-14.c
index 2d9e0be..2df7891 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-14.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-14.c
@@ -16,7 +16,7 @@ foo (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j00b\\)" "gimple" } } */
- #pragma omp distribute parallel for simd collapse(2)
+ #pragma omp distribute parallel for simd collapse(2) default(none)
for (j00a = 0; j00a < 64; j00a++)
for (j00b = 0; j00b < 4; j00b++)
;
@@ -50,7 +50,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j03b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j03b\\)" "gimple" } } */
- #pragma omp master taskloop simd collapse(2)
+ #pragma omp master taskloop simd collapse(2) default(none)
for (j03a = 0; j03a < 64; j03a++)
for (j03b = 0; j03b < 4; j03b++)
;
@@ -60,7 +60,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j04b\\)" "gimple" } } */
- #pragma omp parallel for simd collapse(2)
+ #pragma omp parallel for simd collapse(2) default(none)
for (j04a = 0; j04a < 64; j04a++)
for (j04b = 0; j04b < 4; j04b++)
;
@@ -74,7 +74,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j05b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j05b\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd collapse(2)
+ #pragma omp parallel master taskloop simd collapse(2) default(none)
for (j05a = 0; j05a < 64; j05a++)
for (j05b = 0; j05b < 4; j05b++)
;
@@ -88,7 +88,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j06b\\)" "gimple" } } */
- #pragma omp target parallel for simd collapse(2)
+ #pragma omp target parallel for simd collapse(2) default(none) defaultmap(none)
for (j06a = 0; j06a < 64; j06a++)
for (j06b = 0; j06b < 4; j06b++)
;
@@ -98,7 +98,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j07b" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j07b\\)" "gimple" } } */
- #pragma omp target simd collapse(2)
+ #pragma omp target simd collapse(2) defaultmap(none)
for (j07a = 0; j07a < 64; j07a++)
for (j07b = 0; j07b < 4; j07b++)
;
@@ -116,7 +116,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j08b\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd collapse(2)
+ #pragma omp target teams distribute parallel for simd collapse(2) default(none) defaultmap(none)
for (j08a = 0; j08a < 64; j08a++)
for (j08b = 0; j08b < 4; j08b++)
;
@@ -130,7 +130,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j09b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j09b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j09b\\)" "gimple" } } */
- #pragma omp target teams distribute simd collapse(2)
+ #pragma omp target teams distribute simd collapse(2) default(none) defaultmap(none)
for (j09a = 0; j09a < 64; j09a++)
for (j09b = 0; j09b < 4; j09b++)
;
@@ -140,7 +140,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j10b\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j10b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j10b\\)" "gimple" } } */
- #pragma omp taskloop simd collapse(2)
+ #pragma omp taskloop simd collapse(2) default(none)
for (j10a = 0; j10a < 64; j10a++)
for (j10b = 0; j10b < 4; j10b++)
;
@@ -154,7 +154,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j11b\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd collapse(2)
+ #pragma omp teams distribute parallel for simd collapse(2) default(none)
for (j11a = 0; j11a < 64; j11a++)
for (j11b = 0; j11b < 4; j11b++)
;
@@ -164,7 +164,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j12b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j12b\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j12b\\)" "gimple" } } */
- #pragma omp teams distribute simd collapse(2)
+ #pragma omp teams distribute simd collapse(2) default(none)
for (j12a = 0; j12a < 64; j12a++)
for (j12b = 0; j12b < 4; j12b++)
;
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-2.c b/gcc/testsuite/c-c++-common/gomp/pr99928-2.c
index 6ba3d46..1af9bd2 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-2.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-2.c
@@ -11,14 +11,14 @@ foo (void)
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l00\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l00\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l00\\)" "gimple" } } *//* FIXME. */
- #pragma omp distribute parallel for lastprivate (l00)
+ #pragma omp distribute parallel for lastprivate (l00) default(none)
for (int i = 0; i < 64; i++)
l00 = i;
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } */
- #pragma omp distribute parallel for simd lastprivate (l01)
+ #pragma omp distribute parallel for simd lastprivate (l01) default(none)
for (int i = 0; i < 64; i++)
l01 = i;
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l02\\)" "gimple" } } */
@@ -41,38 +41,38 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(l04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(l04\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l04\\)" "gimple" } } */
- #pragma omp master taskloop lastprivate (l04)
+ #pragma omp master taskloop lastprivate (l04) default(none)
for (int i = 0; i < 64; i++)
l04 = i;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(l05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(l05\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l05\\)" "gimple" } } */
- #pragma omp master taskloop simd lastprivate (l05)
+ #pragma omp master taskloop simd lastprivate (l05) default(none)
for (int i = 0; i < 64; i++)
l05 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l06\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l06\\)" "gimple" } } *//* FIXME. */
- #pragma omp parallel for lastprivate (l06)
+ #pragma omp parallel for lastprivate (l06) default(none)
for (int i = 0; i < 64; i++)
l06 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l07\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l07\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l07\\)" "gimple" } } */
- #pragma omp parallel for simd lastprivate (l07)
+ #pragma omp parallel for simd lastprivate (l07) default(none)
for (int i = 0; i < 64; i++)
l07 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j00\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp parallel loop lastprivate (j00)
+ #pragma omp parallel loop lastprivate (j00) default(none)
for (j00 = 0; j00 < 64; j00++)
;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(l08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(l08\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l08\\)" "gimple" } } */
- #pragma omp parallel master taskloop lastprivate (l08)
+ #pragma omp parallel master taskloop lastprivate (l08) default(none)
for (int i = 0; i < 64; i++)
l08 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l09\\)" "gimple" } } */
@@ -80,13 +80,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(l09\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l09\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd lastprivate (l09)
+ #pragma omp parallel master taskloop simd lastprivate (l09) default(none)
for (int i = 0; i < 64; i++)
l09 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l10\\)" "gimple" } } *//* FIXME: This should be on sections instead. */
/* { dg-final { scan-tree-dump-not "omp sections\[^\n\r]*lastprivate\\(l10\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*lastprivate\\(l10\\)" "gimple" } } */
- #pragma omp parallel sections lastprivate (l10)
+ #pragma omp parallel sections lastprivate (l10) default(none)
{
l10 = 1;
#pragma omp section
@@ -96,7 +96,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(l11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l11\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l11\\)" "gimple" } } *//* FIXME. */
- #pragma omp target parallel for lastprivate (l11)
+ #pragma omp target parallel for lastprivate (l11) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l11 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l12" "gimple" } } */
@@ -104,7 +104,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l12\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l12\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l12\\)" "gimple" } } */
- #pragma omp target parallel for simd lastprivate (l12)
+ #pragma omp target parallel for simd lastprivate (l12) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l12 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j01" "gimple" } } */
@@ -112,14 +112,14 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j01\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j01\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target parallel loop lastprivate (j01)
+ #pragma omp target parallel loop lastprivate (j01) default(none) defaultmap(none)
for (j01 = 0; j01 < 64; j01++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l13" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(l13\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(l13\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l13\\)" "gimple" } } */
- #pragma omp target teams distribute lastprivate (l13)
+ #pragma omp target teams distribute lastprivate (l13) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l13 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l14" "gimple" } } */
@@ -128,7 +128,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l14\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l14\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l14\\)" "gimple" } } *//* FIXME. */
- #pragma omp target teams distribute parallel for lastprivate (l14)
+ #pragma omp target teams distribute parallel for lastprivate (l14) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l14 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l15" "gimple" } } */
@@ -138,7 +138,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l15\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l15\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l15\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd lastprivate (l15)
+ #pragma omp target teams distribute parallel for simd lastprivate (l15) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l15 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l16" "gimple" } } */
@@ -146,7 +146,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(l16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l16\\)" "gimple" } } */
- #pragma omp target teams distribute simd lastprivate (l16)
+ #pragma omp target teams distribute simd lastprivate (l16) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l16 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j02" "gimple" } } */
@@ -156,31 +156,31 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j02\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j02\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j02\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target teams loop lastprivate (j02)
+ #pragma omp target teams loop lastprivate (j02) default(none) defaultmap(none)
for (j02 = 0; j02 < 64; j02++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l17" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(l17\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l17\\)" "gimple" } } */
- #pragma omp target simd lastprivate (l17)
+ #pragma omp target simd lastprivate (l17) defaultmap(none)
for (int i = 0; i < 64; i++)
l17 = i;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(l18\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l18\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l18\\)" "gimple" } } */
- #pragma omp taskloop simd lastprivate (l18)
+ #pragma omp taskloop simd lastprivate (l18) default(none)
for (int i = 0; i < 64; i++)
l18 = i;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(l19\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l19\\)" "gimple" } } */
- #pragma omp teams distribute lastprivate (l19)
+ #pragma omp teams distribute lastprivate (l19) default(none)
for (int i = 0; i < 64; i++)
l19 = i;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(l20\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l20\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l20\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l20\\)" "gimple" } } *//* FIXME. */
- #pragma omp teams distribute parallel for lastprivate (l20)
+ #pragma omp teams distribute parallel for lastprivate (l20) default(none)
for (int i = 0; i < 64; i++)
l20 = i;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(l21\\)" "gimple" } } */
@@ -188,13 +188,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l21\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l21\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l21\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd lastprivate (l21)
+ #pragma omp teams distribute parallel for simd lastprivate (l21) default(none)
for (int i = 0; i < 64; i++)
l21 = i;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(l22\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(l22\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l22\\)" "gimple" } } */
- #pragma omp teams distribute simd lastprivate (l22)
+ #pragma omp teams distribute simd lastprivate (l22) default(none)
for (int i = 0; i < 64; i++)
l22 = i;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j03\\)" "gimple" } } */
@@ -202,7 +202,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j03\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*lastprivate\\(j03\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(j03\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp teams loop lastprivate (j03)
+ #pragma omp teams loop lastprivate (j03) default(none)
for (j03 = 0; j03 < 64; j03++)
;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-3.c b/gcc/testsuite/c-c++-common/gomp/pr99928-3.c
index cf9c72d..8e8cf93 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-3.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-3.c
@@ -20,7 +20,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(l01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } */
- #pragma omp master taskloop firstprivate (l01) lastprivate (l01)
+ #pragma omp master taskloop firstprivate (l01) lastprivate (l01) default(none)
for (int i = 0; i < 64; i++)
l01 = i;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*firstprivate\\(l02\\)" "gimple" } } */
@@ -29,14 +29,14 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l02\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(l02\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l02\\)" "gimple" } } */
- #pragma omp master taskloop simd firstprivate (l02) lastprivate (l02)
+ #pragma omp master taskloop simd firstprivate (l02) lastprivate (l02) default(none)
for (int i = 0; i < 64; i++)
l02 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(l03\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l03\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(l03\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l03\\)" "gimple" } } *//* FIXME. */
- #pragma omp parallel for firstprivate (l03) lastprivate (l03)
+ #pragma omp parallel for firstprivate (l03) lastprivate (l03) default(none)
for (int i = 0; i < 64; i++)
l03 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(l04\\)" "gimple" } } *//* FIXME: This should be on for instead. */
@@ -45,7 +45,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l04\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(l04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l04\\)" "gimple" } } */
- #pragma omp parallel for simd firstprivate (l04) lastprivate (l04)
+ #pragma omp parallel for simd firstprivate (l04) lastprivate (l04) default(none)
for (int i = 0; i < 64; i++)
l04 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l05\\)" "gimple" } } */
@@ -53,7 +53,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(l05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(l05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l05\\)" "gimple" } } */
- #pragma omp parallel master taskloop firstprivate (l05) lastprivate (l05)
+ #pragma omp parallel master taskloop firstprivate (l05) lastprivate (l05) default(none)
for (int i = 0; i < 64; i++)
l05 = i;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l06\\)" "gimple" } } */
@@ -63,7 +63,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l06\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(l06\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l06\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd firstprivate (l06) lastprivate (l06)
+ #pragma omp parallel master taskloop simd firstprivate (l06) lastprivate (l06) default(none)
for (int i = 0; i < 64; i++)
l06 = i;
/* FIXME: OpenMP 5.0/5.1 broken here, conceptually it should be shared on parallel and
@@ -76,7 +76,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp sections\[^\n\r]*lastprivate\\(l07\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*firstprivate\\(l07\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*lastprivate\\(l07\\)" "gimple" } } */
- #pragma omp parallel sections firstprivate (l07) lastprivate (l07)
+ #pragma omp parallel sections firstprivate (l07) lastprivate (l07) default(none)
{
l07 = 1;
#pragma omp section
@@ -88,7 +88,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(l08\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(l08\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l08\\)" "gimple" } } *//* FIXME. */
- #pragma omp target parallel for firstprivate (l08) lastprivate (l08)
+ #pragma omp target parallel for firstprivate (l08) lastprivate (l08) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l08 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l09" "gimple" } } */
@@ -99,21 +99,21 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l09\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(l09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l09\\)" "gimple" } } */
- #pragma omp target parallel for simd firstprivate (l09) lastprivate (l09)
+ #pragma omp target parallel for simd firstprivate (l09) lastprivate (l09) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l09 = i;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l10" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(l10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(l10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l10\\)" "gimple" } } */
- #pragma omp target simd firstprivate (l10) lastprivate (l10)
+ #pragma omp target simd firstprivate (l10) lastprivate (l10) defaultmap(none)
for (int i = 0; i < 64; i++)
l10 = i;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(l11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp simd\[^\n\r]*firstprivate\\(l11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*lastprivate\\(l11\\)" "gimple" } } */
- #pragma omp taskloop simd firstprivate (l11) lastprivate (l11)
+ #pragma omp taskloop simd firstprivate (l11) lastprivate (l11) default(none)
for (int i = 0; i < 64; i++)
l11 = i;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-4.c b/gcc/testsuite/c-c++-common/gomp/pr99928-4.c
index f35e734..915a865 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-4.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-4.c
@@ -19,12 +19,12 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(l01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(l01:1\\)" "gimple" } } */
- #pragma omp master taskloop simd linear (l01)
+ #pragma omp master taskloop simd linear (l01) default(none)
for (int i = 0; i < 64; i++)
l01++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l02\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*linear\\(l02:1\\)" "gimple" } } */
- #pragma omp parallel for linear (l02)
+ #pragma omp parallel for linear (l02) default(none)
for (int i = 0; i < 64; i++)
l02++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*firstprivate\\(l03\\)" "gimple" } } *//* FIXME: This should be on for instead. */
@@ -32,7 +32,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(l03\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l03\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(l03:1\\)" "gimple" } } */
- #pragma omp parallel for simd linear (l03)
+ #pragma omp parallel for simd linear (l03) default(none)
for (int i = 0; i < 64; i++)
l03++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l04\\)" "gimple" } } */
@@ -41,14 +41,14 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(l04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(l04:1\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd linear (l04)
+ #pragma omp parallel master taskloop simd linear (l04) default(none)
for (int i = 0; i < 64; i++)
l04++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l05" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(l05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(l05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*linear\\(l05:1\\)" "gimple" } } */
- #pragma omp target parallel for linear (l05)
+ #pragma omp target parallel for linear (l05) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l05++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l06" "gimple" } } */
@@ -58,19 +58,19 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*firstprivate\\(l06\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(l06\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(l06:1\\)" "gimple" } } */
- #pragma omp target parallel for simd linear (l06)
+ #pragma omp target parallel for simd linear (l06) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
l06++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:l07" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(l07\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(l07:1\\)" "gimple" } } */
- #pragma omp target simd linear (l07)
+ #pragma omp target simd linear (l07) defaultmap(none)
for (int i = 0; i < 64; i++)
l07++;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*firstprivate\\(l08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(l08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(l08:1\\)" "gimple" } } */
- #pragma omp taskloop simd linear (l08)
+ #pragma omp taskloop simd linear (l08) default(none)
for (int i = 0; i < 64; i++)
l08++;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-5.c b/gcc/testsuite/c-c++-common/gomp/pr99928-5.c
index 7405188..26da0ac 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-5.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-5.c
@@ -12,7 +12,7 @@ foo (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j00:1\\)" "gimple" } } */
- #pragma omp distribute parallel for simd linear (j00)
+ #pragma omp distribute parallel for simd linear (j00) default(none)
for (j00 = 0; j00 < 64; j00++)
;
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j01\\)" "gimple" } } */
@@ -35,13 +35,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j03\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j03\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j03:1\\)" "gimple" } } */
- #pragma omp master taskloop simd linear (j03)
+ #pragma omp master taskloop simd linear (j03) default(none)
for (j03 = 0; j03 < 64; j03++)
;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j04\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j04\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j04:1\\)" "gimple" } } */
- #pragma omp parallel for simd linear (j04)
+ #pragma omp parallel for simd linear (j04) default(none)
for (j04 = 0; j04 < 64; j04++)
;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j05\\)" "gimple" } } */
@@ -49,7 +49,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j05\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j05:1\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd linear (j05)
+ #pragma omp parallel master taskloop simd linear (j05) default(none)
for (j05 = 0; j05 < 64; j05++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j06" "gimple" } } */
@@ -57,13 +57,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j06\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j06\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j06:1\\)" "gimple" } } */
- #pragma omp target parallel for simd linear (j06)
+ #pragma omp target parallel for simd linear (j06) default(none) defaultmap(none)
for (j06 = 0; j06 < 64; j06++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j07" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j07:1\\)" "gimple" } } */
- #pragma omp target simd linear (j07)
+ #pragma omp target simd linear (j07) defaultmap(none)
for (j07 = 0; j07 < 64; j07++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j08" "gimple" } } */
@@ -73,7 +73,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j08\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j08\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j08:1\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd linear (j08)
+ #pragma omp target teams distribute parallel for simd linear (j08) default(none) defaultmap(none)
for (j08 = 0; j08 < 64; j08++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j09" "gimple" } } */
@@ -81,13 +81,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j09:1\\)" "gimple" } } */
- #pragma omp target teams distribute simd linear (j09)
+ #pragma omp target teams distribute simd linear (j09) default(none) defaultmap(none)
for (j09 = 0; j09 < 64; j09++)
;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j10\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j10:1\\)" "gimple" } } */
- #pragma omp taskloop simd linear (j10)
+ #pragma omp taskloop simd linear (j10) default(none)
for (j10 = 0; j10 < 64; j10++)
;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j11\\)" "gimple" } } */
@@ -95,13 +95,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j11\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j11\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j11:1\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd linear (j11)
+ #pragma omp teams distribute parallel for simd linear (j11) default(none)
for (j11 = 0; j11 < 64; j11++)
;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j12:1\\)" "gimple" } } */
- #pragma omp teams distribute simd linear (j12)
+ #pragma omp teams distribute simd linear (j12) default(none)
for (j12 = 0; j12 < 64; j12++)
;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-6.c b/gcc/testsuite/c-c++-common/gomp/pr99928-6.c
index 918a97e..d37587c 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-6.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-6.c
@@ -12,7 +12,7 @@ foo (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j00:1\\)" "gimple" } } */
- #pragma omp distribute parallel for simd
+ #pragma omp distribute parallel for simd default(none)
for (j00 = 0; j00 < 64; j00++)
;
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j01\\)" "gimple" } } */
@@ -35,13 +35,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j03\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j03\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j03:1\\)" "gimple" } } */
- #pragma omp master taskloop simd
+ #pragma omp master taskloop simd default(none)
for (j03 = 0; j03 < 64; j03++)
;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j04\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j04\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j04:1\\)" "gimple" } } */
- #pragma omp parallel for simd
+ #pragma omp parallel for simd default(none)
for (j04 = 0; j04 < 64; j04++)
;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(j05\\)" "gimple" } } */
@@ -49,7 +49,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j05\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j05:1\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd
+ #pragma omp parallel master taskloop simd default(none)
for (j05 = 0; j05 < 64; j05++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j06" "gimple" } } */
@@ -57,13 +57,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j06\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j06\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j06:1\\)" "gimple" } } */
- #pragma omp target parallel for simd
+ #pragma omp target parallel for simd default(none) defaultmap(none)
for (j06 = 0; j06 < 64; j06++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j07" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j07:1\\)" "gimple" } } */
- #pragma omp target simd
+ #pragma omp target simd defaultmap(none)
for (j07 = 0; j07 < 64; j07++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j08" "gimple" } } */
@@ -73,7 +73,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j08\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j08\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j08:1\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd
+ #pragma omp target teams distribute parallel for simd default(none) defaultmap(none)
for (j08 = 0; j08 < 64; j08++)
;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:j09" "gimple" } } */
@@ -81,13 +81,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j09:1\\)" "gimple" } } */
- #pragma omp target teams distribute simd
+ #pragma omp target teams distribute simd default(none) defaultmap(none)
for (j09 = 0; j09 < 64; j09++)
;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*shared\\(j10\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*lastprivate\\(j10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j10:1\\)" "gimple" } } */
- #pragma omp taskloop simd
+ #pragma omp taskloop simd default(none)
for (j10 = 0; j10 < 64; j10++)
;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j11\\)" "gimple" } } */
@@ -95,13 +95,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*lastprivate\\(j11\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j11\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j11:1\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd
+ #pragma omp teams distribute parallel for simd default(none)
for (j11 = 0; j11 < 64; j11++)
;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(j12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp distribute\[^\n\r]*lastprivate\\(j12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j12:1\\)" "gimple" } } */
- #pragma omp teams distribute simd
+ #pragma omp teams distribute simd default(none)
for (j12 = 0; j12 < 64; j12++)
;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-7.c b/gcc/testsuite/c-c++-common/gomp/pr99928-7.c
index 5db1101..e6e0e92 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-7.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-7.c
@@ -9,7 +9,7 @@ foo (void)
/* { dg-final { scan-tree-dump-not "omp parallel\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j00\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j00:1\\)" "gimple" } } */
- #pragma omp distribute parallel for simd
+ #pragma omp distribute parallel for simd default(none)
for (int j00 = 0; j00 < 64; j00++)
;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*lastprivate\\(j01\\)" "gimple" } } */
@@ -30,20 +30,20 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(j03\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp taskloop\[^\n\r]*lastprivate\\(j03\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j03:1\\)" "gimple" } } */
- #pragma omp master taskloop simd
+ #pragma omp master taskloop simd default(none)
for (int j03 = 0; j03 < 64; j03++)
;
/* { dg-final { scan-tree-dump-not "omp parallel\[^\n\r]*lastprivate\\(j04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j04:1\\)" "gimple" } } */
- #pragma omp parallel for simd
+ #pragma omp parallel for simd default(none)
for (int j04 = 0; j04 < 64; j04++)
;
/* { dg-final { scan-tree-dump-not "omp parallel\[^\n\r]*shared\\(j05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*lastprivate\\(j05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp taskloop\[^\n\r]*lastprivate\\(j05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j05:1\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd
+ #pragma omp parallel master taskloop simd default(none)
for (int j05 = 0; j05 < 64; j05++)
;
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*map\\(tofrom:j06" "gimple" } } */
@@ -52,13 +52,13 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp parallel\[^\n\r]*lastprivate\\(j06\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j06\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j06:1\\)" "gimple" } } */
- #pragma omp target parallel for simd
+ #pragma omp target parallel for simd default(none) defaultmap(none)
for (int j06 = 0; j06 < 64; j06++)
;
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*map\\(tofrom:j07" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(j07\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j07:1\\)" "gimple" } } */
- #pragma omp target simd
+ #pragma omp target simd defaultmap(none)
for (int j07 = 0; j07 < 64; j07++)
;
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*map\\(tofrom:j08" "gimple" } } */
@@ -69,7 +69,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp parallel\[^\n\r]*lastprivate\\(j08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j08:1\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd
+ #pragma omp target teams distribute parallel for simd default(none) defaultmap(none)
for (int j08 = 0; j08 < 64; j08++)
;
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*map\\(tofrom:j09" "gimple" } } */
@@ -77,12 +77,12 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp teams\[^\n\r]*shared\\(j09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*lastprivate\\(j09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j09:1\\)" "gimple" } } */
- #pragma omp target teams distribute simd
+ #pragma omp target teams distribute simd default(none) defaultmap(none)
for (int j09 = 0; j09 < 64; j09++)
;
/* { dg-final { scan-tree-dump-not "omp taskloop\[^\n\r]*lastprivate\\(j10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j10:1\\)" "gimple" } } */
- #pragma omp taskloop simd
+ #pragma omp taskloop simd default(none)
for (int j10 = 0; j10 < 64; j10++)
;
/* { dg-final { scan-tree-dump-not "omp teams\[^\n\r]*shared\\(j11\\)" "gimple" } } */
@@ -91,13 +91,13 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp parallel\[^\n\r]*lastprivate\\(j11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*lastprivate\\(j11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j11:1\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd
+ #pragma omp teams distribute parallel for simd default(none)
for (int j11 = 0; j11 < 64; j11++)
;
/* { dg-final { scan-tree-dump-not "omp teams\[^\n\r]*shared\\(j12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*lastprivate\\(j12\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*linear\\(j12:1\\)" "gimple" } } */
- #pragma omp teams distribute simd
+ #pragma omp teams distribute simd default(none)
for (int j12 = 0; j12 < 64; j12++)
;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-8.c b/gcc/testsuite/c-c++-common/gomp/pr99928-8.c
index 27e6ad1..ad36f3e 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-8.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-8.c
@@ -12,14 +12,14 @@ foo (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r00\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r00\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r00\\)" "gimple" } } *//* FIXME. */
- #pragma omp distribute parallel for reduction(+:r00)
+ #pragma omp distribute parallel for reduction(+:r00) default(none)
for (int i = 0; i < 64; i++)
r00++;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r01\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r01\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r01\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r01\\)" "gimple" } } */
- #pragma omp distribute parallel for simd reduction(+:r01)
+ #pragma omp distribute parallel for simd reduction(+:r01) default(none)
for (int i = 0; i < 64; i++)
r01++;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r02\\)" "gimple" } } */
@@ -42,53 +42,53 @@ bar (void)
r03++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:r04\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:r04\\)" "gimple" } } */
- #pragma omp master taskloop reduction(+:r04)
+ #pragma omp master taskloop reduction(+:r04) default(none)
for (int i = 0; i < 64; i++)
r04++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:r05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:r05\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r05\\)" "gimple" } } */
- #pragma omp master taskloop simd reduction(+:r05)
+ #pragma omp master taskloop simd reduction(+:r05) default(none)
for (int i = 0; i < 64; i++)
r05++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r06\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r06\\)" "gimple" } } *//* FIXME. */
- #pragma omp parallel for reduction(+:r06)
+ #pragma omp parallel for reduction(+:r06) default(none)
for (int i = 0; i < 64; i++)
r06++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r07\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r07\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r07\\)" "gimple" } } */
- #pragma omp parallel for simd reduction(+:r07)
+ #pragma omp parallel for simd reduction(+:r07) default(none)
for (int i = 0; i < 64; i++)
r07++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:r08\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r08\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp parallel loop reduction(+:r08)
+ #pragma omp parallel loop reduction(+:r08) default(none)
for (int i = 0; i < 64; i++)
r08++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r09\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:r09\\)" "gimple" } } */
- #pragma omp parallel master reduction(+:r09)
+ #pragma omp parallel master reduction(+:r09) default(none)
r09++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:r10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:r10\\)" "gimple" } } */
- #pragma omp parallel master taskloop reduction(+:r10)
+ #pragma omp parallel master taskloop reduction(+:r10) default(none)
for (int i = 0; i < 64; i++)
r10++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:r11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:r11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r11\\)" "gimple" } } */
- #pragma omp parallel master taskloop simd reduction(+:r11)
+ #pragma omp parallel master taskloop simd reduction(+:r11) default(none)
for (int i = 0; i < 64; i++)
r11++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r12\\)" "gimple" } } *//* FIXME: This should be on sections instead. */
/* { dg-final { scan-tree-dump-not "omp sections\[^\n\r]*reduction\\(\\+:r12\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*reduction\\(\\+:r12\\)" "gimple" } } */
- #pragma omp parallel sections reduction(+:r12)
+ #pragma omp parallel sections reduction(+:r12) default(none)
{
r12++;
#pragma omp section
@@ -97,13 +97,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r13" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r13\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r13\\)" "gimple" } } */
- #pragma omp target parallel reduction(+:r13)
+ #pragma omp target parallel reduction(+:r13) default(none) defaultmap(none)
r13++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r14" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r14\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r14\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r14\\)" "gimple" } } *//* FIXME. */
- #pragma omp target parallel for reduction(+:r14)
+ #pragma omp target parallel for reduction(+:r14) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r14++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r15" "gimple" } } */
@@ -111,7 +111,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r15\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r15\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r15\\)" "gimple" } } */
- #pragma omp target parallel for simd reduction(+:r15)
+ #pragma omp target parallel for simd reduction(+:r15) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r15++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r16" "gimple" } } */
@@ -119,19 +119,19 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:r16\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r16\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target parallel loop reduction(+:r16)
+ #pragma omp target parallel loop reduction(+:r16) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r16++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r17" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r17\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r17\\)" "gimple" } } */
- #pragma omp target teams reduction(+:r17)
+ #pragma omp target teams reduction(+:r17) default(none) defaultmap(none)
r17++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r18" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r18\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r18\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r18\\)" "gimple" } } */
- #pragma omp target teams distribute reduction(+:r18)
+ #pragma omp target teams distribute reduction(+:r18) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r18++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r19" "gimple" } } */
@@ -140,7 +140,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r19\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r19\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r19\\)" "gimple" } } *//* FIXME. */
- #pragma omp target teams distribute parallel for reduction(+:r19)
+ #pragma omp target teams distribute parallel for reduction(+:r19) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r19++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r20" "gimple" } } */
@@ -150,7 +150,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r20\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r20\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r20\\)" "gimple" } } */
- #pragma omp target teams distribute parallel for simd reduction(+:r20)
+ #pragma omp target teams distribute parallel for simd reduction(+:r20) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r20++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r21" "gimple" } } */
@@ -158,7 +158,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r21\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r21\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r21\\)" "gimple" } } */
- #pragma omp target teams distribute simd reduction(+:r21)
+ #pragma omp target teams distribute simd reduction(+:r21) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r21++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r22" "gimple" } } */
@@ -168,30 +168,30 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r22\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:r22\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r22\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target teams loop reduction(+:r22)
+ #pragma omp target teams loop reduction(+:r22) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r22++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r23" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r23\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r23\\)" "gimple" } } */
- #pragma omp target simd reduction(+:r23)
+ #pragma omp target simd reduction(+:r23) defaultmap(none)
for (int i = 0; i < 64; i++)
r23++;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:r24\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r24\\)" "gimple" } } */
- #pragma omp taskloop simd reduction(+:r24)
+ #pragma omp taskloop simd reduction(+:r24) default(none)
for (int i = 0; i < 64; i++)
r24++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r25\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r25\\)" "gimple" } } */
- #pragma omp teams distribute reduction(+:r25)
+ #pragma omp teams distribute reduction(+:r25) default(none)
for (int i = 0; i < 64; i++)
r25++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r26\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r26\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r26\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r26\\)" "gimple" } } *//* FIXME. */
- #pragma omp teams distribute parallel for reduction(+:r26)
+ #pragma omp teams distribute parallel for reduction(+:r26) default(none)
for (int i = 0; i < 64; i++)
r26++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r27\\)" "gimple" } } */
@@ -199,13 +199,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:r27\\)" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:r27\\)" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r27\\)" "gimple" } } */
- #pragma omp teams distribute parallel for simd reduction(+:r27)
+ #pragma omp teams distribute parallel for simd reduction(+:r27) default(none)
for (int i = 0; i < 64; i++)
r27++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:r28\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:r28\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r28\\)" "gimple" } } */
- #pragma omp teams distribute simd reduction(+:r28)
+ #pragma omp teams distribute simd reduction(+:r28) default(none)
for (int i = 0; i < 64; i++)
r28++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(r29\\)" "gimple" } } */
@@ -213,7 +213,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r29\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:r29\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:r29\\)" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp teams loop reduction(+:r29)
+ #pragma omp teams loop reduction(+:r29) default(none)
for (int i = 0; i < 64; i++)
r29++;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr99928-9.c b/gcc/testsuite/c-c++-common/gomp/pr99928-9.c
index 8623527..a7d970a 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr99928-9.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr99928-9.c
@@ -12,14 +12,14 @@ foo (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r00 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r00 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r00 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp distribute parallel for reduction(+:r00[1:2])
+ #pragma omp distribute parallel for reduction(+:r00[1:2]) default(none)
for (int i = 0; i < 64; i++)
r00[1]++;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r01 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r01 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r01 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r01 \\+ 4" "gimple" } } */
- #pragma omp distribute parallel for simd reduction(+:r01[1:2])
+ #pragma omp distribute parallel for simd reduction(+:r01[1:2]) default(none)
for (int i = 0; i < 64; i++)
r01[1]++;
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r02 \\+ 4" "gimple" } } */
@@ -42,53 +42,53 @@ bar (void)
r03[1]++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r04 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r04 \\+ 4" "gimple" } } */
- #pragma omp master taskloop reduction(+:r04[1:2])
+ #pragma omp master taskloop reduction(+:r04[1:2]) default(none)
for (int i = 0; i < 64; i++)
r04[1]++;
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r05 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r05 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r05 \\+ 4" "gimple" } } */
- #pragma omp master taskloop simd reduction(+:r05[1:2])
+ #pragma omp master taskloop simd reduction(+:r05[1:2]) default(none)
for (int i = 0; i < 64; i++)
r05[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r06 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r06 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp parallel for reduction(+:r06[1:2])
+ #pragma omp parallel for reduction(+:r06[1:2]) default(none)
for (int i = 0; i < 64; i++)
r06[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r07 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r07 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r07 \\+ 4" "gimple" } } */
- #pragma omp parallel for simd reduction(+:r07[1:2])
+ #pragma omp parallel for simd reduction(+:r07[1:2]) default(none)
for (int i = 0; i < 64; i++)
r07[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r08\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r08 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r08 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp parallel loop reduction(+:r08[1:2])
+ #pragma omp parallel loop reduction(+:r08[1:2]) default(none)
for (int i = 0; i < 64; i++)
r08[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r09 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r09 \\+ 4" "gimple" } } */
- #pragma omp parallel master reduction(+:r09[1:2])
+ #pragma omp parallel master reduction(+:r09[1:2]) default(none)
r09[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r10\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r10 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r10 \\+ 4" "gimple" } } */
- #pragma omp parallel master taskloop reduction(+:r10[1:2])
+ #pragma omp parallel master taskloop reduction(+:r10[1:2]) default(none)
for (int i = 0; i < 64; i++)
r10[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r11\\)" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp master\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r11 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r11 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r11 \\+ 4" "gimple" } } */
- #pragma omp parallel master taskloop simd reduction(+:r11[1:2])
+ #pragma omp parallel master taskloop simd reduction(+:r11[1:2]) default(none)
for (int i = 0; i < 64; i++)
r11[1]++;
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r12 \\+ 4" "gimple" } } *//* FIXME: This should be on sections instead. */
/* { dg-final { scan-tree-dump-not "omp sections\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r12 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump-not "omp section \[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r12 \\+ 4" "gimple" } } */
- #pragma omp parallel sections reduction(+:r12[1:2])
+ #pragma omp parallel sections reduction(+:r12[1:2]) default(none)
{
r12[1]++;
#pragma omp section
@@ -97,13 +97,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r13\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r13\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r13 \\+ 4" "gimple" } } */
- #pragma omp target parallel reduction(+:r13[1:2])
+ #pragma omp target parallel reduction(+:r13[1:2]) default(none) defaultmap(none)
r13[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r14\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r14" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r14 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r14 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp target parallel for reduction(+:r14[1:2])
+ #pragma omp target parallel for reduction(+:r14[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r14[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r15\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
@@ -111,7 +111,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r15 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r15 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r15 \\+ 4" "gimple" } } */
- #pragma omp target parallel for simd reduction(+:r15[1:2])
+ #pragma omp target parallel for simd reduction(+:r15[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r15[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r16\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
@@ -119,19 +119,19 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r16\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r16 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r16 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target parallel loop reduction(+:r16[1:2])
+ #pragma omp target parallel loop reduction(+:r16[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r16[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r17\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r17\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r17 \\+ 4" "gimple" } } */
- #pragma omp target teams reduction(+:r17[1:2])
+ #pragma omp target teams reduction(+:r17[1:2]) default(none) defaultmap(none)
r17[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r18\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r18\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r18 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r18 \\+ 4" "gimple" } } */
- #pragma omp target teams distribute reduction(+:r18[1:2])
+ #pragma omp target teams distribute reduction(+:r18[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r18[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r19\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
@@ -140,7 +140,7 @@ bar (void)
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r19 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r19 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r19 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp target teams distribute parallel for reduction(+:r19[1:2])
+ #pragma omp target teams distribute parallel for reduction(+:r19[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r19[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r20\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
@@ -150,7 +150,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r20 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r20 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r20 \\+ 4" "gimple" } } */
- #pragma omp target teams distribute parallel for simd reduction(+:r20[1:2])
+ #pragma omp target teams distribute parallel for simd reduction(+:r20[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r20[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r21\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
@@ -158,7 +158,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r21 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r21 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r21 \\+ 4" "gimple" } } */
- #pragma omp target teams distribute simd reduction(+:r21[1:2])
+ #pragma omp target teams distribute simd reduction(+:r21[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r21[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r22\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
@@ -168,30 +168,30 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r22\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r22 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r22 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp target teams loop reduction(+:r22[1:2])
+ #pragma omp target teams loop reduction(+:r22[1:2]) default(none) defaultmap(none)
for (int i = 0; i < 64; i++)
r22[1]++;
/* { dg-final { scan-tree-dump "omp target\[^\n\r]*map\\(tofrom:r23\\\[1\\\] \\\[len: 8\\\]" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp target\[^\n\r]*firstprivate\\(r23\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r23 \\+ 4" "gimple" } } */
- #pragma omp target simd reduction(+:r23[1:2])
+ #pragma omp target simd reduction(+:r23[1:2]) defaultmap(none)
for (int i = 0; i < 64; i++)
r23[1]++;
/* { dg-final { scan-tree-dump "omp taskloop\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r24 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r24 \\+ 4" "gimple" } } */
- #pragma omp taskloop simd reduction(+:r24[1:2])
+ #pragma omp taskloop simd reduction(+:r24[1:2]) default(none)
for (int i = 0; i < 64; i++)
r24[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r25 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r25 \\+ 4" "gimple" } } */
- #pragma omp teams distribute reduction(+:r25[1:2])
+ #pragma omp teams distribute reduction(+:r25[1:2]) default(none)
for (int i = 0; i < 64; i++)
r25[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r26 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r26 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r26 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r26 \\+ 4" "gimple" } } *//* FIXME. */
- #pragma omp teams distribute parallel for reduction(+:r26[1:2])
+ #pragma omp teams distribute parallel for reduction(+:r26[1:2]) default(none)
for (int i = 0; i < 64; i++)
r26[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r27 \\+ 4" "gimple" } } */
@@ -199,13 +199,13 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r27 \\+ 4" "gimple" } } *//* FIXME: This should be on for instead. */
/* { dg-final { scan-tree-dump-not "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r27 \\+ 4" "gimple" } } *//* FIXME. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r27 \\+ 4" "gimple" } } */
- #pragma omp teams distribute parallel for simd reduction(+:r27[1:2])
+ #pragma omp teams distribute parallel for simd reduction(+:r27[1:2]) default(none)
for (int i = 0; i < 64; i++)
r27[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r28 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r28 \\+ 4" "gimple" } } */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r28 \\+ 4" "gimple" } } */
- #pragma omp teams distribute simd reduction(+:r28[1:2])
+ #pragma omp teams distribute simd reduction(+:r28[1:2]) default(none)
for (int i = 0; i < 64; i++)
r28[1]++;
/* { dg-final { scan-tree-dump "omp teams\[^\n\r]*shared\\(r29\\)" "gimple" } } */
@@ -213,7 +213,7 @@ bar (void)
/* { dg-final { scan-tree-dump "omp parallel\[^\n\r]*shared\\(r29\\)" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp for\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r29 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
/* { dg-final { scan-tree-dump "omp simd\[^\n\r]*reduction\\(\\+:MEM\[^\n\r]*&r29 \\+ 4" "gimple" } } *//* NOTE: This is implementation detail. */
- #pragma omp teams loop reduction(+:r29[1:2])
+ #pragma omp teams loop reduction(+:r29[1:2]) default(none)
for (int i = 0; i < 64; i++)
r29[1]++;
}
diff --git a/gcc/testsuite/c-c++-common/torture/builtin-shufflevector-1.c b/gcc/testsuite/c-c++-common/torture/builtin-shufflevector-1.c
new file mode 100644
index 0000000..c864736
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/torture/builtin-shufflevector-1.c
@@ -0,0 +1,49 @@
+/* { dg-do run } */
+
+typedef long v4di __attribute__((vector_size(4 * sizeof (long))));
+typedef int v4si __attribute__((vector_size(4 * sizeof (int))));
+typedef int v8si __attribute__((vector_size(8 * sizeof (int))));
+
+v4si res[5], a, b;
+v4di resl, al, bl;
+v8si res8[3], a8, b8;
+void __attribute__((noipa))
+foo (void)
+{
+ res[0] = __builtin_shufflevector (a, b, 0, 1, 4, 5);
+ res[1] = __builtin_shufflevector (a, b, 0, 1, -1, 5);
+ res8[0] = __builtin_shufflevector (a, b, 0, 1, 2, 2 + 1, 4, 5, 6, 7);
+ res[2] = __builtin_shufflevector (a8, b8, 0, 8, 1, 9);
+ res[3] = __builtin_shufflevector (a8, b, 0, 8, 1, 9);
+ res[4] = __builtin_shufflevector (a, b8, 0, 4, 1, 5);
+ res8[1] = __builtin_shufflevector (a8, b, 0, 8, 1, 9, 10, 11, 2, 3);
+ res8[2] = __builtin_shufflevector (a, b8, 0, 4, 1, 5, -1, -1, -1, -1);
+}
+
+#define comp(a, b, n) \
+ for (unsigned i = 0; i < n; ++i) \
+ if ((a)[i] != (b)[i]) \
+ __builtin_abort ();
+
+int main()
+{
+ a = (v4si) { 0, 1, 2, 3 };
+ b = (v4si) { 4, 5, 6, 7 };
+ a8 = (v8si) { 0, 1, 2, 3, 4, 5, 6, 7 };
+ b8 = (v8si) { 8, 9, 10, 11, 12, 13, 14, 15 };
+ foo ();
+ comp (res[0], ((v4si) { 0, 1, 4, 5}), 4)
+ res[1][2] = 9;
+ comp (res[1], ((v4si) { 0, 1, 9, 5}), 4)
+ comp (res8[0], ((v8si) { 0, 1, 2, 3, 4, 5, 6, 7 }), 8)
+ comp (res[2], ((v4si) { 0, 8, 1, 9}), 4)
+ comp (res[3], ((v4si) { 0, 4, 1, 5}), 4)
+ comp (res[4], ((v4si) { 0, 8, 1, 9}), 4)
+ comp (res8[1], ((v8si) { 0, 4, 1, 5, 6, 7, 2, 3 }), 8)
+ res8[2][4] = 42;
+ res8[2][5] = 42;
+ res8[2][6] = 42;
+ res8[2][7] = 42;
+ comp (res8[2], ((v8si) { 0, 8, 1, 9, 42, 42, 42, 42 }), 8)
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ext/builtin-shufflevector-1.C b/gcc/testsuite/g++.dg/ext/builtin-shufflevector-1.C
new file mode 100644
index 0000000..da838e8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/builtin-shufflevector-1.C
@@ -0,0 +1,18 @@
+// { dg-do compile { target c++11 } }
+
+template <typename T1, typename T2, int ...args>
+struct shufflevector
+{
+ static auto shuffle (T1 a, T2 b)
+ -> decltype (__builtin_shufflevector (a, b, args...))
+ {
+ return __builtin_shufflevector (a, b, args...);
+ }
+};
+
+typedef int v4si __attribute__((vector_size (16)));
+v4si a, b, c;
+int main()
+{
+ c = shufflevector<v4si, v4si, 0, 1, 4, 5>::shuffle (a, b);
+}
diff --git a/gcc/testsuite/g++.dg/ext/builtin-shufflevector-2.C b/gcc/testsuite/g++.dg/ext/builtin-shufflevector-2.C
new file mode 100644
index 0000000..c8d096c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/builtin-shufflevector-2.C
@@ -0,0 +1,12 @@
+// { dg-do compile }
+
+typedef double v2df __attribute__((vector_size(2 * sizeof (double))));
+
+template<typename T, typename U, int N, int M>
+struct Shuffle {
+ void f(T t, U u, v2df a, v2df b) {
+ (void)__builtin_shufflevector(t, u, N, M); // { dg-error "invalid" }
+ }
+};
+
+template struct Shuffle<v2df, v2df, 4, 3>;
diff --git a/gcc/testsuite/g++.dg/inherit/virtual15.C b/gcc/testsuite/g++.dg/inherit/virtual15.C
new file mode 100644
index 0000000..ebd8e3a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/virtual15.C
@@ -0,0 +1,18 @@
+// PR c++/100797
+// { dg-do run }
+
+bool ok = false;
+struct S1 { virtual ~S1() {} };
+struct S2 { virtual void f1() = 0; };
+struct S3: S1, S2 {
+ void f1() { f2(); }
+ virtual void f2() = 0;
+};
+struct S4: S3 {
+ void f2() { ok = true; }
+ using S2::f1;
+};
+int main() {
+ S4().f1();
+ if (!ok) __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/inherit/virtual15a.C b/gcc/testsuite/g++.dg/inherit/virtual15a.C
new file mode 100644
index 0000000..6139385
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/virtual15a.C
@@ -0,0 +1,19 @@
+// PR c++/100797 plus diamond inheritance
+// { dg-do run }
+
+bool ok = false;
+struct S1 { virtual ~S1() {} };
+struct S2 { virtual void f1() = 0; };
+struct S3: S1, virtual S2 {
+ void f1() { f2(); }
+ virtual void f2() = 0;
+};
+struct SX: virtual S2 { };
+struct S4: SX, S3 {
+ void f2() { ok = true; }
+ using S2::f1;
+};
+int main() {
+ S4().f1();
+ if (!ok) __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.target/powerpc/pr99842.C b/gcc/testsuite/g++.target/powerpc/pr99842.C
new file mode 100644
index 0000000..922450e
--- /dev/null
+++ b/gcc/testsuite/g++.target/powerpc/pr99842.C
@@ -0,0 +1,188 @@
+/* PR target/99842 */
+/* { dg-require-effective-target power10_ok } */
+/* { dg-options "-O3 -mdejagnu-cpu=power10 -Wno-return-type" } */
+
+/* Verify we do not ICE on the following noisy creduced test case. */
+
+enum { a, b, c, d };
+template <typename> struct e;
+template <typename g, typename h, typename k> struct e<g(h, k)> {
+ typedef h f;
+};
+template <typename> struct ac;
+template <typename ab> struct ac<const ab> : ac<ab> {};
+template <typename> struct l;
+template <typename, int, int m, int = 0, int = a, int = m> class n;
+template <typename> class o;
+template <typename, typename, typename> class ag;
+template <typename, typename, int = c> class af;
+template <typename> struct ad;
+template <typename ab> struct an {
+ typedef n<typename ab ::ah, ac<ab>::ai, ac<ab>::aj> f;
+};
+template <typename al> struct am { typedef o<al> f; };
+template <typename al, typename = typename ac<al>::ao,
+ typename = typename ac<al>::av>
+struct ak;
+template <typename al, typename ao> struct ak<al, ao, int> {
+ typedef typename am<al>::f f;
+};
+template <typename, typename, typename> struct aq;
+template <typename ar, typename as> struct aq<ar, ar, as> { typedef ar at; };
+template <typename ap> ap bf(const typename ad<ap>::f *);
+template <typename ap, int> ap aw(typename ad<ap>::f *ax) { return bf<ap>(ax); }
+typedef __attribute__((altivec(vector__))) double au;
+template <> struct ad<au> { typedef double f; };
+template <> au bf(const double *ax) { return __builtin_vec_vsx_ld(0, ax); }
+template <typename> struct az {};
+template <typename al> class o : public l<al> {
+public:
+ typedef typename ac<al>::ah ah;
+ template <typename ay> al &operator+=(const o<ay> &);
+};
+template <typename> struct l {};
+template <typename ba, typename bb, int bd> struct ac<af<ba, bb, bd>> {
+ typedef typename ba::ah ah;
+ enum { ai, aj };
+};
+template <typename, typename, int bd>
+class af
+ : public ak<
+ af<ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+ n<double, -1, 1, 3>, bd>,
+ int, int>::f {};
+template <typename, typename, typename> struct be;
+template <typename bj, typename bg, typename g> void bi(bj, bg bm, g) {
+ typename an<bg>::f bk(bm);
+}
+template <typename bj, typename bg, typename g> void bl(bj, bg bm, g bp) {
+ be<bj, bg, g>::bn(a, bm, bp);
+}
+template <typename, typename, typename, typename> struct bo;
+class bs {
+public:
+ bs(double *, int);
+ double &operator()(int, int) { return bq[br]; }
+ template <typename bw, int> bw bt(int i, int j) {
+ double &bu = operator()(i, j);
+ return aw<bw, b>(&bu);
+ }
+ double *bq;
+ int br;
+};
+class ca : public bs {
+public:
+ ca(double *by, int bz) : bs(by, bz) {}
+};
+template <typename al> class ce : public am<al>::f {
+protected:
+ template <typename ay> void cb(l<ay>) {
+ af<ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+ n<double, -1, 1, 3>>
+ cc;
+ bl(0, cc, az<typename ay::ah>());
+ }
+ template <typename> void ch(long);
+ template <typename ay> void ch(l<ay> cf) { cb(cf); }
+};
+template <typename cg, int aa, int m, int cl, int ci, int cj>
+struct ac<n<cg, aa, m, cl, ci, cj>> {
+ typedef cg ah;
+ typedef int av;
+};
+template <typename cg, int, int m, int, int, int>
+class n : public ce<n<cg, m, c>> {
+public:
+ template <typename ab> n(ab p) { n::template ch<ab>(p); }
+};
+template <typename bc, typename ba, typename bb> struct ac<ag<bc, ba, bb>> {
+ typedef ba ao;
+ typedef typename e<bc(typename ba::ah, typename bb::ah)>::f ah;
+ typedef typename aq<typename ac<ba>::av, typename ac<bb>::av, bc>::at av;
+};
+template <typename> class cm;
+template <typename, typename r, typename cs>
+class ag
+ : public cm<typename aq<typename ac<r>::av, typename ac<cs>::av, int>::at> {
+};
+template <typename>
+class cm : public ak<ag<int, n<double, 1, 1>, n<double, 1, 1>>>::f {};
+template <typename al>
+template <typename ay>
+al &o<al>::operator+=(const o<ay> &) {
+ af<ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+ n<double, -1, 1, 3>>
+ co;
+ bi(0, co, int());
+}
+enum { cp };
+template <int> struct cq;
+template <typename> struct cr {
+ enum { q };
+ enum { ae = cq<q>::at };
+};
+template <> struct cq<cp> {
+ enum { at = d };
+};
+struct t {
+ template <typename ba, typename bb, typename s> static void bn(ba, bb, s) {
+ typedef typename bb::ah x;
+ x u;
+ bo<long, ca, x, ca>::bn(0, 0, ca(0, 0), ca(&u, 1), 0, 0, 0);
+ }
+};
+template <typename, typename bb, int = cr<bb>::ae> struct cu;
+template <typename cd, typename ba, typename bb, int ct, typename ah>
+struct be<cd, af<ba, bb, ct>, az<ah>> {
+ static void bn(cd, af<ba, bb> bm, az<ah>) {
+ ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>> da;
+ cu<ba, bb>::cv(c, da, bm);
+ }
+};
+template <typename al> struct cw {
+ template <typename bj>
+ static void
+ cv(bj, ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+ n<double, -1, 1, 3> bx) {
+ double alpha;
+ ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>> bh;
+ al::cx(c, bh, bx, alpha);
+ }
+};
+template <typename ba, typename bb> struct cu<ba, bb, d> : cw<cu<ba, bb>> {
+ template <typename s> static void cx(s, ba, bb bx, typename af<ba, bb>::ah) {
+ ba cz;
+ t::bn(cz, bx, c);
+ }
+};
+template <typename dj, typename, bool>
+void db(__vector_quad *, __vector_pair &, dj);
+template <typename, typename, typename, typename, typename, typename, int>
+void dc(ca alhs) {
+ typedef au dj;
+ typedef au dd;
+ ca bh(alhs);
+ enum { de };
+ __vector_quad df, dg;
+ int j;
+ dd v;
+ __vector_pair dh;
+ __builtin_mma_assemble_pair(
+ &dh, (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j),
+ (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j));
+ db<dj, dd, true>(&df, dh, v);
+ __vector_pair di;
+ __builtin_mma_assemble_pair(
+ &di, (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j),
+ (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j));
+ db<dj, dd, true>(&dg, di, v);
+}
+template <typename bv, typename w, typename cy> struct bo<bv, w, double, cy> {
+ static void bn(bv, bv, w bh, cy, double, bv, double) {
+ dc<bv, double, w, double, cy, double, d>(bh);
+ }
+};
+void dm() {
+ n<double, 1, 1> dk(1), y(0);
+ y += dk;
+}
diff --git a/gcc/testsuite/gcc.dg/Wstringop-overflow-55.c b/gcc/testsuite/gcc.dg/Wstringop-overflow-55.c
index c3c2dbe..5f83af7 100644
--- a/gcc/testsuite/gcc.dg/Wstringop-overflow-55.c
+++ b/gcc/testsuite/gcc.dg/Wstringop-overflow-55.c
@@ -66,7 +66,7 @@ void warn_ptrdiff_anti_range_add (ptrdiff_t i)
{
i |= 1;
- char ca5[5]; // { dg-message "at offset \\\[1, 5]" "pr?????" }
+ char ca5[5]; // { dg-message "at offset \\\[1, 5]" "pr?????" { xfail *-*-* } }
char *p0 = ca5; // offset
char *p1 = p0 + i; // 1-5
char *p2 = p1 + i; // 2-5
@@ -74,7 +74,7 @@ void warn_ptrdiff_anti_range_add (ptrdiff_t i)
char *p4 = p3 + i; // 4-5
char *p5 = p4 + i; // 5
- memset (p5, 0, 5); // { dg-warning "writing 5 bytes into a region of size" "pr?????" }
+ memset (p5, 0, 5); // { dg-warning "writing 5 bytes into a region of size 0" "pr?????" { xfail *-*-* } }
sink (p0, p1, p2, p3, p4, p5);
}
@@ -83,7 +83,7 @@ void warn_int_anti_range (int i)
{
i |= 1;
- char ca5[5]; // { dg-message "at offset \\\[1, 5]" "pr?????" }
+ char ca5[5]; // { dg-message "at offset \\\[1, 5]" "pr?????" { xfail *-*-* } }
char *p0 = ca5; // offset
char *p1 = p0 + i; // 1-5
char *p2 = p1 + i; // 2-5
@@ -91,7 +91,7 @@ void warn_int_anti_range (int i)
char *p4 = p3 + i; // 4-5
char *p5 = p4 + i; // 5
- memset (p5, 0, 5); // { dg-warning "writing 5 bytes into a region of size" "pr?????" }
+ memset (p5, 0, 5); // { dg-warning "writing 5 bytes into a region of size 0" "pr?????" { xfail *-*-* } }
sink (p0, p1, p2, p3, p4, p5);
}
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
index 71e6740..ac72503 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
@@ -115,6 +115,8 @@ plugin_init (struct plugin_name_args *plugin_info,
if (!plugin_default_version_check (version, &gcc_version))
return 1;
+ global_dc->caret_max_width = 80;
+
register_callback (plugin_name,
PLUGIN_PRE_GENERICIZE,
callback,
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c
index 49b78cc..02c4629 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c
@@ -169,6 +169,8 @@ plugin_init (struct plugin_name_args *plugin_info,
if (!plugin_default_version_check (version, &gcc_version))
return 1;
+ global_dc->caret_max_width = 80;
+
pass_info.pass = new pass_test_inlining (g);
pass_info.reference_pass_name = "*warn_function_noreturn";
pass_info.ref_pass_instance_number = 1;
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c
index 7672875..5c2da02 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c
@@ -450,6 +450,8 @@ plugin_init (struct plugin_name_args *plugin_info,
if (!plugin_default_version_check (version, &gcc_version))
return 1;
+ global_dc->caret_max_width = 80;
+
pass_info.pass = make_pass_test_show_path (g);
pass_info.reference_pass_name = "whole-program";
pass_info.ref_pass_instance_number = 1;
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
index cf99697..aa73dca 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
@@ -208,6 +208,8 @@ plugin_init (struct plugin_name_args *plugin_info,
if (!plugin_default_version_check (version, &gcc_version))
return 1;
+ global_dc->caret_max_width = 80;
+
pass_info.pass = new pass_test_string_literals (g);
pass_info.reference_pass_name = "ssa";
pass_info.ref_pass_instance_number = 1;
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c
index 89cc95a..4a89d84 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c
@@ -89,6 +89,8 @@ plugin_init (struct plugin_name_args *plugin_info,
if (!plugin_default_version_check (version, &gcc_version))
return 1;
+ global_dc->caret_max_width = 130;
+
register_callback (plugin_name,
PLUGIN_PRE_GENERICIZE,
callback,
diff --git a/gcc/testsuite/gcc.dg/pr80776-1.c b/gcc/testsuite/gcc.dg/pr80776-1.c
index f3a120b..af41c0c 100644
--- a/gcc/testsuite/gcc.dg/pr80776-1.c
+++ b/gcc/testsuite/gcc.dg/pr80776-1.c
@@ -17,5 +17,7 @@ Foo (void)
__builtin_unreachable ();
if (! (0 <= i && i <= 999999))
__builtin_unreachable ();
- sprintf (number, "%d", i); /* { dg-bogus "writing" "" } */
+ /* The correctness bits for [E]VRP cannot handle chained conditionals
+ when deciding to ignore a unreachable branch for setting SSA range info. */
+ sprintf (number, "%d", i); /* { dg-bogus "writing" "" { xfail *-*-* } } */
}
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr100778-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr100778-1.c
new file mode 100644
index 0000000..9f8b7ee
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr100778-1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_double } */
+
+double foo (int x, double *p)
+{
+ double res = p[0] + p[1];
+ double tem = p[0] / x;
+ if (x)
+ {
+ p[0] = tem;
+ p[1] /= x;
+ }
+ return res + tem;
+}
+
+/* We may not SLP vectorize the FP division because it can trap and it
+ is distributed between two basic-blocks. */
+/* { dg-final { scan-tree-dump "Build SLP failed: different BB for PHI or possibly trapping operation in _\[0-9\]+ = _\[0-9\]+ / _\[0-9\]+;" "slp2" } } */
diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h
index 076fff8..a72d0d3 100644
--- a/gcc/tree-iterator.h
+++ b/gcc/tree-iterator.h
@@ -1,4 +1,4 @@
-/* Iterator routines for manipulating GENERIC tree statement list.
+/* Iterator routines for manipulating GENERIC tree statement list. -*- C++ -*-
Copyright (C) 2003-2021 Free Software Foundation, Inc.
Contributed by Andrew MacLeod <amacleod@redhat.com>
@@ -32,6 +32,21 @@ along with GCC; see the file COPYING3. If not see
struct tree_stmt_iterator {
struct tree_statement_list_node *ptr;
tree container;
+
+ /* No need for user-defined constructors, the implicit definitions (or
+ aggregate initialization) are fine. */
+
+ bool operator== (tree_stmt_iterator b) const
+ { return b.ptr == ptr && b.container == container; }
+ bool operator!= (tree_stmt_iterator b) const { return !(*this == b); }
+ tree_stmt_iterator &operator++ () { ptr = ptr->next; return *this; }
+ tree_stmt_iterator &operator-- () { ptr = ptr->prev; return *this; }
+ tree_stmt_iterator operator++ (int)
+ { tree_stmt_iterator x = *this; ++*this; return x; }
+ tree_stmt_iterator operator-- (int)
+ { tree_stmt_iterator x = *this; --*this; return x; }
+ tree &operator* () { return ptr->stmt; }
+ tree operator* () const { return ptr->stmt; }
};
static inline tree_stmt_iterator
@@ -71,27 +86,38 @@ tsi_one_before_end_p (tree_stmt_iterator i)
static inline void
tsi_next (tree_stmt_iterator *i)
{
- i->ptr = i->ptr->next;
+ ++(*i);
}
static inline void
tsi_prev (tree_stmt_iterator *i)
{
- i->ptr = i->ptr->prev;
+ --(*i);
}
static inline tree *
tsi_stmt_ptr (tree_stmt_iterator i)
{
- return &i.ptr->stmt;
+ return &(*i);
}
static inline tree
tsi_stmt (tree_stmt_iterator i)
{
- return i.ptr->stmt;
+ return *i;
}
+/* Make tree_stmt_iterator work as a C++ range, e.g.
+ for (tree stmt : tsi_range (stmt_list)) { ... } */
+class tsi_range
+{
+ tree t;
+ public:
+ tsi_range (tree t): t(t) { }
+ tree_stmt_iterator begin() const { return tsi_start (t); }
+ tree_stmt_iterator end() const { return { nullptr, t }; }
+};
+
enum tsi_iterator_update
{
TSI_NEW_STMT, /* Only valid when single statement is added, move
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index 984b1e2..e0522bf 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -333,7 +333,7 @@ unpack_ts_function_decl_value_fields (struct bitpack_d *bp, tree expr)
DECL_IS_NOVOPS (expr) = (unsigned) bp_unpack_value (bp, 1);
DECL_IS_RETURNS_TWICE (expr) = (unsigned) bp_unpack_value (bp, 1);
DECL_IS_MALLOC (expr) = (unsigned) bp_unpack_value (bp, 1);
- DECL_SET_IS_OPERATOR_NEW (expr, (unsigned) bp_unpack_value (bp, 1));
+ FUNCTION_DECL_DECL_TYPE (expr) = (function_decl_type) bp_unpack_value (bp, 2);
DECL_SET_IS_OPERATOR_DELETE (expr, (unsigned) bp_unpack_value (bp, 1));
DECL_DECLARED_INLINE_P (expr) = (unsigned) bp_unpack_value (bp, 1);
DECL_STATIC_CHAIN (expr) = (unsigned) bp_unpack_value (bp, 1);
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index 1a43534..855d1cd 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -298,7 +298,7 @@ pack_ts_function_decl_value_fields (struct bitpack_d *bp, tree expr)
bp_pack_value (bp, DECL_IS_NOVOPS (expr), 1);
bp_pack_value (bp, DECL_IS_RETURNS_TWICE (expr), 1);
bp_pack_value (bp, DECL_IS_MALLOC (expr), 1);
- bp_pack_value (bp, DECL_IS_OPERATOR_NEW_P (expr), 1);
+ bp_pack_value (bp, FUNCTION_DECL_DECL_TYPE (expr), 2);
bp_pack_value (bp, DECL_IS_OPERATOR_DELETE_P (expr), 1);
bp_pack_value (bp, DECL_DECLARED_INLINE_P (expr), 1);
bp_pack_value (bp, DECL_STATIC_CHAIN (expr), 1);
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index 0ec92b0..ca1539e 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -1214,14 +1214,14 @@ vect_build_slp_tree_1 (vec_info *vinfo, unsigned char *swap,
}
}
- if (phi_p
+ if ((phi_p || gimple_could_trap_p (stmt_info->stmt))
&& (gimple_bb (first_stmt_info->stmt)
!= gimple_bb (stmt_info->stmt)))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
"Build SLP failed: different BB for PHI "
- "in %G", stmt);
+ "or possibly trapping operation in %G", stmt);
/* Mismatch. */
continue;
}
diff --git a/gcc/tree.h b/gcc/tree.h
index 5935d0e..260a3ae 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -3111,7 +3111,7 @@ set_function_decl_type (tree decl, function_decl_type t, bool set)
{
gcc_assert (FUNCTION_DECL_DECL_TYPE (decl) == NONE
|| FUNCTION_DECL_DECL_TYPE (decl) == t);
- decl->function_decl.decl_type = t;
+ FUNCTION_DECL_DECL_TYPE (decl) = t;
}
else if (FUNCTION_DECL_DECL_TYPE (decl) == t)
FUNCTION_DECL_DECL_TYPE (decl) = NONE;
@@ -3126,7 +3126,7 @@ set_function_decl_type (tree decl, function_decl_type t, bool set)
C++ operator new, meaning that it returns a pointer for which we
should not use type based aliasing. */
#define DECL_IS_OPERATOR_NEW_P(NODE) \
- (FUNCTION_DECL_CHECK (NODE)->function_decl.decl_type == OPERATOR_NEW)
+ (FUNCTION_DECL_DECL_TYPE (FUNCTION_DECL_CHECK (NODE)) == OPERATOR_NEW)
#define DECL_IS_REPLACEABLE_OPERATOR_NEW_P(NODE) \
(DECL_IS_OPERATOR_NEW_P (NODE) && DECL_IS_REPLACEABLE_OPERATOR (NODE))
@@ -3137,7 +3137,7 @@ set_function_decl_type (tree decl, function_decl_type t, bool set)
/* Nonzero in a FUNCTION_DECL means this function should be treated as
C++ operator delete. */
#define DECL_IS_OPERATOR_DELETE_P(NODE) \
- (FUNCTION_DECL_CHECK (NODE)->function_decl.decl_type == OPERATOR_DELETE)
+ (FUNCTION_DECL_DECL_TYPE (FUNCTION_DECL_CHECK (NODE)) == OPERATOR_DELETE)
#define DECL_SET_IS_OPERATOR_DELETE(NODE, VAL) \
set_function_decl_type (FUNCTION_DECL_CHECK (NODE), OPERATOR_DELETE, VAL)
@@ -3288,7 +3288,7 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree);
/* In FUNCTION_DECL, this is set if this function is a lambda function. */
#define DECL_LAMBDA_FUNCTION_P(NODE) \
- (FUNCTION_DECL_CHECK (NODE)->function_decl.decl_type == LAMBDA_FUNCTION)
+ (FUNCTION_DECL_DECL_TYPE (FUNCTION_DECL_CHECK (NODE)) == LAMBDA_FUNCTION)
#define DECL_SET_LAMBDA_FUNCTION(NODE, VAL) \
set_function_decl_type (FUNCTION_DECL_CHECK (NODE), LAMBDA_FUNCTION, VAL)