Inliner non-termination

2011-09-06 Thread Ron Alford
From the known bugs (http://www.haskell.org/ghc/docs/latest/html/users_guide/bugs.html#bugs-ghc): GHC's inliner can be persuaded into non-termination using the standard way to encode recursion via a data type... We have never found another class of programs, other than this contrived one, that

Re: Inliner non-termination

2011-09-06 Thread Felipe Almeida Lessa
On Tue, Sep 6, 2011 at 3:33 PM, Ron Alford ronw...@volus.net wrote: It took me about 4-6 hours to track down this bug in my own code (#5448) since it required repeatedly bisecting a larger program until I had a small testcase.  In the test program, I can get around it with {-# NOINLINE funcEq

Re: Inliner non-termination

2011-09-06 Thread Ron Alford
On Tue, Sep 6, 2011 at 7:50 PM, Felipe Almeida Lessa felipe.le...@gmail.com wrote: This doesn't solve GHC's bug, but can you do something like  myFuncEq = funcEq  {-# NOINLINE myFuncEq #-} and just use myFuncEq everywhere?  This should make the change local to your module. Unfortunately