https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65270

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[5 regression] ICF needs to |issues with merging memory
                   |match TYPE attributes on    |accesses from different
                   |memory accesses             |code paths

--- Comment #25 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
I think the ICF wrong code mentioned here should be now all fixed.  

I did not manage to create a testcase for RESTRICT flag unification, because
the RESTRICT flag seems to not be taken into an account when the variable is
references thorough pointer to another variable.

I think we do have problem with operand_equal_p being used across different
contexts in several cases (not only in tree-tail-merge). Perhaps for next
stage1 we ought to separate the logic into icf-op class that will have enough
flexibility to do the right thing in all cases? (i.e. have valueize hook that
can be used by ICF to prove equivalences across classes and in addition to
existing operand_equal_p flags it will actually know if it should match memory
attributes because the operands come from different code path/broader context). 

icf-op also should have hash method to produce stable hash so it can be plugged
into icf-gimple (that in turn can be plugged into tree-tail-merge).

Reply via email to