summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <ian@well-typed.com>2013-06-06 13:39:51 +0100
committerIan Lynagh <ian@well-typed.com>2013-06-06 13:39:51 +0100
commite36f28bd6ccc7ac5712c3383603d36b44f390266 (patch)
tree513e49201fbdd0230deeb17afe3e709ac172b951
parent557fa20043992c53828c383c9ed1442c7a9484ef (diff)
downloadhaskell-e36f28bd6ccc7ac5712c3383603d36b44f390266.tar.gz
Add missing files from #7702's test
-rw-r--r--testsuite/tests/simplCore/should_compile/T7702.hs7
-rw-r--r--testsuite/tests/simplCore/should_compile/T7702.stderr1
-rw-r--r--testsuite/tests/simplCore/should_compile/T7702plugin/Makefile20
-rw-r--r--testsuite/tests/simplCore/should_compile/T7702plugin/Setup.hs3
-rw-r--r--testsuite/tests/simplCore/should_compile/T7702plugin/T7702Plugin.hs51
-rw-r--r--testsuite/tests/simplCore/should_compile/T7702plugin/T7702plugin.cabal13
6 files changed, 95 insertions, 0 deletions
diff --git a/testsuite/tests/simplCore/should_compile/T7702.hs b/testsuite/tests/simplCore/should_compile/T7702.hs
new file mode 100644
index 0000000000..771ace0202
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T7702.hs
@@ -0,0 +1,7 @@
+-- The contents of this file are irrelevant. It is merely
+-- the target for compilation by the T7702Plugin, which
+-- exhibits the space leak in Trac #7702
+module Main where
+
+main :: IO ()
+main = return ()
diff --git a/testsuite/tests/simplCore/should_compile/T7702.stderr b/testsuite/tests/simplCore/should_compile/T7702.stderr
new file mode 100644
index 0000000000..1286e58428
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T7702.stderr
@@ -0,0 +1 @@
+T7702Plugin
diff --git a/testsuite/tests/simplCore/should_compile/T7702plugin/Makefile b/testsuite/tests/simplCore/should_compile/T7702plugin/Makefile
new file mode 100644
index 0000000000..42c56c9512
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T7702plugin/Makefile
@@ -0,0 +1,20 @@
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+clean.%:
+ rm -rf pkg.$*
+
+HERE := $(abspath .)
+$(eval $(call canonicalise,HERE))
+
+package.%:
+ $(MAKE) clean.$*
+ mkdir pkg.$*
+ "$(TEST_HC)" -outputdir pkg.$* --make -v0 -o pkg.$*/setup Setup.hs
+
+ echo "[]" > pkg.$*/local.package.conf
+
+ pkg.$*/setup configure --distdir pkg.$*/dist -v0 $(CABAL_PLUGIN_BUILD) --prefix="$(HERE)/pkg.$*/install" --with-compiler="$(TEST_HC)" --with-hc-pkg="$(GHC_PKG)" --package-db=pkg.$*/local.package.conf
+ pkg.$*/setup build --distdir pkg.$*/dist -v0
+ pkg.$*/setup install --distdir pkg.$*/dist -v0
diff --git a/testsuite/tests/simplCore/should_compile/T7702plugin/Setup.hs b/testsuite/tests/simplCore/should_compile/T7702plugin/Setup.hs
new file mode 100644
index 0000000000..e8ef27dbba
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T7702plugin/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+
+main = defaultMain
diff --git a/testsuite/tests/simplCore/should_compile/T7702plugin/T7702Plugin.hs b/testsuite/tests/simplCore/should_compile/T7702plugin/T7702Plugin.hs
new file mode 100644
index 0000000000..cb6a03d394
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T7702plugin/T7702Plugin.hs
@@ -0,0 +1,51 @@
+module T7702Plugin ( plugin ) where
+
+import GhcPlugins
+
+-- A plugin that does nothing but tickle CoreM's writer.
+plugin :: Plugin
+plugin = defaultPlugin { installCoreToDos = install }
+ where
+ install :: [CommandLineOption] -> [CoreToDo] -> CoreM [CoreToDo]
+ install _ todos = do
+ reinitializeGlobals
+
+ putMsgS "T7702Plugin"
+
+ -- 1 million times, so the allocation in this plugin dominates allocation due
+ -- to other compiler flags and the test framework can easily catch the difference
+ -- can't use replicateM_ because it causes its own problems
+ nothingX100000 ; nothingX100000 ; nothingX100000 ; nothingX100000 ; nothingX100000
+ nothingX100000 ; nothingX100000 ; nothingX100000 ; nothingX100000 ; nothingX100000
+
+ return todos
+
+-- this will result in a call to plusWriter in CoreM's
+-- >>= implementation, which was causing the space leak
+nothing :: CoreM ()
+nothing = liftIO (return ())
+
+nothingX10 :: CoreM ()
+nothingX10 = do
+ nothing ; nothing ; nothing ; nothing ; nothing
+ nothing ; nothing ; nothing ; nothing ; nothing
+
+nothingX100 :: CoreM ()
+nothingX100 = do
+ nothingX10 ; nothingX10 ; nothingX10 ; nothingX10 ; nothingX10
+ nothingX10 ; nothingX10 ; nothingX10 ; nothingX10 ; nothingX10
+
+nothingX1000 :: CoreM ()
+nothingX1000 = do
+ nothingX100 ; nothingX100 ; nothingX100 ; nothingX100 ; nothingX100
+ nothingX100 ; nothingX100 ; nothingX100 ; nothingX100 ; nothingX100
+
+nothingX10000 :: CoreM ()
+nothingX10000 = do
+ nothingX1000 ; nothingX1000 ; nothingX1000 ; nothingX1000 ; nothingX1000
+ nothingX1000 ; nothingX1000 ; nothingX1000 ; nothingX1000 ; nothingX1000
+
+nothingX100000 :: CoreM ()
+nothingX100000 = do
+ nothingX10000 ; nothingX10000 ; nothingX10000 ; nothingX10000 ; nothingX10000
+ nothingX10000 ; nothingX10000 ; nothingX10000 ; nothingX10000 ; nothingX10000
diff --git a/testsuite/tests/simplCore/should_compile/T7702plugin/T7702plugin.cabal b/testsuite/tests/simplCore/should_compile/T7702plugin/T7702plugin.cabal
new file mode 100644
index 0000000000..953ba3c5d3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T7702plugin/T7702plugin.cabal
@@ -0,0 +1,13 @@
+Name: T7702plugin
+Version: 0.1
+Synopsis: Plugin which tests space leak fix in Trac #7702
+Cabal-Version: >= 1.2
+Build-Type: Simple
+Author: Andrew Farmer
+
+Library
+ Build-Depends:
+ base,
+ ghc >= 7.2.1
+ Exposed-Modules:
+ T7702Plugin