https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104498
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rsandifo at gcc dot gnu.org --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to avieira from comment #3) > Sorry some confusion there, I thought it was base_alias_check bailing out > early, but that seems to return true, it is the memrefs_conflict_p that > returns 0. > > I suspect rtx_equal_for_memref_p should have returned 1 for: > x: > (plus:DI (mult:DI (reg:DI 99 [ off.0_1 ]) > (const_int 4 [0x4])) > (const:DI (plus:DI (symbol_ref:DI ("*.LANCHOR0") [flags 0x182]) > (const_int 16 [0x10])))) > > and y: > (plus:DI (mult:DI (reg:DI 99 [ off.0_1 ]) > (const_int 4 [0x4])) > (symbol_ref:DI ("b") [flags 0x2] <var_decl 0xfffff7635f30 b>)) > > But it does not... must be because of that trailing (equivalence notes? > that's what I assume they are?) It's the section anchor that breaks things. There's a duplicate bug about this somewhere, or a thread on the mailing list. But IIRC Richard had fixed this?