+2018-11-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/87898
+ * omp-simd-clone.c (ipa_simd_modify_stmt_ops): Formatting fix.
+ (ipa_simd_modify_function_body): Remove debug stmts where the first
+ argument was changed into a non-decl.
+
2018-11-13 Peter Bergner <bergner@linux.ibm.com>
PR rtl-optimization/87899
struct ipa_parm_adjustment *cand = NULL;
if (TREE_CODE (*tp) == PARM_DECL)
cand = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true);
- else
- {
- if (TYPE_P (*tp))
- *walk_subtrees = 0;
- }
+ else if (TYPE_P (*tp))
+ *walk_subtrees = 0;
tree repl = NULL_TREE;
if (cand)
if (info.modified)
{
update_stmt (stmt);
+ /* If the above changed the var of a debug bind into something
+ different, remove the debug stmt. We could also for all the
+ replaced parameters add VAR_DECLs for debug info purposes,
+ add debug stmts for those to be the simd array accesses and
+ replace debug stmt var operand with that var. Debugging of
+ vectorized loops doesn't work too well, so don't bother for
+ now. */
+ if ((gimple_debug_bind_p (stmt)
+ && !DECL_P (gimple_debug_bind_get_var (stmt)))
+ || (gimple_debug_source_bind_p (stmt)
+ && !DECL_P (gimple_debug_source_bind_get_var (stmt))))
+ {
+ gsi_remove (&gsi, true);
+ continue;
+ }
if (maybe_clean_eh_stmt (stmt))
gimple_purge_dead_eh_edges (gimple_bb (stmt));
}
+2018-11-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/87898
+ * gcc.dg/gomp/pr87898.c: New test.
+
2018-11-13 David Malcolm <dmalcolm@redhat.com>
* g++.dg/plugin/comment_plugin.c: Replace "source_location" with
--- /dev/null
+/* PR tree-optimization/87898 */
+/* { dg-do compile { target fgraphite } } */
+/* { dg-options "-O1 -floop-parallelize-all -fopenmp -ftree-parallelize-loops=2 -g" } */
+
+#pragma omp declare simd
+void
+foo (int x)
+{
+ x = 0;
+}