> On Fri, 20 Nov 2020, Jan Hubicka wrote: > > > Hi, > > one of common remaining reasons for ICF to fail after loading in fuction > > body is mismatched type of automatic vairable. This is becuase > > compatible_types_p resorts to checking TYPE_MAIN_VARIANTS for > > euqivalence that prevents merging many TBAA compaitle cases. (And thus > > is also not reflected by the hash extended by alias sets of accesses.) > > > > Since in gimple > > automatic variables are just blocks of memory I think we should only > > check its size only. All accesses are matched when copmparing the actual > > loads/stores. > > > > I am not sure if we need to match types of other DECLs but I decided I can > > try > > to be safe here: for PARM_DECl/RESUILT_DECL we match them anyway to be sure > > that functions are ABI compatible. For CONST_DECL and readonly global > > VAR_DECLs they are matched when comparing their constructors. So i think > > we can keep the compare to be safe and perhaps play with it next stage1. > > > > Bootstrapped/regtested x86_64-linux, OK? > > I suppose we eventually check the types of SSA names? OK if so.
Yes, SSA names are checked as part of operand_equal_p. So VAR_DECLs of register variables are safe too (as are SSA_NAMES with no associated VAR_DECL) Honza