Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
33406b8c
Commit
33406b8c
authored
Aug 10, 2006
by
simonpj@microsoft.com
Browse files
Add an IAmDead case to postInlineUnconditionally, and comments
parent
c43e5edf
Changes
2
Hide whitespace changes
Inline
Side-by-side
compiler/simplCore/SimplUtils.lhs
View file @
33406b8c
...
...
@@ -748,6 +748,11 @@ postInlineUnconditionally env top_lvl bndr occ_info rhs unfolding
-- int_cxt to prevent us inlining inside a lambda without some
-- good reason. See the notes on int_cxt in preInlineUnconditionally
IAmDead -> True -- This happens; for example, the case_bndr during case of
-- known constructor: case (a,b) of x { (p,q) -> ... }
-- Here x isn't mentioned in the RHS, so we don't want to
-- create the (dead) let-binding let x = (a,b) in ...
other -> False
-- Here's an example that we don't handle well:
...
...
compiler/simplCore/Simplify.lhs
View file @
33406b8c
...
...
@@ -365,7 +365,9 @@ simplNonRecX env bndr new_rhs thing_inside
returnSmpl (emptyFloats env, Case new_rhs bndr' (exprType body') [(DEFAULT, [], body')])
{- No, no, no! Do not try preInlineUnconditionally
| preInlineUnconditionally env NotTopLevel bndr new_rhs
Doing so risks exponential behaviour, because new_rhs has been simplified once already
In the cases described by the folowing commment, postInlineUnconditionally will
catch many of the relevant cases.
-- This happens; for example, the case_bndr during case of
-- known constructor: case (a,b) of x { (p,q) -> ... }
-- Here x isn't mentioned in the RHS, so we don't want to
...
...
@@ -374,6 +376,7 @@ simplNonRecX env bndr new_rhs thing_inside
-- Similarly, single occurrences can be inlined vigourously
-- e.g. case (f x, g y) of (a,b) -> ....
-- If a,b occur once we can avoid constructing the let binding for them.
| preInlineUnconditionally env NotTopLevel bndr new_rhs
= thing_inside (extendIdSubst env bndr (DoneEx new_rhs))
-}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment