On Mon, 26 Oct 2015, Jan Hubicka wrote: > > On Sat, 24 Oct 2015, Jan Hubicka wrote: > > > > > Hi, as discussed earlier, the types_compatible_p in operand_equal_p > > > seems redundant. (it is callers work to figure out how much of type > > > matching it wants. If not, we probably want to treat most of other > > > references and casts simlar way). > > > > > > Bootstrapped/regtested x86_64-linux. OK? > > > > Ok. > > > > Btw, you need to audit tree hashing for required changes with respect > > to your ones to operand_equal_p. operand_equal_p is the equality > > function for it. > > Yep, I am aware that tree hasing must match. I think my changes are safe so > far: > - ctors are already hashed resonably > - types are not hashed so the changes strenghtening OEP_ADDRESS_OF are safe > - OEP_ADDRESS_OF (so far) still boils down to syntactic matching. > > Looking at this I noticed that simple_cst_equal in tree.c seems to reimplement > OEP_CONSTANT part of operand_equal_p and it seems to have bugs - i.e. not > comparing index for CONSTRUCTOR ELTs.
simple_cst_equal is also quite incomplete and I'd rather have it die... > Also I was always bit unsure how the path through operand_equal_p that allows > different tree codes to match (stripping MEM_REF) and use of STRIP_NOPS > combine > with add_expr that doesn't do these. Do we have some mechanism that will > prevent this from corrupting hashtables? We should ensure that equal trees get equal hash codes (heh, probably easy to add a wrapper around operand_equal_p double-checking that). Richard. > Honza > > > > Thanks, > > Richard. > > > > > * fold-const.c (operand_equal_p): Drop types_compatible_p when > > > comparing references. > > > > > > Index: fold-const.c > > > =================================================================== > > > --- fold-const.c (revision 229278) > > > +++ fold-const.c (working copy) > > > @@ -2982,9 +2982,6 @@ operand_equal_p (const_tree arg0, const_ > > > TYPE_SIZE (TREE_TYPE (arg1)), > > > flags))) > > > return 0; > > > - /* Verify that access happens in similar types. */ > > > - if (!types_compatible_p (TREE_TYPE (arg0), TREE_TYPE (arg1))) > > > - return 0; > > > /* Verify that accesses are TBAA compatible. */ > > > if (flag_strict_aliasing > > > && (!alias_ptr_types_compatible_p > > > > > > > > > > -- > > Richard Biener <rguent...@suse.de> > > SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB > > 21284 (AG Nuernberg) > > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)