summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Compile
diff options
context:
space:
mode:
authorbjorn <bjorn@bringert.net>2008-05-30 13:56:50 +0000
committerbjorn <bjorn@bringert.net>2008-05-30 13:56:50 +0000
commit7f90087ab9c77ac2e2a57d53b8a985feb45d43f2 (patch)
tree03a2f357ee50e01b0582e69cc920814ad8660f80 /src-3.0/GF/Compile
parent150940b8704a6a61ed08c6bbd99ba4b05a42c59c (diff)
Added setOptimization function to GF.Infra.Options. I will need to do similar things for other options.
Diffstat (limited to 'src-3.0/GF/Compile')
-rw-r--r--src-3.0/GF/Compile/BackOpt.hs9
-rw-r--r--src-3.0/GF/Compile/Optimize.hs3
2 files changed, 8 insertions, 4 deletions
diff --git a/src-3.0/GF/Compile/BackOpt.hs b/src-3.0/GF/Compile/BackOpt.hs
index 0043d02d8..2814448b4 100644
--- a/src-3.0/GF/Compile/BackOpt.hs
+++ b/src-3.0/GF/Compile/BackOpt.hs
@@ -27,7 +27,10 @@ import Data.List
import qualified GF.Infra.Modules as M
import qualified Data.ByteString.Char8 as BS
-type OptSpec = [Optimization]
+import Data.Set (Set)
+import qualified Data.Set as Set
+
+type OptSpec = Set Optimization
shareModule :: OptSpec -> (Ident, SourceModInfo) -> (Ident, SourceModInfo)
shareModule opt (i,m) = case m of
@@ -42,8 +45,8 @@ shareInfo _ i = i
-- the function putting together optimizations
shareOptim :: OptSpec -> Ident -> Term -> Term
-shareOptim opt c = (if OptValues `elem` opt then values else id)
- . (if OptParametrize `elem` opt then factor c 0 else id)
+shareOptim opt c = (if OptValues `Set.member` opt then values else id)
+ . (if OptParametrize `Set.member` opt then factor c 0 else id)
-- do even more: factor parametric branches
diff --git a/src-3.0/GF/Compile/Optimize.hs b/src-3.0/GF/Compile/Optimize.hs
index 9263dcdd9..80ceed16d 100644
--- a/src-3.0/GF/Compile/Optimize.hs
+++ b/src-3.0/GF/Compile/Optimize.hs
@@ -34,6 +34,7 @@ import GF.Infra.Option
import Control.Monad
import Data.List
+import qualified Data.Set as Set
import Debug.Trace
@@ -103,7 +104,7 @@ evalResInfo oopts gr (c,info) = case info of
comp = if optres then computeConcrete gr else computeConcreteRec gr
eIn cat = errIn ("Error optimizing" +++ cat +++ prt c +++ ":")
optim = moduleFlag optOptimizations oopts
- optres = OptExpand `elem` optim
+ optres = OptExpand `Set.member` optim
evalCncInfo ::