id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
3736	GHC specialising instead of inlining	guest	igloo	"In the attached module I demonstrate the following:

mainMonolithic1Generator performs the same computation as mainMonolithic1Compose
but the former is more than two times slower than latter.
This is serious since in more complex signal processing programs
this factor seems to multiply.
I assume that the problem is that mixGen is not inlined.
Instead GHC seems to have decided to specialise mixGen.
In contrast to mainMonolithic1Compose,
mainMonolithic1Generator uses a data type with existential quantification.
But this alone is not the problem,
since mainMonolithic0 and mainMonolithic0Generator run with the same speed.

http://code.haskell.org/storablevector/speedtest/SpeedTestChorus.hs

How can I tell GHC to prefer inlining to specialisation?
How about a pragma like {-# INLINE FORCE #-} or so?
"	bug	closed	normal	7.0.1	Compiler	6.10.4	fixed		ghc@…	Linux	x86	Runtime performance bug		T3736			
