diff options
author | Tom de Vries <tom@codesourcery.com> | 2014-10-16 12:42:41 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2014-10-16 12:42:41 +0000 |
commit | 90ad8d0053d7268d02702a3b735737a5b1f7ea11 (patch) | |
tree | 5107f0c554e588bb3d6a6133f58e90df08dc10e8 /gcc | |
parent | f6d2e222bc13e5bc8b96ae17a4cb3104be6407dd (diff) | |
download | gcc-90ad8d0053d7268d02702a3b735737a5b1f7ea11.zip gcc-90ad8d0053d7268d02702a3b735737a5b1f7ea11.tar.gz gcc-90ad8d0053d7268d02702a3b735737a5b1f7ea11.tar.bz2 |
Assert no use with SSA_NAME_IN_FREELIST before using freelist.
2014-10-16 Tom de Vries <tom@codesourcery.com>
* tree-into-ssa.c (update_ssa): Assert that there's no ssa use operand
with SSA_NAME_IN_FREELIST.
From-SVN: r216318
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-into-ssa.c | 39 |
2 files changed, 44 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9d817c1..5f398d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-10-16 Tom de Vries <tom@codesourcery.com> + + * tree-into-ssa.c (update_ssa): Assert that there's no ssa use operand + with SSA_NAME_IN_FREELIST. + 2014-10-16 Richard Biener <rguenther@suse.de> PR middle-end/63554 diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 01203de..f1983f1 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -3161,6 +3161,45 @@ update_ssa (unsigned update_flags) if (!need_ssa_update_p (cfun)) return; +#ifdef ENABLE_CHECKING + timevar_push (TV_TREE_STMT_VERIFY); + + bool err = false; + + FOR_EACH_BB_FN (bb, cfun) + { + gimple_stmt_iterator gsi; + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + { + gimple stmt = gsi_stmt (gsi); + + ssa_op_iter i; + use_operand_p use_p; + FOR_EACH_SSA_USE_OPERAND (use_p, stmt, i, SSA_OP_ALL_USES) + { + tree use = USE_FROM_PTR (use_p); + if (TREE_CODE (use) != SSA_NAME) + continue; + + if (SSA_NAME_IN_FREE_LIST (use)) + { + error ("statement uses released SSA name:"); + debug_gimple_stmt (stmt); + fprintf (stderr, "The use of "); + print_generic_expr (stderr, use, 0); + fprintf (stderr," should have been replaced\n"); + err = true; + } + } + } + } + + if (err) + internal_error ("cannot update SSA form"); + + timevar_pop (TV_TREE_STMT_VERIFY); +#endif + timevar_push (TV_TREE_SSA_INCREMENTAL); if (dump_file && (dump_flags & TDF_DETAILS)) |