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 12:13 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> 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.

Yeah, I think nonoverlapping_memrefs_p should become private to alias.c

Richard.

> ? ? ? ?Jakub


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