mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-25 09:40:43 +08:00
Kill known equivalences before a new assignment in the path solver.
Every time we have a killing statement, we must also kill the relations seen so far. This is similar to what we did for the equivs inherent in PHIs along a path. Tested on x86-64 and ppc64le Linux. gcc/ChangeLog: * gimple-range-path.cc (path_range_query::range_defined_in_block): Call killing_def.
This commit is contained in:
parent
2f0b6a971a
commit
aeb10f8d2a
@ -288,8 +288,14 @@ path_range_query::range_defined_in_block (irange &r, tree name, basic_block bb)
|
||||
|
||||
if (gimple_code (def_stmt) == GIMPLE_PHI)
|
||||
ssa_range_in_phi (r, as_a<gphi *> (def_stmt));
|
||||
else if (!range_of_stmt (r, def_stmt, name))
|
||||
r.set_varying (TREE_TYPE (name));
|
||||
else
|
||||
{
|
||||
if (name)
|
||||
get_path_oracle ()->killing_def (name);
|
||||
|
||||
if (!range_of_stmt (r, def_stmt, name))
|
||||
r.set_varying (TREE_TYPE (name));
|
||||
}
|
||||
|
||||
if (bb)
|
||||
m_non_null.adjust_range (r, name, bb);
|
||||
|
Loading…
x
Reference in New Issue
Block a user