Ticket #6121 (closed bug: fixed)
Very poor constant folding
| Reported by: | augustss | Owned by: | igloo |
|---|---|---|---|
| Priority: | high | Milestone: | 7.6.1 |
| Component: | Compiler | Version: | 7.4.1 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | Runtime performance bug | Difficulty: | Unknown |
| Test Case: | lib/integer/integerConstantFolding | Blocked By: | |
| Blocking: | Related Tickets: |
Description
GHC seems to lack constant folding for encodeFloat/decodeFloat. For many examples, compile the numeric-limits package on hackage, or just this snippet:
epsilon :: Double
epsilon = r
where r = 1 - encodeFloat (m-1) e
(m, e) = decodeFloat (1 `asTypeOf` r)
This has a very simple value, but GHC refuses to compute it at compile time. This in turn inhibits other constant folding that should be going on.
Change History
Note: See
TracTickets for help on using
tickets.
