aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-05-11 14:53:43 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-05-11 14:53:43 +0200
commitb03c30822bba445ae68699bd7e9efa8f8e07070a (patch)
treee56042c0e2d22f04c029f1f376845c9c63d30b83 /gcc/tree-ssa.c
parentb5e04de5e321eef54e6d85d155981fdbbdd09428 (diff)
downloadgcc-b03c30822bba445ae68699bd7e9efa8f8e07070a.zip
gcc-b03c30822bba445ae68699bd7e9efa8f8e07070a.tar.gz
gcc-b03c30822bba445ae68699bd7e9efa8f8e07070a.tar.bz2
re PR debug/48159 (ICE: SIGSEGV in build2_stat (tree.c:3802) with -ftree-loop-distribution -g)
PR debug/48159 * tree-ssa.c (reset_debug_uses): New function. * tree-flow.h (reset_debug_uses): New prototype. * tree-data-ref.c (stmts_from_loop): Ignore debug stmts. * tree-loop-distribution.c (generate_loops_for_partition): Call reset_debug_uses on the stmts that will be removed. Keep around all debug stmts, don't count them as bits in partition bitmap. (generate_builtin): Don't count debug stmts or labels as bits in partition bitmap. * gcc.dg/pr48159-1.c: New test. * gcc.dg/pr48159-2.c: New test. From-SVN: r173656
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index fe8a74c..f596fcd 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -507,6 +507,37 @@ insert_debug_temps_for_defs (gimple_stmt_iterator *gsi)
}
}
+/* Reset all debug stmts that use SSA_NAME(s) defined in STMT. */
+
+void
+reset_debug_uses (gimple stmt)
+{
+ ssa_op_iter op_iter;
+ def_operand_p def_p;
+ imm_use_iterator imm_iter;
+ gimple use_stmt;
+
+ if (!MAY_HAVE_DEBUG_STMTS)
+ return;
+
+ FOR_EACH_PHI_OR_STMT_DEF (def_p, stmt, op_iter, SSA_OP_DEF)
+ {
+ tree var = DEF_FROM_PTR (def_p);
+
+ if (TREE_CODE (var) != SSA_NAME)
+ continue;
+
+ FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, var)
+ {
+ if (!gimple_debug_bind_p (use_stmt))
+ continue;
+
+ gimple_debug_bind_reset_value (use_stmt);
+ update_stmt (use_stmt);
+ }
+ }
+}
+
/* Delete SSA DEFs for SSA versions in the TOREMOVE bitmap, removing
dominated stmts before their dominators, so that release_ssa_defs
stands a chance of propagating DEFs into debug bind stmts. */