fix regression with MEM commoning
This fixes a regression when canonicalizing refs for LIM PR84362. This possibly unshares and rewrites the refs in the internal data and thus pointer equality no longer works in ref_always_accessed computation. 2020-04-29 Richard Biener <rguenther@suse.de> * tree-ssa-loop-im.c (ref_always_accessed::operator ()): Just check whether the stmt stores.
This commit is contained in:
parent
1d2290caad
commit
df30ab7069
2 changed files with 10 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2020-04-29 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* tree-ssa-loop-im.c (ref_always_accessed::operator ()):
|
||||
Just check whether the stmt stores.
|
||||
|
||||
2020-04-28 Alexandre Oliva <oliva@adacore.com>
|
||||
|
||||
PR target/94812
|
||||
|
|
|
@ -2179,20 +2179,21 @@ ref_always_accessed::operator () (mem_ref_loc *loc)
|
|||
{
|
||||
class loop *must_exec;
|
||||
|
||||
if (!get_lim_data (loc->stmt))
|
||||
struct lim_aux_data *lim_data = get_lim_data (loc->stmt);
|
||||
if (!lim_data)
|
||||
return false;
|
||||
|
||||
/* If we require an always executed store make sure the statement
|
||||
stores to the reference. */
|
||||
is a store. */
|
||||
if (stored_p)
|
||||
{
|
||||
tree lhs = gimple_get_lhs (loc->stmt);
|
||||
if (!lhs
|
||||
|| lhs != *loc->ref)
|
||||
|| !(DECL_P (lhs) || REFERENCE_CLASS_P (lhs)))
|
||||
return false;
|
||||
}
|
||||
|
||||
must_exec = get_lim_data (loc->stmt)->always_executed_in;
|
||||
must_exec = lim_data->always_executed_in;
|
||||
if (!must_exec)
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue