GHC.Base: Use thenIO in instance Applicative IO
authorJoachim Breitner <mail@joachim-breitner.de>
Fri, 8 Apr 2016 06:33:35 +0000 (08:33 +0200)
committerJoachim Breitner <mail@joachim-breitner.de>
Fri, 8 Apr 2016 06:38:20 +0000 (08:38 +0200)
Since recent changes to CSE, the previous definition were no longer CSEd
with thenIO, which resulted in extra steps in the simplifier and hence
slightly larger compile times. See ticket:11781#comment:7.

Differential Revision: https://phabricator.haskell.org/D2092

libraries/base/GHC/Base.hs
testsuite/tests/perf/compiler/all.T

index 89c9f63..618fa05 100644 (file)
@@ -1086,9 +1086,9 @@ instance  Functor IO where
 instance Applicative IO where
     {-# INLINE pure #-}
     {-# INLINE (*>) #-}
-    pure   = returnIO
-    m *> k = m >>= \ _ -> k
-    (<*>)  = ap
+    pure  = returnIO
+    (*>)  = thenIO
+    (<*>) = ap
 
 instance  Monad IO  where
     {-# INLINE (>>)   #-}
index b3ae160..022ed92 100644 (file)
@@ -624,7 +624,7 @@ test('T9020',
           [(wordsize(32), 343005716, 10),
            # Original:    381360728
            # 2014-07-31:  343005716 (Windows) (general round of updates)
-           (wordsize(64), 852298336, 10)])
+           (wordsize(64), 698401736, 10)])
            # prev:        795469104
            # 2014-07-17:  728263536 (general round of updates)
            # 2014-09-10:  785871680 post-AMP-cleanup
@@ -632,6 +632,7 @@ test('T9020',
            # 2015-10-21:  786189008 Make stronglyConnCompFromEdgedVertices deterministic
            # 2016-01-26:  698401736 improvement from using ExpTypes instead of ReturnTvs
            # 2016-04-06:  852298336 Refactoring of CSE #11781
+           # 2016-04-06:  698401736 Use thenIO in Applicative IO
       ],
       compile,[''])