Commit dd6f2cf9 by Richard Biener Committed by Richard Biener

re PR target/69345 (459.GemsFDTD regression)

2016-01-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69345
	* tree-ssa-sccvn.h (VN_INFO_RANGE_INFO): New inline function.
	(VN_INFO_PTR_INFO): Likewise.
	* tree-ssa-sccvn.c (set_ssa_val_to): Avoid clearing points-to
	info when it is equal between non-dominating SSA names.
	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
	Make sure to look at original SSA infos.

From-SVN: r232603
parent bf0bb970
2016-01-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/69345
* tree-ssa-sccvn.h (VN_INFO_RANGE_INFO): New inline function.
(VN_INFO_PTR_INFO): Likewise.
* tree-ssa-sccvn.c (set_ssa_val_to): Avoid clearing points-to
info when it is equal between non-dominating SSA names.
* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
Make sure to look at original SSA infos.
2016-01-20 Jeff Law <law@redhat.com> 2016-01-20 Jeff Law <law@redhat.com>
PR target/25114 PR target/25114
......
...@@ -4033,22 +4033,22 @@ eliminate_dom_walker::before_dom_children (basic_block b) ...@@ -4033,22 +4033,22 @@ eliminate_dom_walker::before_dom_children (basic_block b)
{ {
basic_block sprime_b = gimple_bb (SSA_NAME_DEF_STMT (sprime)); basic_block sprime_b = gimple_bb (SSA_NAME_DEF_STMT (sprime));
if (POINTER_TYPE_P (TREE_TYPE (lhs)) if (POINTER_TYPE_P (TREE_TYPE (lhs))
&& SSA_NAME_PTR_INFO (lhs) && VN_INFO_PTR_INFO (lhs)
&& !SSA_NAME_PTR_INFO (sprime)) && ! VN_INFO_PTR_INFO (sprime))
{ {
duplicate_ssa_name_ptr_info (sprime, duplicate_ssa_name_ptr_info (sprime,
SSA_NAME_PTR_INFO (lhs)); VN_INFO_PTR_INFO (lhs));
if (b != sprime_b) if (b != sprime_b)
mark_ptr_info_alignment_unknown mark_ptr_info_alignment_unknown
(SSA_NAME_PTR_INFO (sprime)); (SSA_NAME_PTR_INFO (sprime));
} }
else if (!POINTER_TYPE_P (TREE_TYPE (lhs)) else if (INTEGRAL_TYPE_P (TREE_TYPE (lhs))
&& SSA_NAME_RANGE_INFO (lhs) && VN_INFO_RANGE_INFO (lhs)
&& !SSA_NAME_RANGE_INFO (sprime) && ! VN_INFO_RANGE_INFO (sprime)
&& b == sprime_b) && b == sprime_b)
duplicate_ssa_name_range_info (sprime, duplicate_ssa_name_range_info (sprime,
SSA_NAME_RANGE_TYPE (lhs), SSA_NAME_RANGE_TYPE (lhs),
SSA_NAME_RANGE_INFO (lhs)); VN_INFO_RANGE_INFO (lhs));
} }
/* Inhibit the use of an inserted PHI on a loop header when /* Inhibit the use of an inserted PHI on a loop header when
......
...@@ -3092,7 +3092,11 @@ set_ssa_val_to (tree from, tree to) ...@@ -3092,7 +3092,11 @@ set_ssa_val_to (tree from, tree to)
/* Use that from the dominator. */ /* Use that from the dominator. */
SSA_NAME_PTR_INFO (to) = SSA_NAME_PTR_INFO (from); SSA_NAME_PTR_INFO (to) = SSA_NAME_PTR_INFO (from);
} }
else else if (! SSA_NAME_PTR_INFO (from)
/* Handle the case of trivially equivalent info. */
|| memcmp (SSA_NAME_PTR_INFO (to),
SSA_NAME_PTR_INFO (from),
sizeof (ptr_info_def)) != 0)
{ {
/* Save old info. */ /* Save old info. */
if (! VN_INFO (to)->info.ptr_info) if (! VN_INFO (to)->info.ptr_info)
......
...@@ -243,4 +243,24 @@ vn_valueize (tree name) ...@@ -243,4 +243,24 @@ vn_valueize (tree name)
return name; return name;
} }
/* Get at the original range info for NAME. */
inline range_info_def *
VN_INFO_RANGE_INFO (tree name)
{
return (VN_INFO (name)->info.range_info
? VN_INFO (name)->info.range_info
: SSA_NAME_RANGE_INFO (name));
}
/* Get at the original pointer info for NAME. */
inline ptr_info_def *
VN_INFO_PTR_INFO (tree name)
{
return (VN_INFO (name)->info.ptr_info
? VN_INFO (name)->info.ptr_info
: SSA_NAME_PTR_INFO (name));
}
#endif /* TREE_SSA_SCCVN_H */ #endif /* TREE_SSA_SCCVN_H */
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