From 58e5843a4118ca19fd1c93f52f2365d90bb1b9b6 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Thu, 16 Jan 2014 15:14:49 +0000 Subject: Allow the argument to 'reserve' to be a compile-time expression By using the constant-folder to reduce it to an integer. --- compiler/cmm/CmmOpt.hs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'compiler/cmm/CmmOpt.hs') diff --git a/compiler/cmm/CmmOpt.hs b/compiler/cmm/CmmOpt.hs index acaed28acf..54dbbebae6 100644 --- a/compiler/cmm/CmmOpt.hs +++ b/compiler/cmm/CmmOpt.hs @@ -7,6 +7,8 @@ ----------------------------------------------------------------------------- module CmmOpt ( + constantFoldNode, + constantFoldExpr, cmmMachOpFold, cmmMachOpFoldM ) where @@ -24,6 +26,16 @@ import Platform import Data.Bits import Data.Maybe + +constantFoldNode :: DynFlags -> CmmNode e x -> CmmNode e x +constantFoldNode dflags = mapExp (constantFoldExpr dflags) + +constantFoldExpr :: DynFlags -> CmmExpr -> CmmExpr +constantFoldExpr dflags = wrapRecExp f + where f (CmmMachOp op args) = cmmMachOpFold dflags op args + f (CmmRegOff r 0) = CmmReg r + f e = e + -- ----------------------------------------------------------------------------- -- MachOp constant folder -- cgit v1.2.1