#4903: Inliner looping when specialising across modules (with GADTs and other
extensions)
---------------------------------+------------------------------------------
Reporter: dreixel | Owner:
Type: bug | Status: merge
Priority: normal | Milestone:
Component: Compiler | Version: 7.1
Keywords: | Testcase: simplCore/should_compile/T4903
Blockedby: | Difficulty:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: Compile-time crash
---------------------------------+------------------------------------------
Changes (by simonpj):
* status: new => merge
* testcase: => simplCore/should_compile/T4903
Comment:
Fixed by
{{{
Wed Jan 26 17:21:12 GMT 2011 [email protected]
* Fix dependencies among specialisations for imported Ids
This was a subtle one (Trac #4903). See
Note [Glom the bindings if imported functions are specialised]
in Speclialise.
Fundamentally, a specialised binding for an imported Id was being
declared non-recursive, whereas in fact it can become recursive
via a RULE. Once it's specified non-recurive the OccAnal pass
treats that as gospel -- and that in turn led to infinite inlining.
Easily fixed by glomming all the specialised bindings in a Rec;
now the OccAnal will sort them out correctly.
M ./compiler/specialise/Specialise.lhs -13 +57
}}}
Can you push this to the stable branch, please Ian?
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4903#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs