On Mon, May 6, 2013 at 5:28 PM, Jeff Law wrote: > On 05/05/2013 04:18 AM, Steven Bosscher wrote: >> >> On Fri, May 3, 2013 at 3:10 PM, Julian Brown wrote: >>> >>> gcc/ >>> * gcse.c (compute_ld_motion_mems): Invalidate non-simple mem refs >>> in REG_EQUAL notes. >> >> >> Makes sense to me. Looking at REG_EQUAL notes in hash_scan_set is >> something relatively new. Your patch fixes something we appear to have >> overlooked. > > I'd still like to see the before/after dumps. While I think the patch is > reasonable as well, those dumps should make it clearer to anyone looking at > this in the future what was going on -- particularly important since we > don't have an in-tree port which exhibits this problem.
The dumps are attached to the PR, and I know what is going on: Paolo and I added support for hashing REG_EQUAL notes, to recover most (if not all) of the PRE/HOIST opportunities lost along with libcall notes. Before that change, the worst that could happen would have been incorrect REG_EQUAL notes. Now that values in notes are considered as PRE/HOIST candidates, MEMs within notes have to be invalidated. The patch fixes something Paolo and I simply overlooked. Ciao! Steven