[Bug fortran/83064] [8 Regression] DO CONCURRENT inconsistent results
tkoenig at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Apr 8 16:04:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83064
--- Comment #21 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #20)
> Does autopar break this (i.e. create the loop) even without the ANNOTATE, or
> does it give up on the analysis?
It just gives up.
The following patch
Removing the annotation via
Index: trans-stmt.c
===================================================================
--- trans-stmt.c (Revision 259222)
+++ trans-stmt.c (Arbeitskopie)
@@ -3642,12 +3642,13 @@ gfc_trans_forall_loop (forall_info *forall_tmp, tr
/* The exit condition. */
cond = fold_build2_loc (input_location, LE_EXPR, logical_type_node,
count, build_int_cst (TREE_TYPE (count), 0));
+#if 0
if (forall_tmp->do_concurrent)
cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
build_int_cst (integer_type_node,
annot_expr_parallel_kind),
integer_zero_node);
-
+#endif
tmp = build1_v (GOTO_EXPR, exit_label);
tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
cond, tmp, build_empty_stmt (input_location));
removes parallelization and makes the test case succeed.
We could also think about annotating compiler-generated temporaries
within DO CONCURRENT.
More information about the Gcc-bugs
mailing list