From: Segher Boessenkool <segher@kernel.crashing.org>
To: Jeff Law <law@redhat.com>
Cc: Michael Matz <matz@suse.de>, Bernd Schmidt <bschmidt@redhat.com>,
gcc-patches@gcc.gnu.org
Subject: Re: [PATCH v2 0/9] Separate shrink-wrapping
Date: Fri, 09 Sep 2016 15:43:00 -0000 [thread overview]
Message-ID: <20160909154002.GE28260@gate.crashing.org> (raw)
In-Reply-To: <fe792641-932c-ac21-d2f0-978fff9ec170@redhat.com>
On Fri, Sep 09, 2016 at 09:26:39AM -0600, Jeff Law wrote:
> >>I think one of the questions (and I haven't looked through the whole
> >>thread yet to see if it's answered) is why the basic shrink-wrapping
> >>algorithm can't be applied to each of the prologue components -- though
> >>you may have answered it with your loop example below.
> >
> >You get code size explosion with the "basic" algorithm. And a lot of
> >that isn't really worth it: avoiding the whole prologue/epilogue is
> >usually worth copying some blocks for, but avoiding just a single register
> >save/restore pair? More doubtful.
> Understood. We have similar balancing problems elsewhere. How much
> duplication should we allow to expose a CSE or eliminate a conditional
> jump on a path through the CFG.
>
> So I think sticking with this as a design decision makes sense -- does
> it impact the issue around running a particular component's prologue
> more than once?
I don't follow, sorry; could you rephrase?
> >>Thanks. I'd been wondering about when it'd be useful to push prologue
> >>code into a loop nest when I saw the patches fly by, but didn't think
> >>about it too much. I haven't looked at the shrink-wrapping literature
> >>in years, but I don't recall it having any concept that there were cases
> >>where sinking into a loop nest was profitable.
> >
> >It isn't common, but it does happen. If you use a proper cost metric
> >based on executiuon frequency with some algorithm then that algorithm will
> >naturally avoid placing *logues into loops.
> Right and the cases where it's placing them into loops it's going to be
> doing so on paths that are unlikely executed within the loop. ISTM that
> using frequencies is a significant step forward over the older placement
> algorithms in this space (which IIRC were structured as simple dataflow
> solvers) -- with the added advantage that if we have profiling data we
> can make better decisions.
Using the known/guessed execution frequencies is not really new, just not
forty years old :-)
> Does this impact the compile time computation complexity issue that was
> raised elsewhere?
I'm not sure what you mean here either, sorry. It is all O(NM) with N
the number of BBs and M the number of components (and assuming dom
lookups are constant time, as usual).
Segher
next prev parent reply other threads:[~2016-09-09 15:40 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 1:43 Segher Boessenkool
2016-08-01 1:43 ` [PATCH 2/9] cfgcleanup: Don't confuse CFI when -fshrink-wrap-separate Segher Boessenkool
2016-09-08 17:51 ` Jeff Law
2016-08-01 1:43 ` [PATCH 1/9] separate shrink-wrap: New command-line flag, status flag, hooks, and doc Segher Boessenkool
2016-08-29 9:31 ` Bernd Schmidt
2016-08-29 14:30 ` Segher Boessenkool
2016-09-08 17:37 ` Jeff Law
2016-09-09 11:03 ` Bernd Schmidt
2016-09-09 15:13 ` Segher Boessenkool
2016-09-09 18:31 ` Jeff Law
2016-09-09 20:41 ` Segher Boessenkool
2016-09-12 16:49 ` Jeff Law
2016-09-09 15:51 ` Jeff Law
2016-09-09 15:40 ` Segher Boessenkool
2016-09-09 16:58 ` Jeff Law
2016-09-08 17:48 ` Jeff Law
2016-09-09 15:44 ` Segher Boessenkool
2016-08-01 1:43 ` [PATCH 3/9] dce: Don't dead-code delete separately wrapped restores Segher Boessenkool
2016-09-08 17:52 ` Jeff Law
2016-09-09 15:59 ` Segher Boessenkool
2016-09-09 16:39 ` Jeff Law
2016-08-01 1:57 ` [PATCH 7/9] cprop: Leave RTX_FRAME_RELATED_P instructions alone Segher Boessenkool
2016-09-08 18:34 ` Jeff Law
2016-09-09 21:21 ` Segher Boessenkool
2016-08-01 1:57 ` [PATCH 4/9] regrename: Don't rename restores Segher Boessenkool
2016-09-08 17:54 ` Jeff Law
2016-09-09 21:05 ` Segher Boessenkool
2016-09-12 17:01 ` Jeff Law
2016-08-01 1:57 ` [PATCH 8/9] shrink-wrap: shrink-wrapping for separate components Segher Boessenkool
2016-09-08 19:03 ` Jeff Law
2016-09-09 22:03 ` Segher Boessenkool
2016-09-12 18:21 ` Jeff Law
2016-09-14 13:45 ` Segher Boessenkool
2016-09-15 16:47 ` Jeff Law
2016-08-01 1:57 ` [PATCH 9/9] rs6000: Separate shrink-wrapping Segher Boessenkool
2016-08-01 2:12 ` [PATCH 5/9] regrename: Don't run if function was separately shrink-wrapped Segher Boessenkool
2016-09-08 17:54 ` Jeff Law
2016-08-01 2:12 ` [PATCH 6/9] sel-sched: Don't mess with register restores Segher Boessenkool
2016-08-04 7:33 ` Andrey Belevantsev
2016-09-08 17:55 ` Jeff Law
2016-09-09 21:13 ` Segher Boessenkool
2016-09-12 17:39 ` Jeff Law
2016-09-14 13:28 ` Segher Boessenkool
2016-08-04 0:05 ` [PATCH v2 0/9] Separate shrink-wrapping Segher Boessenkool
2016-08-24 16:04 ` Segher Boessenkool
2016-08-26 13:03 ` Bernd Schmidt
2016-08-26 13:48 ` David Malcolm
2016-08-26 13:55 ` Bernd Schmidt
2016-08-26 14:50 ` Segher Boessenkool
2016-08-26 15:03 ` Bernd Schmidt
2016-08-26 16:27 ` Segher Boessenkool
2016-09-08 16:58 ` Jeff Law
2016-09-09 15:26 ` Segher Boessenkool
2016-09-09 16:26 ` Jeff Law
2016-09-09 16:51 ` Segher Boessenkool
2016-09-09 17:22 ` Jeff Law
2016-08-30 12:31 ` Michael Matz
2016-09-08 16:41 ` Jeff Law
2016-09-09 6:31 ` Segher Boessenkool
2016-09-09 15:28 ` Jeff Law
2016-09-09 15:43 ` Segher Boessenkool [this message]
2016-09-09 18:25 ` Jeff Law
2016-09-09 20:29 ` Segher Boessenkool
2016-09-08 17:20 ` Jeff Law
2016-09-09 15:33 ` Segher Boessenkool
2016-09-09 16:49 ` Jeff Law
2016-09-09 17:00 ` Segher Boessenkool
2016-09-09 17:44 ` Jeff Law
2016-09-09 19:36 ` Jeff Law
2016-09-09 21:00 ` Segher Boessenkool
2016-09-12 11:00 ` Bernd Schmidt
2016-09-12 16:59 ` Jeff Law
2016-09-14 13:22 ` Segher Boessenkool
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=20160909154002.GE28260@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=bschmidt@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=law@redhat.com \
--cc=matz@suse.de \
/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).