On 8/16/19 2:09 PM, Jan Hubicka wrote:
>> On Thu, Aug 15, 2019 at 4:17 PM Jan Hubicka <hubi...@ucw.cz> wrote:
>>>
>>>> On Tue, Aug 6, 2019 at 5:44 PM Martin Liska <mli...@suse.cz> wrote:
>>>>>
>>>>>
>>>>> gcc/ChangeLog:
>>>>
>>>> So I suppose this isn't to call operand_equal_p on two FIELD_DECLs
>>>> but to make two COMPONENT_REFs "more equal"?  If so I then
>>>
>>> yes. The patch originates from my original patchset I believe and it is
>>> what ICF does.
>>>> I suggest to make this change "local" to the COMPONENT_REF handling.
>>>> This also interacts with path-based disambiguation so you want to make
>>>> sure to only make things equal here iff it wouldn't change the outcome
>>>> of path-based analysis.  Honza?
>>>
>>> Indeed this can be handled as part of COMPONENT_REF match.
>>> Access path oracle here basically checks:
>>>  1) that MEM_REF type matches (we want predicate for this)
>>>  2) if it finds type match via same_type_for_tbaa and then it applies
>>>     the assumption about disjointness or overlap
>>>
>>> So I guess ideally we should
>>>
>>>  1) do matching part of COMPONENT_REF
>>>  2) compare OFFSET, BIT_OFFSET
>>>     This establishes that the access has same semantics.
>>>  3) for -fno-strict-aliasing be happy
>>>  4) for -fstrict-aliaisng check if access path applies (we should export
>>>     predicate from tree-ssa-alias as discussed earlier)
>>>  5) compare types by same_type_for_tbaa_p
>>
>> Ick.  This smells like a layering violation to me.  IMHO this extended
>> equality handling should be handled with the overloading/callback
>> and not in native operand_equal_p.  Either on the level of the
>> COMPONENT_REF itself (sounds like that would be needed)
>> or the FIELD_DECL.  Not sure if the above suggestions make
>> it neccessary to look at more than a single COMPONENT_REF/FIELD_DECL
>> in the access path.  If so then watch out for quadraticness as 
>> operand_equal_p
>> traverses a reference chain...
> 
> I suppose we want to match whole access paths at once, since only having
> the MEM_REF allows one to check whether access path oracle applies to
> the given reference or not...

Doing that, can you please Honza point me to a function that should be used for 
it?

Martin

> 
> Honza
>>
>> Richard.
>>
>>> Honza

Reply via email to