http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49330
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-06-09 10:04:28 UTC --- Ugh. base_alias_check for (symbol_ref:DI ("x") <var_decl 0x7ffff1a32000 x>) and (plus:DI (reg:DI 62 [ d.1 ]) (symbol_ref:DI ("y") <var_decl 0x7ffff1a320a0 y>)) returns 0. I'm afraid dropping the base_alias_check call would significantly penalize generated code, after all we still sometimes have MEM accesses without MEM_EXPR. Perhaps we could rely on REG_POINTER bits, extend them to SYMBOL_REF too and only do return NULL from find_base_term if SYMBOL_REF doesn't have SYMBOL_REF_POINTER bit set. During CSE etc., when replacing a pseudo with its definition REG_POINTER/SYMBOL_REF_POINTER would be kept only if it is set on the pseudo being optimized away as well. Thus, any casts from pointers to correspondingly sized integers and back would be seen in the RTL.