summaryrefslogtreecommitdiff
path: root/testsuite/tests/perf/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/perf/compiler')
-rw-r--r--testsuite/tests/perf/compiler/T5321FD.hs2
-rw-r--r--testsuite/tests/perf/compiler/T5321Fun.hs2
-rw-r--r--testsuite/tests/perf/compiler/T5837.stderr2
-rw-r--r--testsuite/tests/perf/compiler/T9020.hs1683
-rw-r--r--testsuite/tests/perf/compiler/all.T98
-rw-r--r--testsuite/tests/perf/compiler/simpl015.hs1683
6 files changed, 3439 insertions, 31 deletions
diff --git a/testsuite/tests/perf/compiler/T5321FD.hs b/testsuite/tests/perf/compiler/T5321FD.hs
index 6e10939837..004f487098 100644
--- a/testsuite/tests/perf/compiler/T5321FD.hs
+++ b/testsuite/tests/perf/compiler/T5321FD.hs
@@ -1,7 +1,7 @@
{-# OPTIONS_GHC -fcontext-stack=1000 #-}
{-# LANGUAGE
FlexibleContexts, FlexibleInstances, FunctionalDependencies,
- MultiParamTypeClasses, OverlappingInstances, TypeSynonymInstances,
+ MultiParamTypeClasses, TypeSynonymInstances,
TypeOperators, UndecidableInstances, TypeFamilies #-}
module T5321FD where
diff --git a/testsuite/tests/perf/compiler/T5321Fun.hs b/testsuite/tests/perf/compiler/T5321Fun.hs
index efd7db770b..bf70ce5221 100644
--- a/testsuite/tests/perf/compiler/T5321Fun.hs
+++ b/testsuite/tests/perf/compiler/T5321Fun.hs
@@ -1,7 +1,7 @@
{-# OPTIONS_GHC -fcontext-stack=1000 #-}
{-# LANGUAGE
FlexibleContexts, FlexibleInstances, FunctionalDependencies,
- MultiParamTypeClasses, OverlappingInstances, TypeSynonymInstances,
+ MultiParamTypeClasses, TypeSynonymInstances,
TypeOperators, UndecidableInstances, TypeFamilies #-}
module T5321Fun where
diff --git a/testsuite/tests/perf/compiler/T5837.stderr b/testsuite/tests/perf/compiler/T5837.stderr
index 2d2907d3ae..5cee13dd1d 100644
--- a/testsuite/tests/perf/compiler/T5837.stderr
+++ b/testsuite/tests/perf/compiler/T5837.stderr
@@ -158,4 +158,4 @@ T5837.hs:8:6:
(TF
a)))))))))))))))))))))))))))))))))))))))))))))))))
In the ambiguity check for: forall a. a ~ TF (a, Int) => Int
- In the type signature for ‘t’: t :: a ~ TF (a, Int) => Int
+ In the type signature for ‘t’: t :: (a ~ TF (a, Int)) => Int
diff --git a/testsuite/tests/perf/compiler/T9020.hs b/testsuite/tests/perf/compiler/T9020.hs
new file mode 100644
index 0000000000..2ce70406be
--- /dev/null
+++ b/testsuite/tests/perf/compiler/T9020.hs
@@ -0,0 +1,1683 @@
+-- Test for ticket #830, simplifier taking too long on large do expression
+
+main = do
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T
index 647548a9c2..ea62520b07 100644
--- a/testsuite/tests/perf/compiler/all.T
+++ b/testsuite/tests/perf/compiler/all.T
@@ -42,15 +42,17 @@ test('T1969',
# 2013-02-13 27, very unstable!
# 2013-09-11 30 (amd64/Linux)
compiler_stats_num_field('max_bytes_used',
- [(platform('i386-unknown-mingw32'), 7295012, 20),
+ [(platform('i386-unknown-mingw32'), 5719436, 20),
# 2010-05-17 5717704 (x86/Windows)
# 2013-02-10 5159748 (x86/Windows)
# 2013-02-10 5030080 (x86/Windows)
# 2013-11-13 7295012 (x86/Windows, 64bit machine)
- (wordsize(32), 6429864, 1),
+ # 2014-04-24 5719436 (x86/Windows, 64bit machine)
+ (wordsize(32), 5949188, 1),
# 6707308 (x86/OS X)
# 2009-12-31 6149572 (x86/Linux)
# 2014-01-22 6429864 (x86/Linux)
+ # 2014-06-29 5949188 (x86/Linux)
(wordsize(64), 11000000, 20)]),
# looks like the peak is around ~10M, but we're
# unlikely to GC exactly on the peak.
@@ -58,18 +60,20 @@ test('T1969',
# hence 10% range.
# See Note [residency] to get an accurate view.
compiler_stats_num_field('bytes allocated',
- [(platform('i386-unknown-mingw32'), 317975916, 5),
+ [(platform('i386-unknown-mingw32'), 301784492, 5),
# 215582916 (x86/Windows)
# 2012-10-29 298921816 (x86/Windows)
# 2013-02-10 310633884 (x86/Windows)
# 2013-11-13 317975916 (x86/Windows, 64bit machine)
- (wordsize(32), 316103268, 1),
+ # 2014-04-04 301784492 (x86/Windows, 64bit machine)
+ (wordsize(32), 303300692, 1),
# 221667908 (x86/OS X)
# 274932264 (x86/Linux)
# 2012-10-08 303930948 (x86/Linux, new codegen)
# 2013-02-10 322937684 (x86/OSX)
# 2014-01-22 316103268 (x86/Linux)
- (wordsize(64), 660922376, 5)]),
+ # 2014-06-29 303300692 (x86/Linux)
+ (wordsize(64), 651626680, 5)]),
# 17/11/2009 434845560 (amd64/Linux)
# 08/12/2009 459776680 (amd64/Linux)
# 17/05/2010 519377728 (amd64/Linux)
@@ -85,6 +89,7 @@ test('T1969',
# 17/1/13: 667160192 (x86_64/Linux) new demand analyser
# 18/10/2013 698612512 (x86_64/Linux) fix for #8456
# 10/02/2014 660922376 (x86_64/Linux) call artiy analysis
+ # 17/07/2014 651626680 (x86_64/Linux) roundabout update
only_ways(['normal']),
extra_hc_opts('-dcore-lint -static')
@@ -109,13 +114,14 @@ else:
test('T3294',
[
compiler_stats_num_field('max_bytes_used', # Note [residency]
- [(wordsize(32), 24009436, 15),
+ [(wordsize(32), 19882188, 15),
# 17725476 (x86/OS X)
# 14593500 (Windows)
# 2013-02-10 20651576 (x86/Windows)
# 2013-02-10 20772984 (x86/OSX)
# 2013-11-13 24009436 (x86/Windows, 64bit machine)
- (wordsize(64), 43224080, 15)]),
+ # 2014-04-24 19882188 (x86/Windows, 64bit machine)
+ (wordsize(64), 40000000, 15)]),
# prev: 25753192 (amd64/Linux)
# 29/08/2012: 37724352 (amd64/Linux)
# (increase due to new codegen, see #7198)
@@ -125,15 +131,18 @@ test('T3294',
# (reason for decrease unknown)
# 29/5/2013: 43224080 (amd64/Linux)
# (reason for increase back to earlier value unknown)
+ # 2014-07-14: 36670800 (amd64/Linux)
+ # (reason unknown, setting expected value somewhere in between)
compiler_stats_num_field('bytes allocated',
- [(wordsize(32), 1565185140, 5),
+ [(wordsize(32), 1377050640, 5),
# previous: 815479800 (x86/Linux)
# (^ increase due to new codegen, see #7198)
# 2012-10-08: 1373514844 (x86/Linux)
# 2013-11-13: 1478325844 (x86/Windows, 64bit machine)
# 2014-01-12: 1565185140 (x86/Linux)
- (wordsize(64), 2705289664, 5)]),
+ # 2013-04-04: 1377050640 (x86/Windows, 64bit machine)
+ (wordsize(64), 2671595512, 5)]),
# old: 1357587088 (amd64/Linux)
# 29/08/2012: 2961778696 (amd64/Linux)
# (^ increase due to new codegen, see #7198)
@@ -142,6 +151,7 @@ test('T3294',
# 12/12/2013: 3083825616 (amd64/Linux) (reason unknown)
# 18/02/2014: 2897630040 (amd64/Linux) (call arity improvements)
# 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements)
+ # 2014-17-07: 2671595512 (amd64/Linux) (round-about update)
conf_3294
],
compile,
@@ -223,20 +233,23 @@ test('T3064',
# 2012-10-30: 111189536 (x86/Windows)
# 2013-11-13: 146626504 (x86/Windows, 64bit machine)
# 2014-01-22: 162457940 (x86/Linux)
- (wordsize(64), 308422280, 5)]),
+ (wordsize(64), 332702112, 5)]),
# (amd64/Linux) (28/06/2011): 73259544
# (amd64/Linux) (07/02/2013): 224798696
# (amd64/Linux) (02/08/2013): 236404384, increase from roles
# (amd64/Linux) (11/09/2013): 290165632, increase from AMP warnings
# (amd64/Linux) (22/11/2013): 308300448, GND via Coercible and counters for constraints solving
- # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
+ # (amd64/Linux) (02/12/2013): 329795912, Coercible refactor
# (amd64/Linux) (11/02/2014): 308422280, optimize Coercions in simpleOptExpr
+ # (amd64/Linux) (23/05/2014): 324022680, unknown cause
+ # (amd64/Linux) (2014-07-17): 332702112, general round of updates
compiler_stats_num_field('max_bytes_used',
- [(wordsize(32), 7218200 , 20),
- # 2011-06-28: 2247016 (x86/Linux) (28/6/2011):
- #(some date): 5511604
- # 2013-11-13: 7218200 (x86/Windows, 64bit machine)
+ [(wordsize(32), 11202304, 20),
+ # 2011-06-28: 2247016 (x86/Linux) (28/6/2011):
+ #(some date): 5511604
+ # 2013-11-13: 7218200 (x86/Windows, 64bit machine)
+ # 2014-04-04: 11202304 (x86/Windows, 64bit machine)
(wordsize(64), 19821544, 20)]),
# (amd64/Linux, intree) (28/06/2011): 4032024
# (amd64/Linux, intree) (07/02/2013): 9819288
@@ -264,7 +277,7 @@ test('T5030',
# previous: 196457520
# 2012-10-08: 259547660 (x86/Linux, new codegen)
# 2013-11-21: 198573456 (x86 Windows, 64 bit machine)
- (wordsize(64), 397672152, 10)]),
+ (wordsize(64), 409314320, 10)]),
# Previously 530000000 (+/- 10%)
# 17/1/13: 602993184 (x86_64/Linux)
# (new demand analyser)
@@ -274,6 +287,8 @@ test('T5030',
# decrease from more aggressive coercion optimisations from roles
# 2013-11-12 397672152 (amd64/Linux)
# big decrease following better CSE and arity
+ # 2014-07-17 409314320 (amd64/Linux)
+ # general round of updates
only_ways(['normal'])
],
@@ -282,8 +297,9 @@ test('T5030',
test('T5631',
[compiler_stats_num_field('bytes allocated',
- [(wordsize(32), 392904228, 10),
+ [(wordsize(32), 346389856, 10),
# expected value: 392904228 (x86/Linux)
+ # 2014-04-04: 346389856 (x86 Windows, 64 bit machine)
(wordsize(64), 690742040, 5)]),
# expected value: 774595008 (amd64/Linux):
# expected value: 735486328 (amd64/Linux) 2012/12/12:
@@ -307,11 +323,12 @@ test('T783',
[ only_ways(['normal']), # no optimisation for this one
# expected value: 175,569,928 (x86/Linux)
compiler_stats_num_field('bytes allocated',
- [(wordsize(32), 333833658, 2),
+ [(wordsize(32), 319179104, 5),
# 2012-10-08: 226907420 (x86/Linux)
# 2013-02-10: 329202116 (x86/Windows)
# 2013-02-10: 338465200 (x86/OSX)
- (wordsize(64), 654804144, 10)]),
+ # 2014-04-04: 319179104 (x86 Windows, 64 bit machine)
+ (wordsize(64), 640031840, 10)]),
# prev: 349263216 (amd64/Linux)
# 07/08/2012: 384479856 (amd64/Linux)
# 29/08/2012: 436927840 (amd64/Linux)
@@ -322,6 +339,8 @@ test('T783',
# (fix for #8456)
# 24/10/2013: 654804144 (amd64/Linux)
# (fix previous fix for #8456)
+ # 2014-07-17: 640031840 (amd64/Linux)
+ # (general round of updates)
extra_hc_opts('-static')
],
compile,[''])
@@ -347,11 +366,13 @@ test('T5321Fun',
test('T5321FD',
[ only_ways(['normal']), # no optimisation for this one
compiler_stats_num_field('bytes allocated',
- [(wordsize(32), 240302920, 10),
+ [(wordsize(32), 211699816, 10),
# prev: 213380256
# 2012-10-08: 240302920 (x86/Linux)
# (increase due to new codegen)
- (wordsize(64), 476497048, 10)])
+ # 2014-07-31: 211699816 (Windows) (-11%)
+ # (due to better optCoercion, 5e7406d9, #9233)
+ (wordsize(64), 426960992, 10)])
# prev: 418306336
# 29/08/2012: 492905640
# (increase due to new codegen)
@@ -359,6 +380,10 @@ test('T5321FD',
# (reason for decrease unknown)
# 08/06/2013: 476497048
# (reason for increase unknown)
+ # before 2014-07-17: 441997096
+ # (with -8%, still in range, hence cause not known)
+ # 2014-07-17: 426960992 (-11% of previous value)
+ # (due to better optCoercion, 5e7406d9, #9233)
],
compile,[''])
@@ -367,7 +392,10 @@ test('T5642',
compiler_stats_num_field('bytes allocated',
[(wordsize(32), 650000000, 10),
# sample from x86/Linux
- (wordsize(64), 1300000000, 10)])
+ (wordsize(64), 1402242360, 10)])
+ # prev: 1300000000
+ # 2014-07-17: 1358833928 (general round of updates)
+ # 2014-08-07: 1402242360 (caused by 1fc60ea)
],
compile,['-O'])
@@ -382,22 +410,36 @@ test('T5837',
# 2012-10-02 81879216
# 2012-09-20 87254264 amd64/Linux
# 2013-09-18 90587232 amd64/Linux
- # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
- # for constraints solving
+ # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
+ # for constraints solving
],
compile_fail,['-ftype-function-depth=50'])
test('T6048',
[ only_ways(['optasm']),
compiler_stats_num_field('bytes allocated',
- [(wordsize(32), 48887164, 10),
+ [(wordsize(32), 62618072, 10),
# prev: 38000000 (x86/Linux)
# 2012-10-08: 48887164 (x86/Linux)
- (wordsize(64), 110646312, 10)])
- # 18/09/2012 97247032 amd64/Linux
+ # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
+ (wordsize(64), 125431448, 12)])
+ # 18/09/2012 97247032 amd64/Linux
# 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
- # 18/01/2014 95960720 amd64/Linux Call Arity improvements
+ # 18/01/2014 95960720 amd64/Linux Call Arity improvements
# 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
# 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
+ # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
+ ],
+ compile,[''])
+
+test('T9020',
+ [ only_ways(['optasm']),
+ compiler_stats_num_field('bytes allocated',
+ [(wordsize(32), 343005716, 10),
+ # Original: 381360728
+ # 2014-07-31: 343005716 (Windows) (general round of updates)
+ (wordsize(64), 728263536, 10)])
+ # prev: 795469104
+ # 2014-07-17: 728263536 (general round of updates)
],
compile,[''])
diff --git a/testsuite/tests/perf/compiler/simpl015.hs b/testsuite/tests/perf/compiler/simpl015.hs
new file mode 100644
index 0000000000..2ce70406be
--- /dev/null
+++ b/testsuite/tests/perf/compiler/simpl015.hs
@@ -0,0 +1,1683 @@
+-- Test for ticket #830, simplifier taking too long on large do expression
+
+main = do
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()