X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDynFlags.hs;h=39459d33bd6464e5998da907024f128f52e98e33;hb=58de6cb725982dd1f57803cc838f233d5fd9c42c;hp=ed5f359b9c8fe87860443e84f525f259603eac2c;hpb=4dd7f35b7055e3ff9ff5fed9e90e1c8cbe5e6a9b;p=ghc-hetmet.git diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index ed5f359..39459d3 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -1478,26 +1478,31 @@ setDumpSimplPhases :: String -> DynP () setDumpSimplPhases s = do setDynFlag Opt_ForceRecomp upd (\s -> s { shouldDumpSimplPhase = spec }) where + spec :: SimplifierMode -> Bool spec = join (||) - . map (join (&&)) - . map (map match) - . map (split ':') + . map (join (&&) . map match . split ':') . split ',' $ case s of '=' : s' -> s' _ -> s + join :: (Bool -> Bool -> Bool) + -> [SimplifierMode -> Bool] + -> SimplifierMode -> Bool join _ [] = const True join op ss = foldr1 (\f g x -> f x `op` g x) ss + match :: String -> SimplifierMode -> Bool match "" = const True match s = case reads s of [(n,"")] -> phase_num n _ -> phase_name s + phase_num :: Int -> SimplifierMode -> Bool phase_num n (SimplPhase k _) = n == k phase_num _ _ = False + phase_name :: String -> SimplifierMode -> Bool phase_name s SimplGently = s == "gentle" phase_name s (SimplPhase _ ss) = s `elem` ss