Commit 66146c90 by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/87898 (ICE in separate_decls_in_region_debug, at tree-parloops.c:961)

	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.

	* gcc.dg/gomp/pr87898.c: New test.

From-SVN: r266093
parent b76a1b36
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> 2018-11-13 Peter Bergner <bergner@linux.ibm.com>
PR rtl-optimization/87899 PR rtl-optimization/87899
...@@ -834,11 +834,8 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data) ...@@ -834,11 +834,8 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data)
struct ipa_parm_adjustment *cand = NULL; struct ipa_parm_adjustment *cand = NULL;
if (TREE_CODE (*tp) == PARM_DECL) if (TREE_CODE (*tp) == PARM_DECL)
cand = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true); cand = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true);
else else if (TYPE_P (*tp))
{ *walk_subtrees = 0;
if (TYPE_P (*tp))
*walk_subtrees = 0;
}
tree repl = NULL_TREE; tree repl = NULL_TREE;
if (cand) if (cand)
...@@ -1014,6 +1011,21 @@ ipa_simd_modify_function_body (struct cgraph_node *node, ...@@ -1014,6 +1011,21 @@ ipa_simd_modify_function_body (struct cgraph_node *node,
if (info.modified) if (info.modified)
{ {
update_stmt (stmt); 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)) if (maybe_clean_eh_stmt (stmt))
gimple_purge_dead_eh_edges (gimple_bb (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> 2018-11-13 David Malcolm <dmalcolm@redhat.com>
* g++.dg/plugin/comment_plugin.c: Replace "source_location" with * g++.dg/plugin/comment_plugin.c: Replace "source_location" with
......
/* 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment