summaryrefslogtreecommitdiff
path: root/src-3.0/GF/GFCC/OptimizeGFCC.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src-3.0/GF/GFCC/OptimizeGFCC.hs')
-rw-r--r--src-3.0/GF/GFCC/OptimizeGFCC.hs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src-3.0/GF/GFCC/OptimizeGFCC.hs b/src-3.0/GF/GFCC/OptimizeGFCC.hs
index 59fb93ffd..7fc227c66 100644
--- a/src-3.0/GF/GFCC/OptimizeGFCC.hs
+++ b/src-3.0/GF/GFCC/OptimizeGFCC.hs
@@ -13,7 +13,10 @@ import qualified Data.Map as Map
-- suffix analysis followed by common subexpression elimination
optGFCC :: GFCC -> GFCC
-optGFCC gfcc = gfcc {
+optGFCC = cseOptimize . suffixOptimize
+
+suffixOptimize :: GFCC -> GFCC
+suffixOptimize gfcc = gfcc {
concretes = Map.map opt (concretes gfcc)
}
where
@@ -23,6 +26,11 @@ optGFCC gfcc = gfcc {
printnames = Map.map optTerm (printnames cnc)
}
+cseOptimize :: GFCC -> GFCC
+cseOptimize gfcc = gfcc {
+ concretes = Map.map subex (concretes gfcc)
+ }
+
-- analyse word form lists into prefix + suffixes
-- suffix sets can later be shared by subex elim