mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-19 21:31:42 +08:00
re PR rtl-optimization/72488 (wrong code (SIGFPE) at -Os and above on x86_64-linux-gnu (in the 64-bit mode))
2017-01-19 Richard Biener <rguenther@suse.de> PR tree-optimization/72488 * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make sure to restore SSA info. * tree-ssa.c (verify_ssa): Verify SSA info is not shared. From-SVN: r244623
This commit is contained in:
parent
4f94fa1186
commit
ed20a004e1
@ -1,3 +1,10 @@
|
||||
2017-01-19 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/72488
|
||||
* tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
|
||||
sure to restore SSA info.
|
||||
* tree-ssa.c (verify_ssa): Verify SSA info is not shared.
|
||||
|
||||
2017-01-19 Richard Earnshaw <rearnsha@arm.com>
|
||||
|
||||
PR rtl-optimization/79121
|
||||
|
@ -4844,6 +4844,7 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
|
||||
walker.walk (ENTRY_BLOCK_PTR_FOR_FN (cfun));
|
||||
if (walker.fail)
|
||||
{
|
||||
scc_vn_restore_ssa_info ();
|
||||
free_scc_vn ();
|
||||
return false;
|
||||
}
|
||||
|
@ -1027,24 +1027,49 @@ verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
|
||||
|
||||
timevar_push (TV_TREE_SSA_VERIFY);
|
||||
|
||||
/* Keep track of SSA names present in the IL. */
|
||||
size_t i;
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
gimple *stmt;
|
||||
TREE_VISITED (name) = 0;
|
||||
/* Keep track of SSA names present in the IL. */
|
||||
size_t i;
|
||||
tree name;
|
||||
hash_map <void *, tree> ssa_info;
|
||||
|
||||
verify_ssa_name (name, virtual_operand_p (name));
|
||||
|
||||
stmt = SSA_NAME_DEF_STMT (name);
|
||||
if (!gimple_nop_p (stmt))
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
basic_block bb = gimple_bb (stmt);
|
||||
if (verify_def (bb, definition_block,
|
||||
name, stmt, virtual_operand_p (name)))
|
||||
goto err;
|
||||
gimple *stmt;
|
||||
TREE_VISITED (name) = 0;
|
||||
|
||||
verify_ssa_name (name, virtual_operand_p (name));
|
||||
|
||||
stmt = SSA_NAME_DEF_STMT (name);
|
||||
if (!gimple_nop_p (stmt))
|
||||
{
|
||||
basic_block bb = gimple_bb (stmt);
|
||||
if (verify_def (bb, definition_block,
|
||||
name, stmt, virtual_operand_p (name)))
|
||||
goto err;
|
||||
}
|
||||
|
||||
void *info = NULL;
|
||||
if (POINTER_TYPE_P (TREE_TYPE (name)))
|
||||
info = SSA_NAME_PTR_INFO (name);
|
||||
else if (INTEGRAL_TYPE_P (TREE_TYPE (name)))
|
||||
info = SSA_NAME_RANGE_INFO (name);
|
||||
if (info)
|
||||
{
|
||||
bool existed;
|
||||
tree &val = ssa_info.get_or_insert (info, &existed);
|
||||
if (existed)
|
||||
{
|
||||
error ("shared SSA name info");
|
||||
print_generic_expr (stderr, val, 0);
|
||||
fprintf (stderr, " and ");
|
||||
print_generic_expr (stderr, name, 0);
|
||||
fprintf (stderr, "\n");
|
||||
goto err;
|
||||
}
|
||||
else
|
||||
val = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user