public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Michael Matz <matz@suse.de>
To: Alex Turjan <aturjan@yahoo.com>
Cc: gcc@gcc.gnu.org, rsandifor@codesourcery.com, 	zadeck@naturalbridge.com
Subject: Re: question about DSE
Date: Tue, 08 Sep 2009 10:55:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.64.0909081238380.29566@wotan.suse.de> (raw)
In-Reply-To: <969088.51632.qm@web62405.mail.re1.yahoo.com>

Hi,

On Tue, 8 Sep 2009, Alex Turjan wrote:

> (insn 374 47 52 2 test.c:107 (set (mem/c:SI (plus:PSI (reg/f:PSI 55 ptr15)
>                 (const_int 96 [0x60])) [19 fac_iter+0 S4 A32])
>         (reg/v:SI 16 r16 [orig:161 step109 ] [161])) 48  {si_indexed_store_incl_ra} (nil))

An SI store to a MEM of alias set 19 (and a non-trapping while we're at 
it, the /c marker on the MEM) ...

> despite being consumed (in bb3) by the following 2 loads:
> (insn 380 71 64 3 test.c:112 (set (reg:HI 1 r1)
>         (mem:HI (plus:PSI (reg/f:PSI 55 ptr15)
>                 (const_int 96 [0x60])) [0 S2 A16])) 12 {load} (nil))
> 
> (insn 382 346 65 3 test.c:112 (set (reg:HI 5 r5)
>         (mem:HI (plus:PSI (reg/f:PSI 55 ptr15)
>                 (const_int 98 [0x62])) [0 S2 A16])) 12 {load} (nil))

... and two HI loads of MEMs of alias set 0.  This should be fine as set 0 
aliases with everything.  Either you need to open a bugreport with 
necessary patches to reproduce the above, or make it reproduce on trunk, 
or you need to debug dse.c yourself.

There is one peculiarity about dse.c which might be able to help you in 
determining the cause.  dse.c operates under the assumption that all spill 
slot accesses generated by reload are using exactly the same alias set and 
that any such slot is completely unaliased by anything else including 
stuff with alias set 0.  This is done only by the after-reload dse pass.

See functions dse_record_singleton_alias_set and friends.  Your loads 
should kill the active stores in function check_mem_read_rtx should you 
need to debug it that far.

My assumption would be these two split loads of HImode are generated by 
your backend from a given SImode MEM.  If so, you need to make sure to 
copy the MEM_ALIAS_SET, at least for spill slots (better for everything) 
into the newly generated HImode mems.  For spill slots it's not enough to 
set it to zero.


Ciao,
Michael.

  parent reply	other threads:[~2009-09-08 10:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-08  9:57 Alex Turjan
2009-09-08 10:25 ` Andrew Haley
2009-09-08 10:55 ` Michael Matz [this message]
2009-09-09 16:59   ` Alex Turjan
2009-09-09 17:59     ` Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.64.0909081238380.29566@wotan.suse.de \
    --to=matz@suse.de \
    --cc=aturjan@yahoo.com \
    --cc=gcc@gcc.gnu.org \
    --cc=rsandifor@codesourcery.com \
    --cc=zadeck@naturalbridge.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).