#5237: Inefficient code generated for x^2
--------------------------------------+-------------------------------------
Reporter: scpmw | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.4.1
Component: libraries/base | Version: 7.0.3
Resolution: | Keywords:
Testcase: | Blockedby:
Difficulty: | Os: Linux
Blocking: | Architecture: x86_64 (amd64)
Failure: Runtime performance bug |
--------------------------------------+-------------------------------------
Comment(by daniel.is.fischer):
I'm afraid no. Take Ian's programme from above, we have a `{-# RULES #-}`,
`{-# SPECIALISE #-}` and `{-# NOINLINE #-}` pragma. Both, rule and
specialisation, match. We want the rule to fire, but it's always `SPEC`
that fires. If adding phase control to specialise pragmas works without
making it `{-# SPECIALISE [NO]INLINE [k] #-}`, I haven't found out how.
Every variation of that I tried, together with `{-# NOINLINE [k] #-}` or
without, still had the specialisation firing.
The only way to get the rule to fire was to remove the `SPECIALISE`
pragma. But if we remove that from `GHC.Real`, we get code bloat because a
specialisation will be generated in every module using `(^)`.
Interestingly, adding a phase to the `RULES` pragma prevented that from
firing even without the `SPECIALISE`.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5237#comment:16>
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