Skip to content

Rewrite rule breaks code when used with ghc -O #58

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
relrod opened this issue Apr 1, 2017 · 8 comments
Open

Rewrite rule breaks code when used with ghc -O #58

relrod opened this issue Apr 1, 2017 · 8 comments

Comments

@relrod
Copy link

relrod commented Apr 1, 2017

I have the following code:

module Main where

import Data.Thyme.Time

main :: IO ()
main = print $ (realToFrac (150 :: NominalDiffTime) :: NominalDiffTime)
  • When I compile it with ghc --make -O0, I get 150s
  • When I compile it with ghc --make -O, I get 0s

At first I thought it was a bug in GHC's optimizer, but then I saw the rewrite rules in Thyme and now I'm not sure where to file the bug, so I'm starting here. I'm able to reproduce this on GHC 8.0.1, 8.0.2, and 7.10.3.

Let me know if you need any more information, I'm happy to provide it or help test a fix.

@relrod
Copy link
Author

relrod commented Apr 1, 2017

BTW, if I use -ddump-simpl-stats, I see that the specific rule being fired is realToFrac/NominalDiffTime-Fractional

@relrod
Copy link
Author

relrod commented Apr 11, 2017

@liyang This creates a difference at runtime based on the level of optimization used with GHC - it's not caught during typechecking or anything, so I'm bumping this...

(I worked around it by figuring out how to get rid of the realToFrac call in my code entirely, but given how subtle the bug is, it might be good to get a fix out).

@relrod
Copy link
Author

relrod commented Jul 17, 2017

Bumping this again...

@relrod
Copy link
Author

relrod commented May 30, 2018

And again.

@relrod
Copy link
Author

relrod commented May 9, 2019

Yearly bump, but guessing this package just isn't maintained at this point.

@relrod
Copy link
Author

relrod commented May 9, 2021

Hm, missed last year. Yearly bump 2x.

@ysangkok
Copy link
Contributor

ysangkok commented Dec 17, 2024

The package is now collectively maintained.

I wonder if this is the cause of the test failures in

It seems that cabal-install is passing -O by default.

@jamesdbrock
Copy link
Member

Hi @relrod I sent you an ownership invitation for the Github Haskell Trust. If you accept then you can merge PRs and publish any package in the Trust, including this one.

Thank you for your attention to this package @ysangkok .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants