http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49390
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-06-13 14:28:31 UTC --- Perhaps, if the tests are more expensive, case MEM: if (for_gcse) could first do the cheap tests, then if (!exp_equiv_p (XEXP (x, 0), XEXP (y, 0), validate, 1)) return 0; then do the more expensive tests and then just return 1; instead of falling through into the generic code. Case which I agree would be nice to say exp_equiv_p is true is e.g.: if (c->s1 == 0) c++; else foo (1, 0, c->s1, c->s2); foo (2, 0, c->s1, c->s2); Here e.g. c_4(D)->s1 and c_1->s1 aren't equal MEM_EXPRs, but they have the same SSA_VAR_NAME (not sure if we need to check it, perhaps for restrict?), pt->vars and all other pt members are the same too, so I think both MEM_ATTRS should behave the same in the alias oracle.