Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/2cf9093ec82ef0ca4b7ed7ffdfeac3a25c3d9ee8

>---------------------------------------------------------------

commit 2cf9093ec82ef0ca4b7ed7ffdfeac3a25c3d9ee8
Author: Ian Lynagh <[email protected]>
Date:   Sun Oct 21 14:20:17 2012 +0100

    Add some more PrimOp rules

>---------------------------------------------------------------

 compiler/prelude/PrelRules.lhs |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/compiler/prelude/PrelRules.lhs b/compiler/prelude/PrelRules.lhs
index 3136b36..baa50f8 100644
--- a/compiler/prelude/PrelRules.lhs
+++ b/compiler/prelude/PrelRules.lhs
@@ -120,8 +120,10 @@ primOpRules nm WordQuotOp  = mkPrimOpRule nm 2 [ 
nonZeroLit 1 >> binaryLit (word
 primOpRules nm WordRemOp   = mkPrimOpRule nm 2 [ nonZeroLit 1 >> binaryLit 
(wordOp2 rem)
                                                , rightIdentityDynFlags onew ]
 primOpRules nm AndOp       = mkPrimOpRule nm 2 [ binaryLit (wordOp2 (.&.))
+                                               , idempotent
                                                , zeroElem zerow ]
 primOpRules nm OrOp        = mkPrimOpRule nm 2 [ binaryLit (wordOp2 (.|.))
+                                               , idempotent
                                                , identityDynFlags zerow ]
 primOpRules nm XorOp       = mkPrimOpRule nm 2 [ binaryLit (wordOp2 xor)
                                                , identityDynFlags zerow
@@ -477,6 +479,11 @@ subsumedByPrimOp primop = do
   [e@(Var primop_id `App` _)] <- getArgs
   matchPrimOpId primop primop_id
   return e
+
+idempotent :: RuleM CoreExpr
+idempotent = do [e1, e2] <- getArgs
+                guard $ cheapEqExpr e1 e2
+                return e1
 \end{code}
 
 %************************************************************************



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to