public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Daniel Berlin" <dberlin@dberlin.org>
To: "Tehila Meyzels" <TEHILA@il.ibm.com>
Cc: dpatel@gmail.com, gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org,
	 	"Michael Matz" <matz@suse.de>,
	"Revital1 Eres" <ERES@il.ibm.com>,
	 	trevor_smigiel@playstation.sony.com,
	 	"Ulrich Weigand" <Ulrich.Weigand@de.ibm.com>,
	 	"Victor Kaplansky" <VICTORK@il.ibm.com>,
	 	"Ayal Zaks" <ZAKS@il.ibm.com>,
	"Dorit Nuzman" <DORIT@il.ibm.com>
Subject: Re: [RFC] Improve Tree-SSA if-conversion - convergence of efforts
Date: Wed, 01 Aug 2007 15:27:00 -0000	[thread overview]
Message-ID: <4aca3dc20708010827k7ff7ba67kfa156d3428eed071@mail.gmail.com> (raw)
In-Reply-To: <OF6D5C42EB.60221AE4-ONC225732A.0027ACC6-C225732A.003C5B48@il.ibm.com>

On 8/1/07, Tehila Meyzels <TEHILA@il.ibm.com> wrote:
> "Daniel Berlin" <dberlin@dberlin.org> wrote on 31/07/2007 18:00:57:
>
> >
> > I agree with you for conditional stores/loads.
>
> Great!
>
> >
> > The unconditional store/load stuff, however, is exactly what
> > tree-ssa-sink was meant to do, and belongs there (this is #3 above).
> > I'm certainly going to fight tooth and nail against trying to shoehorn
> > unconditional store sinking into if-conv.
>
> Sometimes, store-sinking can cause performance degradations.
> One reason for that, is increasing register pressure, due to extending life
> range of registers.
>
> In addition, in case we have a store followed by a branch, store sinking
> result will be a branch followed by a store.
> On some architectures, the former can be executed in parallel, as opposed
> to the latter.
> Thus, in this case, it worth executing store-sinking only when it helps the
> if-conversion to get rid of the branch.
>

> How do you suggest to solve this problem, in case store-sinking will be
> part of the tree-sink pass?
>
Store sinking already *is* part of the tree-sink pass. It just only
sinks a small number of stores.
The solution to the problem that "sometimes you make things harder for
the target" is to fix that in the backend.  In this case, the
scheduler will take care of it.

All of our middle end optimizations will sometimes have bad effects
unless the backend fixes it up.    Trying to guess what is going to
happen 55 passes down the line is a bad idea unless you happen to be a
very good psychic.

As a general rule of thumb, we are happy to make the backend as target
specific and ask as many target questions as you like.  The middle
end, not so much.  There are very few passes in the middle end that
can/should/do ask anything about the target.  Store sinking is not one
of them, and I see no good reason it should be.

> Another point, what about (unconditional) load hoisting:
> It's surely not related to sink pass, right?
>
PRE already will hoist unconditional loads out of loops, and in places
where it will eliminate redundancy.

It could also hoist loads in non-redundancy situations, it is simply
the case that it's current heuristic  does not think this is a good
idea.

Thus, if you wanted to do unconditional load hoisting, the thing to do
is to make a function like do_regular_insertion in tree-ssa-pre.c, and
call it from insert_aux.

We already have another heuristic for partially antic fully available
expressions, see do_partial_partial_insertion

  reply	other threads:[~2007-08-01 15:27 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-31 14:51 Tehila Meyzels
2007-07-31 15:12 ` Daniel Berlin
2007-07-31 15:14   ` Michael Matz
2007-08-06 12:16     ` Tehila Meyzels
2007-08-06 14:31       ` Michael Matz
2007-08-01 11:02   ` Tehila Meyzels
2007-08-01 15:27     ` Daniel Berlin [this message]
2007-08-01 18:52       ` Ayal Zaks
2007-08-01 19:59         ` Daniel Berlin
2007-09-12 22:10 ` trevor_smigiel
2007-09-13 10:07   ` Richard Guenther
2007-09-13 10:55   ` Michael Matz

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=4aca3dc20708010827k7ff7ba67kfa156d3428eed071@mail.gmail.com \
    --to=dberlin@dberlin.org \
    --cc=DORIT@il.ibm.com \
    --cc=ERES@il.ibm.com \
    --cc=TEHILA@il.ibm.com \
    --cc=Ulrich.Weigand@de.ibm.com \
    --cc=VICTORK@il.ibm.com \
    --cc=ZAKS@il.ibm.com \
    --cc=dpatel@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=gcc@gcc.gnu.org \
    --cc=matz@suse.de \
    --cc=trevor_smigiel@playstation.sony.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).