This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR49888, VTA] don't keep VALUEs bound to modified MEMs


On Wed, May 23, 2012 at 06:27:21AM -0300, Alexandre Oliva wrote:
> +static int
> +drop_overlapping_mem_locs (void **slot, void *data)
> +{
> +  struct overlapping_mems *coms = (struct overlapping_mems *)data;
> +  dataflow_set *set = coms->set;
> +  rtx mloc = coms->loc;
> +  variable var = (variable) *slot;
> +
> +  if (var->onepart == ONEPART_VALUE)
> +    {
> +      location_chain loc, *locp;
> +      bool changed = false;
> +      rtx cur_loc;
> +
> +      gcc_assert (var->n_var_parts == 1);
> +
> +      if (shared_var_p (var, set->vars))
> +	{
> +	  for (loc = var->var_part[0].loc_chain; loc; loc = loc->next)
> +	    if (GET_CODE (loc->loc) == MEM
> +		&& !nonoverlapping_memrefs_p (loc->loc, mloc, false))

Isn't nonoverlapping_memrefs_p predicate too conservative?
cselib.c uses canon_true_dependence to decide what should be invalidated.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]