subvert recent optimisations in GHC
authorSimon Marlow <simonmar@microsoft.com>
Tue, 7 Feb 2006 14:08:59 +0000 (14:08 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Tue, 7 Feb 2006 14:08:59 +0000 (14:08 +0000)
Some of these tests were using 'take' in their attempts to duplicate
some work and hence run longer, but since GHC just started deforesting
'take' this stopped working.  Now we use {-# NOILINE #-} as a
hopefully more robust way to subvert optimisations.

spectral/boyer/Main.lhs
spectral/clausify/Main.hs
spectral/rewrite/Main.lhs

index 0de0f21..7712d0e 100644 (file)
@@ -234,7 +234,9 @@ main = do
   print (test (read n))
 
 test :: Int -> Bool
-test n = all test0 (take n (repeat (Var X)))
+test n = all test0 xs
+ where xs = take n (repeat (Var X))
+       {-# NOINLINE xs #-}
 
 test0 xxxx = tautp (apply_subst subst0 theorem)
  where
index 9ac69e3..78f19e1 100644 (file)
@@ -43,7 +43,9 @@ main = do
   (n:_) <- getArgs
   putStr (res (read n))
 
-res n = concat (map clauses (take n (repeat "(a = a = a) = (a = a = a) = (a = a = a)")))
+res n = concat (map clauses xs)
+ where xs = take n (repeat "(a = a = a) = (a = a = a) = (a = a = a)")
+       {-# NOINLINE xs #-}
 
 data StackFrame = Ast Formula | Lex Char 
 
index 05d5bb5..fd6304f 100644 (file)
@@ -627,7 +627,9 @@ BENCHMARK
 > result (s1, s2) = (simplify (super_reduce group_completion) (parse s1)
 >            == parse s2)
 
-> test n = all result (take n (repeat ("I(a * b)", "I(b) * I(a)")))
+> test n = all result xs
+>  where xs = take n (repeat ("I(a * b)", "I(b) * I(a)"))
+>       {-# NOINLINE xs #-}
 
 > main = do
 >   (n:_) <- getArgs