> Hi Honza! > > On 2020-11-19T13:33:53+0100, Jan Hubicka <hubi...@ucw.cz> wrote: > > --- a/gcc/ipa-icf-gimple.c > > +++ b/gcc/ipa-icf-gimple.c > > @@ -245,6 +245,14 @@ func_checker::hash_operand (const_tree arg, > > inchash::hash &hstate, > > break; > > } > > > > + /* In gimple all clobbers can be considered equal: while comparaing two > > + gimple clobbers we match the left hand memory accesses. */ > > + if (TREE_CLOBBER_P (arg)) > > + { > > + hstate.add_int (0xc10bbe5); > > + return; > > + } > > + > > return operand_compare::hash_operand (arg, hstate, flags); > > } > > I understand correctly that 0xc10bbe5 here just a "random"/fixed number > (maybe should be documented as such?), so that we get stable behavior for > any 'TREE_CLOBBER_P (arg)' cases, and it isn't meant to convey any > meaning (that I'm not seeing)?
Yes, we need to avoid calling hash_operand becaue we do not want to include additional info it hashes and we want to have good chance not colliding with other items operand hashing adds. It usually (apparently not always) adds first gimple code, so hashing it random large number is quite safe. Honza > > > Grüße > Thomas > > > > @@ -306,6 +314,10 @@ func_checker::operand_equal_p (const_tree t1, > > const_tree t2, > > default: > > break; > > } > > + /* In gimple all clobbers can be considered equal. We match the right > > hand > > + memory accesses. */ > > + if (TREE_CLOBBER_P (t1) || TREE_CLOBBER_P (t2)) > > + return TREE_CLOBBER_P (t1) == TREE_CLOBBER_P (t2); > > > > return operand_compare::operand_equal_p (t1, t2, flags); > > } > ----------------- > Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany > Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, > Alexander Walter