On Fri, 23 Oct 2015, Jan Hubicka wrote: > Hi, > this patch disables TYPE_MODE comparing when we care about address only. > I already disabled other matching of types, but missed this one as it is > placed later in the function body. > > Bootstrapped/regtested x86_64-linux, OK?
Ok. Richard. > Honza > > * fold-const.c (operand_equal_p): Do not compare TYPE_MODE when > only address matters. > Index: fold-const.c > =================================================================== > --- fold-const.c (revision 229153) > +++ fold-const.c (working copy) > @@ -2809,11 +2809,12 @@ operand_equal_p (const_tree arg0, const_ > return 0; > } > > - /* This is needed for conversions and for COMPONENT_REF. > - Might as well play it safe and always test this. */ > + /* When not checking adddresses, this is needed for conversions and for > + COMPONENT_REF. Might as well play it safe and always test this. */ > if (TREE_CODE (TREE_TYPE (arg0)) == ERROR_MARK > || TREE_CODE (TREE_TYPE (arg1)) == ERROR_MARK > - || TYPE_MODE (TREE_TYPE (arg0)) != TYPE_MODE (TREE_TYPE (arg1))) > + || (TYPE_MODE (TREE_TYPE (arg0)) != TYPE_MODE (TREE_TYPE (arg1)) > + && !(flags & OEP_ADDRESS_OF))) > return 0; > > /* If ARG0 and ARG1 are the same SAVE_EXPR, they are necessarily equal. > > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)