GNU bug report logs -
#9542
peval inlines recursive procedures
Previous Next
Reported by: ludo <at> gnu.org (Ludovic Courtès)
Date: Sun, 18 Sep 2011 10:06:02 UTC
Severity: normal
Done: ludo <at> gnu.org (Ludovic Courtès)
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 9542 in the body.
You can then email your comments to 9542 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-guile <at> gnu.org
:
bug#9542
; Package
guile
.
(Sun, 18 Sep 2011 10:06:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
ludo <at> gnu.org (Ludovic Courtès)
:
New bug report received and forwarded. Copy sent to
bug-guile <at> gnu.org
.
(Sun, 18 Sep 2011 10:06:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi Andy,
Andy Wingo <wingo <at> pobox.com> skribis:
> Still, though, the results are not great:
[...]
> Here we see that `fold' was inlined once, but to no use. More code for
> no more speed.
Yes. OTOH, it was inlined *and* specialized; peval only “inlines”
where’s there’s at least one static argument (known at compile-time), in
which case there’s room for specialization (in this example, *, 1,
zero?, and the anonymous lambdas were propagated/resolved as
primitives.)
In the above example, I agree that we can argue that inlining wasn’t
useful.
> Waddell and Dybvig report on similar problems in their inlining paper
> (Fast and Effective Procedure Inlining, IU CS Dept. TR 484). See
> section 4.4 where they discuss this and similar problems. We should
> figure out what we can do in these cases; and in the case where we can't
> fully inline a call site, perhaps we should abort the attempt to inline
> it.
Right. I think we should avoid inlining when recursive calls appear in
the residual code, as mentioned in the referred section.
WDYT?
Now, the current heuristic in peval is to “inline” procedures only at
call sites with static arguments. Conversely, a general procedure
inlining algorithm like Waddell’s may inline even when there are only
dynamic arguments. This puts more pressure on the inlining criteria
because there are many more potential inlining opportunities.
I don’t think an optimization heuristic can be optimal in all cases.
So the question is not whether we can find such pathological cases, but
how frequent they are in practice. So I think we must keep an eye on
the optimized code, like you did, to find out more.
Thanks for your feedback!
Ludo’.
Changed bug title to 'peval inlines recursive procedures' from 'peval error'
Request was from
ludo <at> gnu.org (Ludovic Courtès)
to
control <at> debbugs.gnu.org
.
(Sun, 18 Sep 2011 16:43:02 GMT)
Full text and
rfc822 format available.
Reply sent
to
ludo <at> gnu.org (Ludovic Courtès)
:
You have taken responsibility.
(Sun, 18 Sep 2011 21:11:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
ludo <at> gnu.org (Ludovic Courtès)
:
bug acknowledged by developer.
(Sun, 18 Sep 2011 21:11:01 GMT)
Full text and
rfc822 format available.
Message #12 received at 9542-close <at> debbugs.gnu.org (full text, mbox):
Hi,
Andy Wingo <wingo <at> pobox.com> skribis:
> Here we see that `fold' was inlined once, but to no use. More code for
> no more speed.
>
> Waddell and Dybvig report on similar problems in their inlining paper
> (Fast and Effective Procedure Inlining, IU CS Dept. TR 484). See
> section 4.4 where they discuss this and similar problems. We should
> figure out what we can do in these cases; and in the case where we can't
> fully inline a call site, perhaps we should abort the attempt to inline
> it.
Fixed in 72b2ca55f6e115927aa4e76401c992f21198681f.
Thanks!
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 17 Oct 2011 11:24:06 GMT)
Full text and
rfc822 format available.
This bug report was last modified 13 years and 72 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.