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
