summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2007-06-25 15:26:16 +0000
committersimonpj@microsoft.com <unknown>2007-06-25 15:26:16 +0000
commit75ebc06a512a374eebb562ce4190bef136e2c1d6 (patch)
tree0b9e153223e19c8ba3cc5db43d3b3ccd80ba68f4
parent11d36d9f0256a3a3ef2934a776924f7c90afb6de (diff)
downloadhaskell-75ebc06a512a374eebb562ce4190bef136e2c1d6.tar.gz
Clamp -O flag to beween 0 and 2
Fixes Trac #1272
-rw-r--r--compiler/main/DynFlags.hs7
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index b99222841a..7b06a48dd0 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -561,13 +561,14 @@ data Option
updOptLevel :: Int -> DynFlags -> DynFlags
-- Set dynflags appropriate to the optimisation level
updOptLevel n dfs
- = dfs2{ optLevel = n }
+ = dfs2{ optLevel = final_n }
where
+ final_n = max 0 (min 2 n) -- Clamp to 0 <= n <= 2
dfs1 = foldr (flip dopt_unset) dfs remove_dopts
dfs2 = foldr (flip dopt_set) dfs1 extra_dopts
- extra_dopts = [ f | (ns,f) <- optLevelFlags, n `elem` ns ]
- remove_dopts = [ f | (ns,f) <- optLevelFlags, n `notElem` ns ]
+ extra_dopts = [ f | (ns,f) <- optLevelFlags, final_n `elem` ns ]
+ remove_dopts = [ f | (ns,f) <- optLevelFlags, final_n `notElem` ns ]
optLevelFlags :: [([Int], DynFlag)]
optLevelFlags