From 932b6d616159e9f3d29d2eb04cb6c7915f28d752 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 22 Sep 2014 12:32:09 +0200 Subject: [PATCH] re PR debug/63328 (c-c++-common/gomp/pr60823-3.c test fails with -fcompare-debug) PR debug/63328 * omp-low.c (ipa_simd_modify_stmt_ops): For debug stmts insert a debug source bind stmt setting DEBUG_EXPR_DECL instead of a normal gimple assignment stmt. * c-c++-common/gomp/pr63328.c: New test. From-SVN: r215454 --- gcc/ChangeLog | 7 +++++++ gcc/omp-low.c | 19 ++++++++++++++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/c-c++-common/gomp/pr63328.c | 5 +++++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/gomp/pr63328.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1a59543dcba..02101ee116a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-09-22 Jakub Jelinek + + PR debug/63328 + * omp-low.c (ipa_simd_modify_stmt_ops): For debug stmts + insert a debug source bind stmt setting DEBUG_EXPR_DECL + instead of a normal gimple assignment stmt. + 2014-09-22 James Greenhalgh * config/bfin/bfin.md: Fix use of constraints in define_split. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index be882f72628..82651eae7bb 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -11717,9 +11717,22 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data) if (tp != orig_tp) { repl = build_fold_addr_expr (repl); - gimple stmt - = gimple_build_assign (make_ssa_name (TREE_TYPE (repl), NULL), repl); - repl = gimple_assign_lhs (stmt); + gimple stmt; + if (is_gimple_debug (info->stmt)) + { + tree vexpr = make_node (DEBUG_EXPR_DECL); + stmt = gimple_build_debug_source_bind (vexpr, repl, NULL); + DECL_ARTIFICIAL (vexpr) = 1; + TREE_TYPE (vexpr) = TREE_TYPE (repl); + DECL_MODE (vexpr) = TYPE_MODE (TREE_TYPE (repl)); + repl = vexpr; + } + else + { + stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl), + NULL), repl); + repl = gimple_assign_lhs (stmt); + } gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt); gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); *orig_tp = repl; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c200560689d..9e7330b4a98 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-09-22 Jakub Jelinek + + PR debug/63328 + * c-c++-common/gomp/pr63328.c: New test. + 2014-09-22 Martin Liska PR lto/63270 diff --git a/gcc/testsuite/c-c++-common/gomp/pr63328.c b/gcc/testsuite/c-c++-common/gomp/pr63328.c new file mode 100644 index 00000000000..3958abe166b --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr63328.c @@ -0,0 +1,5 @@ +/* PR debug/63328 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fopenmp-simd -fno-strict-aliasing -fcompare-debug" } */ + +#include "pr60823-3.c" -- 2.30.2