[GHC] #3123: make INLINE work for recursive definitions (generalized loop peeling/loop unrolling)
GHC
ghc-devs at haskell.org
Wed Aug 3 13:55:28 UTC 2016
#3123: make INLINE work for recursive definitions (generalized loop peeling/loop
unrolling)
-------------------------------------+-------------------------------------
Reporter: claus | Owner:
Type: feature request | Status: closed
Priority: lowest | Milestone:
Component: Compiler | Version: 6.11
Resolution: invalid | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by bgamari:
@@ -19,1 +19,1 @@
- More details, examples, and an informal spec: wiki:Inlining
+ More details, examples, and an informal spec: wiki:OldInlining
New description:
Inlining refers to the unfolding of definitions, ie replacing uses of
identifiers with the definitions bound to them. Doing this at compile time
can expose potential for other optimizations. As described in the User
Guide, this is currently limited to non-recursive definitions, to avoid
non-terminating recursion in the inliner.
Unfolding Recursions
Since many definitions in non-trivial programs are either recursive
themselves or are built from recursion combinators, leaving recursion out
of inlining alltogether is a serious limitation, especially in view of the
encoding of loops via tail recursion. In conventional languages, loop
transformations such as loop unrolling are at the heart of optimizing high
performance code (for a useful overview, see Compiler Transformations for
High-Performance Computing, ACM Computing Surveys, 1994). As a
consequence, many performance-critical Haskell programs contain hand-
unrolled and hand-peeled recursions, which is error-prone and obscures
declarative contents.
More details, examples, and an informal spec: wiki:OldInlining
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/3123#comment:20>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list