Revert "Batch merge"
authorBen Gamari <ben@smart-cactus.org>
Wed, 30 Jan 2019 15:05:19 +0000 (10:05 -0500)
committerBen Gamari <ben@smart-cactus.org>
Wed, 30 Jan 2019 15:05:19 +0000 (10:05 -0500)
This reverts commit 76c8fd674435a652c75a96c85abbf26f1f221876.

198 files changed:
.gitlab-ci.yml
.gitlab/push-test-metrics.sh [deleted file]
compiler/hieFile/HieAst.hs
compiler/nativeGen/X86/CodeGen.hs
compiler/nativeGen/X86/Instr.hs
compiler/nativeGen/X86/Ppr.hs
compiler/parser/RdrHsSyn.hs
docs/users_guide/8.8.1-notes.rst
docs/users_guide/runtime_control.rst
docs/users_guide/separate_compilation.rst
docs/users_guide/using.rst
hadrian/build.cabal.bat
hadrian/build.cabal.sh
hadrian/src/Settings/Flavours/Development.hs
includes/rts/Flags.h
libraries/base/Data/Bits.hs
libraries/base/GHC/Int.hs
libraries/base/GHC/RTS/Flags.hsc
libraries/base/GHC/Word.hs
libraries/base/tests/IO/T12010/test.T
libraries/base/tests/IO/all.T
rts/Linker.c
rts/LinkerInternals.h
rts/RtsFlags.c
rts/linker/Elf.c
rts/linker/Elf.h
rts/linker/MachO.c
rts/linker/MachO.h
rts/linker/PEi386.c
rts/linker/PEi386.h
rts/linker/SymbolExtras.c
rts/linker/SymbolExtras.h
rts/sm/OSMem.h
testsuite/driver/perf_notes.py
testsuite/driver/runtests.py
testsuite/driver/testglobals.py
testsuite/driver/testlib.py
testsuite/driver/testutil.py
testsuite/tests/annotations/should_compile/th/all.T
testsuite/tests/cabal/T12485/all.T
testsuite/tests/cabal/all.T
testsuite/tests/cmm/opt/all.T
testsuite/tests/codeGen/should_compile/all.T
testsuite/tests/codeGen/should_run/T15038/all.T
testsuite/tests/deSugar/should_compile/all.T
testsuite/tests/dependent/should_compile/all.T
testsuite/tests/deriving/should_compile/all.T
testsuite/tests/deriving/should_fail/all.T
testsuite/tests/determinism/T13807/all.T
testsuite/tests/determinism/determ002/all.T
testsuite/tests/determinism/determ003/all.T
testsuite/tests/determinism/determ005/all.T
testsuite/tests/determinism/determ006/all.T
testsuite/tests/determinism/determ007/all.T
testsuite/tests/determinism/determ008/all.T
testsuite/tests/determinism/determ009/all.T
testsuite/tests/determinism/determ010/all.T
testsuite/tests/determinism/determ011/all.T
testsuite/tests/determinism/determ012/all.T
testsuite/tests/determinism/determ013/all.T
testsuite/tests/determinism/determ014/all.T
testsuite/tests/determinism/determ015/all.T
testsuite/tests/determinism/determ016/all.T
testsuite/tests/determinism/determ017/all.T
testsuite/tests/determinism/determ018/all.T
testsuite/tests/determinism/determ019/all.T
testsuite/tests/determinism/determ021/all.T
testsuite/tests/determinism/determ022/all.T
testsuite/tests/driver/T13392/all.T
testsuite/tests/driver/T13710/all.T
testsuite/tests/driver/T1372/all.T
testsuite/tests/driver/T13803/all.T
testsuite/tests/driver/T13914/all.T
testsuite/tests/driver/T14075/all.T
testsuite/tests/driver/T15970/all.T
testsuite/tests/driver/T1959/test.T
testsuite/tests/driver/T3007/all.T
testsuite/tests/driver/T437/all.T
testsuite/tests/driver/T5147/all.T
testsuite/tests/driver/T7373/all.T
testsuite/tests/driver/T7835/all.T
testsuite/tests/driver/T8184/all.T
testsuite/tests/driver/T9562/all.T
testsuite/tests/driver/all.T
testsuite/tests/driver/bug1677/all.T
testsuite/tests/driver/conflicting_flags/test.T
testsuite/tests/driver/dynamicToo/all.T
testsuite/tests/driver/dynamicToo/dynamicToo001/test.T
testsuite/tests/driver/dynamicToo/dynamicToo002/test.T
testsuite/tests/driver/dynamicToo/dynamicToo004/test.T
testsuite/tests/driver/dynamicToo/dynamicToo005/test.T
testsuite/tests/driver/dynamic_flags_001/all.T
testsuite/tests/driver/linkwhole/all.T
testsuite/tests/driver/recomp001/all.T
testsuite/tests/driver/recomp002/all.T
testsuite/tests/driver/recomp003/all.T
testsuite/tests/driver/recomp004/all.T
testsuite/tests/driver/recomp005/all.T
testsuite/tests/driver/recomp006/all.T
testsuite/tests/driver/recomp007/all.T
testsuite/tests/driver/recomp008/all.T
testsuite/tests/driver/recomp009/all.T
testsuite/tests/driver/recomp010/all.T
testsuite/tests/driver/recomp011/all.T
testsuite/tests/driver/recomp012/all.T
testsuite/tests/driver/recomp013/all.T
testsuite/tests/driver/recomp015/all.T
testsuite/tests/driver/recomp016/all.T
testsuite/tests/driver/recomp017/all.T
testsuite/tests/driver/recomp018/all.T
testsuite/tests/driver/retc001/all.T
testsuite/tests/driver/retc002/all.T
testsuite/tests/driver/retc003/all.T
testsuite/tests/dynlibs/all.T
testsuite/tests/ffi/should_run/all.T
testsuite/tests/gadt/all.T
testsuite/tests/generics/all.T
testsuite/tests/ghc-api/T10052/all.T
testsuite/tests/ghc-api/T4891/all.T
testsuite/tests/ghc-api/T7478/all.T
testsuite/tests/ghc-api/all.T
testsuite/tests/ghc-api/annotations-literals/all.T
testsuite/tests/ghc-api/annotations/T11018.stdout
testsuite/tests/ghc-api/annotations/T16212.stdout
testsuite/tests/ghc-api/annotations/Test16212.hs
testsuite/tests/ghc-api/annotations/all.T
testsuite/tests/ghc-api/apirecomp001/all.T
testsuite/tests/ghc-api/show-srcspan/all.T
testsuite/tests/ghc-e/should_fail/all.T
testsuite/tests/ghc-e/should_run/all.T
testsuite/tests/ghci/linking/Makefile
testsuite/tests/ghci/linking/T15729.c [deleted file]
testsuite/tests/ghci/linking/T15729.hs [deleted file]
testsuite/tests/ghci/linking/T15729.stdout [deleted file]
testsuite/tests/ghci/linking/all.T
testsuite/tests/ghci/linking/dyn/all.T
testsuite/tests/ghci/prog004/prog004.T
testsuite/tests/ghci/scripts/all.T
testsuite/tests/ghci/should_run/all.T
testsuite/tests/hp2ps/all.T
testsuite/tests/hpc/all.T
testsuite/tests/hsc2hs/all.T
testsuite/tests/indexed-types/should_compile/T13092b/all.T
testsuite/tests/indexed-types/should_compile/all.T
testsuite/tests/indexed-types/should_fail/T13092/all.T
testsuite/tests/indexed-types/should_fail/T13092c/all.T
testsuite/tests/indexed-types/should_fail/T13102/all.T
testsuite/tests/indexed-types/should_fail/all.T
testsuite/tests/layout/all.T
testsuite/tests/lib/integer/all.T
testsuite/tests/llvm/should_run/subsections_via_symbols/all.T
testsuite/tests/module/all.T
testsuite/tests/module/base01/all.T
testsuite/tests/module/mod175/all.T
testsuite/tests/numeric/should_compile/all.T
testsuite/tests/numeric/should_run/all.T
testsuite/tests/parser/should_compile/T7476/all.T
testsuite/tests/patsyn/should_compile/T13350/all.T
testsuite/tests/perf/compiler/all.T
testsuite/tests/perf/should_run/all.T
testsuite/tests/plugins/all.T
testsuite/tests/polykinds/all.T
testsuite/tests/printer/all.T
testsuite/tests/profiling/should_compile/all.T
testsuite/tests/profiling/should_run/all.T
testsuite/tests/quasiquotation/all.T
testsuite/tests/rename/prog006/all.T
testsuite/tests/rename/should_compile/all.T
testsuite/tests/rename/should_fail/all.T
testsuite/tests/roles/should_fail/all.T
testsuite/tests/rts/T10672/all.T
testsuite/tests/rts/T11223/all.T
testsuite/tests/rts/T12031/all.T
testsuite/tests/rts/T12771/all.T
testsuite/tests/rts/T13082/all.T
testsuite/tests/rts/T14611/all.T
testsuite/tests/rts/T15261/all.T
testsuite/tests/rts/T15894/all.T
testsuite/tests/rts/T8308/all.T
testsuite/tests/rts/all.T
testsuite/tests/runghc/all.T
testsuite/tests/safeHaskell/safeLanguage/all.T
testsuite/tests/showIface/all.T
testsuite/tests/simplCore/should_compile/T16038/test.T
testsuite/tests/simplCore/should_compile/all.T
testsuite/tests/stranal/should_compile/all.T
testsuite/tests/stranal/should_run/all.T
testsuite/tests/th/T2014/all.T
testsuite/tests/th/TH_linker/all.T
testsuite/tests/th/all.T
testsuite/tests/typecheck/T13168/all.T
testsuite/tests/typecheck/bug1465/all.T
testsuite/tests/typecheck/should_compile/all.T
testsuite/tests/typecheck/should_fail/all.T
testsuite/tests/unboxedsums/all.T
testsuite/tests/utils/should_run/all.T
utils/ghc-pkg/Main.hs
utils/hsc2hs

index 4a8cb62..2478d0d 100644 (file)
@@ -6,7 +6,6 @@ before_script:
   - git submodule sync --recursive
   - git submodule update --init --recursive
   - git checkout .gitmodules
-  - "git fetch origin refs/notes/perf:refs/notes/ci/perf || true"
 
 stages:
   - lint
@@ -76,7 +75,6 @@ validate-x86_64-linux-deb8-hadrian:
     - git submodule sync --recursive
     - git submodule update --init --recursive
     - git checkout .gitmodules
-    - "git fetch origin refs/notes/perf:refs/notes/ci/perf || true"
   tags:
     - x86_64-linux
 
@@ -99,16 +97,8 @@ validate-x86_64-linux-deb8-hadrian:
       make binary-dist TAR_COMP_OPTS="-1"
       mv ghc-*.tar.xz ghc.tar.xz
     - |
-      # Prepare to push git notes.
-      METRICS_FILE=$(mktemp)
-      git config user.email "ben+ghc-ci@smart-cactus.org"
-      git config user.name "GHC GitLab CI"
-    - |
       THREADS=`mk/detect-cpu-count.sh`
-      make $TEST_TYPE THREADS=$THREADS JUNIT_FILE=../../junit.xml METRICS_FILE=$METRICS_FILE
-    - |
-      # Push git notes.
-      METRICS_FILE=$METRICS_FILE .gitlab/push-test-metrics.sh
+      make $TEST_TYPE THREADS=$THREADS JUNIT_FILE=../../junit.xml
   dependencies: []
   artifacts:
     reports:
@@ -130,14 +120,12 @@ validate-x86_64-darwin:
     ac_cv_func_clock_gettime: "no"
     LANG: "en_US.UTF-8"
     CONFIGURE_ARGS: --with-intree-gmp
-    TEST_ENV: "x86_64-darwin"
   before_script:
     - git clean -xdf && git submodule foreach git clean -xdf
     - python3 .gitlab/fix-submodules.py
     - git submodule sync --recursive
     - git submodule update --init --recursive
     - git checkout .gitmodules
-    - "git fetch origin refs/notes/perf:refs/notes/ci/perf || true"
 
     - bash .gitlab/darwin-init.sh
     - PATH="`pwd`/toolchain/bin:$PATH"
@@ -162,7 +150,6 @@ validate-x86_64-darwin:
     - git submodule sync --recursive
     - git submodule update --init --recursive
     - git checkout .gitmodules
-    - "git fetch origin refs/notes/perf:refs/notes/ci/perf || true"
 
     - bash .circleci/prepare-system.sh
     # workaround for docker permissions
@@ -180,8 +167,6 @@ validate-aarch64-linux-deb9:
   stage: full-build
   image: ghcci/aarch64-linux-deb9:0.1
   allow_failure: true
-  variables:
-    TEST_ENV: "aarch64-linux-deb9"
   artifacts:
     when: always
     expire_in: 2 week
@@ -206,8 +191,6 @@ validate-i386-linux-deb9:
   stage: full-build
   image: ghcci/i386-linux-deb9:0.1
   allow_failure: true
-  variables:
-    TEST_ENV: "i386-linux-deb9"
   artifacts:
     when: always
     expire_in: 2 week
@@ -221,7 +204,6 @@ nightly-i386-linux-deb9:
   allow_failure: true
   variables:
     TEST_TYPE: slowtest
-    TEST_ENV: "i386-linux-deb9"
   artifacts:
     when: always
     expire_in: 2 week
@@ -235,8 +217,6 @@ validate-x86_64-linux-deb9:
   extends: .validate-linux
   stage: build
   image: ghcci/x86_64-linux-deb9:0.2
-  variables:
-    TEST_ENV: "x86_64-linux-deb9"
   artifacts:
     when: always
     expire_in: 2 week
@@ -261,7 +241,6 @@ validate-x86_64-linux-deb9-llvm:
   image: ghcci/x86_64-linux-deb9:0.2
   variables:
     BUILD_FLAVOUR: perf-llvm
-    TEST_ENV: "x86_64-linux-deb9-llvm"
   cache:
     key: linux-x86_64-deb9
 
@@ -269,8 +248,6 @@ validate-x86_64-linux-deb8:
   extends: .validate-linux
   stage: full-build
   image: ghcci/x86_64-linux-deb8:0.1
-  variables:
-    TEST_ENV: "x86_64-linux-deb8"
   cache:
     key: linux-x86_64-deb8
   artifacts:
@@ -281,8 +258,6 @@ validate-x86_64-linux-fedora27:
   extends: .validate-linux
   stage: full-build
   image: ghcci/x86_64-linux-fedora27:0.1
-  variables:
-    TEST_ENV: "x86_64-linux-fedora27"
   cache:
     key: linux-x86_64-fedora27
   artifacts:
@@ -294,7 +269,6 @@ validate-x86_64-linux-deb9-integer-simple:
   stage: full-build
   variables:
     INTEGER_LIBRARY: integer-simple
-    TEST_ENV: "x86_64-linux-deb9-integer-simple"
   image: ghcci/x86_64-linux-deb9:0.2
   cache:
     key: linux-x86_64-deb9
@@ -315,7 +289,6 @@ validate-x86_64-linux-deb9-unreg:
   stage: full-build
   variables:
     CONFIGURE_ARGS: --enable-unregisterised
-    TEST_ENV: "x86_64-linux-deb9-unreg"
   image: ghcci/x86_64-linux-deb9:0.2
   cache:
     key: linux-x86_64-deb9
@@ -341,7 +314,6 @@ validate-x86_64-linux-deb9-unreg:
     - git submodule sync --recursive
     - git submodule update --init --recursive
     - git checkout .gitmodules
-    - "git fetch origin refs/notes/perf:refs/notes/ci/perf || true"
     - bash .gitlab/win32-init.sh
   after_script:
     - rd /s /q tmp
@@ -408,8 +380,8 @@ validate-x86_64-windows:
       - ghc.tar.xz
       - junit.xml
 
-# Note [Cleaning up after shell executor]
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Note [Cleanup on Windows]
+# ~~~~~~~~~~~~~~~~~~~~~~~~~
 #
 # As noted in [1], gitlab-runner's shell executor doesn't clean up its working
 # directory after builds. Unfortunately, we are forced to use the shell executor
@@ -419,7 +391,7 @@ validate-x86_64-windows:
 #
 # [1] https://gitlab.com/gitlab-org/gitlab-runner/issues/3856
 
-# See Note [Cleanup after shell executor]
+# See Note [Cleanup on Windows]
 cleanup-windows:
   stage: cleanup
   tags:
@@ -440,21 +412,3 @@ cleanup-windows:
     - del %BUILD_DIR%\* /F /Q
     - for /d %%p in (%BUILD_DIR%\*) do rd /Q /S "%%p"
     - exit /b 0
-
-# See Note [Cleanup after shell executor]
-cleanup-darwin:
-  stage: cleanup
-  tags:
-    - x86_64-darwin
-  when: always
-  before_script:
-    - echo "Time to clean up"
-  script:
-    - echo "Let's go"
-  after_script:
-    - BUILD_DIR=$CI_PROJECT_DIR
-    - echo "Cleaning $BUILD_DIR"
-    - cd $HOME
-    - rm -Rf $BUILD_DIR/*
-    - exit 0
-
diff --git a/.gitlab/push-test-metrics.sh b/.gitlab/push-test-metrics.sh
deleted file mode 100755 (executable)
index 7ec2dfe..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env bash
-# vim: sw=2 et
-set -euo pipefail
-
-NOTES_ORIGIN="git@gitlab.haskell.org:ghc/ghc-performance-notes.git"
-REF="perf"
-
-fail() {
-  echo "ERROR: $*" >&2
-  exit 1
-}
-
-# Check that private key is available (Set on all GitLab protected branches).
-if ! [ -v PERF_NOTE_KEY ] || [ "$PERF_NOTE_KEY" = "" ]; then
-  echo "Not pushing performance git notes: PERF_NOTE_KEY is not set."
-  exit 0
-fi
-
-# TEST_ENV must be set.
-if ! [ -v TEST_ENV ] || [ "$TEST_ENV" = "" ]; then
-  fail "Not pushing performance git notes: TEST_ENV must be set."
-fi
-
-# Assert that the METRICS_FILE exists and can be read.
-if ! [ -v TEST_ENV ] || [ "$METRICS_FILE" = "" ]
-then
-  fail "\$METRICS_FILE not set."
-fi
-if ! [ -r $METRICS_FILE ]
-then
-  fail "Metrics file not found: $METRICS_FILE"
-fi
-
-# Add gitlab as a known host.
-mkdir -p ~/.ssh
-echo "|1|+AUrMGS1elvPeLNt+NHGa5+c6pU=|4XvfRsQftO1OgZD4c0JJ7oNaii8= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDXilA5l4kOZPx0nM6xDATF+t4fS6te0eYPDwBI/jLWD9cJVtCnsrwMl5ar+/NfmcD0jnCYztUiVHuXyTaWPJYSQpwltfpTeqpo9/z/0MxkPtSl1uMP2cLbDiqA01OWveChktOXwU6hRQ+7MmO+dNRS/iXrRmYrGv/p1W811QgLBLS9fefEdF25n+0dP71L7Ov7riOawlDmd0C11FraE/R8HX6gs6lbXta1kisdxGyKojYSiCtobUaJxRoatMfUP0a9rwTAyl8tf56LgB+igjMky879VAbL7eQ/AmfHYPrSGJ/YlWP6Jj23Dnos5nOVlWL/rVTs9Y/NakLpPwMs75KTC0Pd74hdf2e3folDdAi2kLrQgO2SI6so7rOYZ+mFkCM751QdDVy4DzjmDvSgSIVf9SV7RQf7e7unE7pSZ/ILupZqz9KhR1MOwVO+ePa5qJMNSdC204PIsRWkIO5KP0QLl507NI9Ri84+aODoHD7gDIWNhU08J2P8/E6r0wcC8uWaxh+HaOjI9BkHjqRYsrgfn54BAuO9kw1cDvyi3c8n7VFlNtvQP15lANwim3gr9upV+r95KEPJCgZMYWJBDPIVtp4GdYxCfXxWj5oMXbA5pf0tNixwNJjAsY7I6RN2htHbuySH36JybOZk+gCj6mQkxpCT/tKaUn14hBJWLq7Q+Q==" >> ~/.ssh/known_hosts
-echo "|1|JZkdAPJmpX6SzGeqhmQLfMWLGQA=|4vTELroOlbFxbCr0WX+PK9EcpD0= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJknufU+I6A5Nm58lmse4/o11Ai2UzYbYe7782J1+kRk" >> ~/.ssh/known_hosts
-
-# Setup ssh keys.
-eval `ssh-agent`
-echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJPR1vrZgeGTXmgJw2PsJfMjf22LcDnVVwt3l0rwTZ+8Q2J0bHaYxMRKBco1sON6LGcZepw0Hy76RQ87v057pTz18SXvnfE7U/B6v9qBk0ILJz+4BOX9sEhxu2XmScp/wMxkG9IoyruMlsxXzd1sz09o+rzzx24U2Rp27PRm08vG0oipve6BWLbYEqYrE4/nCufqOJmGd56fju7OTU0lTpEkGDEDWGMxutaX2CbTbDju7qy07Ld8BjSc9aHfvuQaslUbj3ex3EF8EXahURzGpHQn/UFFzVGMokFumiJCAagHQb7cj6jOkKseZLaysbA/mTBQsOzjWiRmkN23bQf1wF ben+ghc-ci@smart-cactus.org" > ~/.ssh/perf_rsa.pub
-touch ~/.ssh/perf_rsa
-chmod 0600 ~/.ssh/perf_rsa
-echo "$PERF_NOTE_KEY" >> ~/.ssh/perf_rsa
-ssh-add ~/.ssh/perf_rsa
-
-# Reset the git notes and append the metrics file to the notes, then push and return the result.
-# This is favoured over a git notes merge as it avoids potential data loss/duplication from the merge strategy.
-function reset_append_note_push {
-  git fetch -f $NOTES_ORIGIN refs/notes/$REF:refs/notes/$REF || true
-  echo "git notes --ref=$REF append -F $METRICS_FILE HEAD"
-  git notes --ref=$REF append -F $METRICS_FILE HEAD
-  echo "git push $NOTES_ORIGIN refs/notes/$REF"
-  git push $NOTES_ORIGIN refs/notes/$REF
-}
-
-# Push the metrics file as a git note. This may fail if another task pushes a note first. In that case
-# the latest note is fetched and appended.
-MAX_RETRY=20
-until reset_append_note_push || [ $MAX_RETRY -le 0 ]
-do
-  ((MAX_RETRY--))
-  echo ""
-  echo "Failed to push git notes. Fetching, appending, and retrying... $MAX_RETRY retries left."
-done
index b6b5f0c..401b861 100644 (file)
@@ -28,11 +28,9 @@ import HscTypes
 import Module                     ( ModuleName, ml_hs_file )
 import MonadUtils                 ( concatMapM, liftIO )
 import Name                       ( Name, nameSrcSpan, setNameLoc )
-import NameEnv                    ( NameEnv, emptyNameEnv, extendNameEnv, lookupNameEnv )
 import SrcLoc
-import TcHsSyn                    ( hsLitType, hsPatType )
-import Type                       ( mkFunTys, Type )
-import TysWiredIn                 ( mkListTy, mkSumTy )
+import TcHsSyn                    ( hsPatType )
+import Type                       ( Type )
 import Var                        ( Id, Var, setVarName, varName, varType )
 
 import HieTypes
@@ -62,11 +60,11 @@ We don't care about the distinction between mono and poly bindings,
 so we replace all occurrences of the mono name with the poly name.
 -}
 newtype HieState = HieState
-  { name_remapping :: NameEnv Id
+  { name_remapping :: M.Map Name Id
   }
 
 initState :: HieState
-initState = HieState emptyNameEnv
+initState = HieState M.empty
 
 class ModifyState a where -- See Note [Name Remapping]
   addSubstitution :: a -> a -> HieState -> HieState
@@ -76,7 +74,7 @@ instance ModifyState Name where
 
 instance ModifyState Id where
   addSubstitution mono poly hs =
-    hs{name_remapping = extendNameEnv (name_remapping hs) (varName mono) poly}
+    hs{name_remapping = M.insert (varName mono) poly (name_remapping hs)}
 
 modifyState :: ModifyState (IdP p) => [ABExport p] -> HieState -> HieState
 modifyState = foldr go id
@@ -379,9 +377,7 @@ instance ToHie (Context (Located Var)) where
       C context (L (RealSrcSpan span) name')
         -> do
         m <- asks name_remapping
-        let name = case lookupNameEnv m (varName name') of
-              Just var -> var
-              Nothing-> name'
+        let name = M.findWithDefault name' (varName name') m
         pure
           [Node
             (NodeInfo S.empty [] $
@@ -396,7 +392,7 @@ instance ToHie (Context (Located Name)) where
   toHie c = case c of
       C context (L (RealSrcSpan span) name') -> do
         m <- asks name_remapping
-        let name = case lookupNameEnv m name' of
+        let name = case M.lookup name' m of
               Just var -> varName var
               Nothing -> name'
         pure
@@ -436,67 +432,13 @@ instance HasType (LPat GhcTc) where
 instance HasType (LHsExpr GhcRn) where
   getTypeNode (L spn e) = makeNode e spn
 
--- | This instance tries to construct 'HieAST' nodes which include the type of
--- the expression. It is not yet possible to do this efficiently for all
--- expression forms, so we skip filling in the type for those inputs.
---
--- 'HsApp', for example, doesn't have any type information available directly on
--- the node. Our next recourse would be to desugar it into a 'CoreExpr' then
--- query the type of that. Yet both the desugaring call and the type query both
--- involve recursive calls to the function and argument! This is particularly
--- problematic when you realize that the HIE traversal will eventually visit
--- those nodes too and ask for their types again.
---
--- Since the above is quite costly, we just skip cases where computing the
--- expression's type is going to be expensive.
---
--- See #16233
 instance HasType (LHsExpr GhcTc) where
-  getTypeNode e@(L spn e') = lift $
-    -- Some expression forms have their type immediately available
-    let tyOpt = case e' of
-          HsLit _ l -> Just (hsLitType l)
-          HsOverLit _ o -> Just (overLitType o)
-
-          HsLam     _ (MG { mg_ext = groupTy }) -> Just (matchGroupType groupTy)
-          HsLamCase _ (MG { mg_ext = groupTy }) -> Just (matchGroupType groupTy)
-          HsCase _  _ (MG { mg_ext = groupTy }) -> Just (mg_res_ty groupTy)
-
-          ExplicitList  ty _ _   -> Just (mkListTy ty)
-          ExplicitSum   ty _ _ _ -> Just (mkSumTy ty)
-          HsDo          ty _ _   -> Just ty
-          HsMultiIf     ty _     -> Just ty
-
-          _ -> Nothing
-
-    in
-    case tyOpt of
-      _ | skipDesugaring e' -> fallback
-        | otherwise -> do
-            hs_env <- Hsc $ \e w -> return (e,w)
-            (_,mbe) <- liftIO $ deSugarExpr hs_env e
-            maybe fallback (makeTypeNode e' spn . exprType) mbe
-    where
-      fallback = makeNode e' spn
-
-      matchGroupType :: MatchGroupTc -> Type
-      matchGroupType (MatchGroupTc args res) = mkFunTys args res
-
-      -- | Skip desugaring of these expressions for performance reasons.
-      --
-      -- See impact on Haddock output (esp. missing type annotations or links)
-      -- before marking more things here as 'False'. See impact on Haddock
-      -- performance before marking more things as 'True'.
-      skipDesugaring :: HsExpr a -> Bool
-      skipDesugaring e = case e of
-        HsVar{}        -> False
-        HsUnboundVar{} -> False
-        HsConLikeOut{} -> False
-        HsRecFld{}     -> False
-        HsOverLabel{}  -> False
-        HsIPVar{}      -> False
-        HsWrap{}       -> False
-        _              -> True
+  getTypeNode e@(L spn e') = lift $ do
+    hs_env <- Hsc $ \e w -> return (e,w)
+    (_,mbe) <- liftIO $ deSugarExpr hs_env e
+    case mbe of
+      Just te -> makeTypeNode e' spn (exprType te)
+      Nothing -> makeNode e' spn
 
 instance ( ToHie (Context (Located (IdP a)))
          , ToHie (MatchGroup a (LHsExpr a))
index 9591c42..37080b9 100644 (file)
@@ -2045,37 +2045,25 @@ genCCall dflags is32Bit (PrimTarget (MO_Clz width)) dest_regs@[dst] args@[src] b
 
   | otherwise = do
     code_src <- getAnyReg src
+    src_r <- getNewRegNat format
+    tmp_r <- getNewRegNat format
     let dst_r = getRegisterReg platform False (CmmLocal dst)
-    if isBmi2Enabled dflags
-        then do
-            src_r <- getNewRegNat (intFormat width)
-            return $ appOL (code_src src_r) $ case width of
-                W8 -> toOL
-                    [ MOVZxL II8  (OpReg src_r)       (OpReg src_r) -- zero-extend to 32 bit
-                    , LZCNT  II32 (OpReg src_r)       dst_r         -- lzcnt with extra 24 zeros
-                    , SUB    II32 (OpImm (ImmInt 24)) (OpReg dst_r) -- compensate for extra zeros
-                    ]
-                W16 -> toOL
-                    [ LZCNT  II16 (OpReg src_r) dst_r
-                    , MOVZxL II16 (OpReg dst_r) (OpReg dst_r) -- zero-extend from 16 bit
-                    ]
-                _ -> unitOL (LZCNT (intFormat width) (OpReg src_r) dst_r)
-        else do
-            let format = if width == W8 then II16 else intFormat width
-            src_r <- getNewRegNat format
-            tmp_r <- getNewRegNat format
-            return $ code_src src_r `appOL` toOL
-                     ([ MOVZxL  II8    (OpReg src_r) (OpReg src_r) | width == W8 ] ++
-                      [ BSR     format (OpReg src_r) tmp_r
-                      , MOV     II32   (OpImm (ImmInt (2*bw-1))) (OpReg dst_r)
-                      , CMOV NE format (OpReg tmp_r) dst_r
-                      , XOR     format (OpImm (ImmInt (bw-1))) (OpReg dst_r)
-                      ]) -- NB: We don't need to zero-extend the result for the
-                         -- W8/W16 cases because the 'MOV' insn already
-                         -- took care of implicitly clearing the upper bits
+
+    -- The following insn sequence makes sure 'clz 0' has a defined value.
+    -- starting with Haswell, one could use the LZCNT insn instead.
+    return $ code_src src_r `appOL` toOL
+             ([ MOVZxL  II8    (OpReg src_r) (OpReg src_r) | width == W8 ] ++
+              [ BSR     format (OpReg src_r) tmp_r
+              , MOV     II32   (OpImm (ImmInt (2*bw-1))) (OpReg dst_r)
+              , CMOV NE format (OpReg tmp_r) dst_r
+              , XOR     format (OpImm (ImmInt (bw-1))) (OpReg dst_r)
+              ]) -- NB: We don't need to zero-extend the result for the
+                 -- W8/W16 cases because the 'MOV' insn already
+                 -- took care of implicitly clearing the upper bits
   where
     bw = widthInBits width
     platform = targetPlatform dflags
+    format = if width == W8 then II16 else intFormat width
     lbl = mkCmmCodeLabel primUnitId (fsLit (clzLabel width))
 
 genCCall dflags is32Bit (PrimTarget (MO_Ctz width)) [dst] [src] bid
@@ -2085,7 +2073,6 @@ genCCall dflags is32Bit (PrimTarget (MO_Ctz width)) [dst] [src] bid
           dst_r   = getRegisterReg platform False (CmmLocal dst)
       lbl1 <- getBlockIdNat
       lbl2 <- getBlockIdNat
-      let format = if width == W8 then II16 else intFormat width
       tmp_r <- getNewRegNat format
 
       -- New CFG Edges:
@@ -2122,38 +2109,24 @@ genCCall dflags is32Bit (PrimTarget (MO_Ctz width)) [dst] [src] bid
 
   | otherwise = do
     code_src <- getAnyReg src
+    src_r <- getNewRegNat format
+    tmp_r <- getNewRegNat format
     let dst_r = getRegisterReg platform False (CmmLocal dst)
 
-    if isBmi2Enabled dflags
-    then do
-        src_r <- getNewRegNat (intFormat width)
-        return $ appOL (code_src src_r) $ case width of
-            W8 -> toOL
-                [ OR    II32 (OpImm (ImmInt 0xFFFFFF00)) (OpReg src_r)
-                , TZCNT II32 (OpReg src_r)        dst_r
-                ]
-            W16 -> toOL
-                [ TZCNT  II16 (OpReg src_r) dst_r
-                , MOVZxL II16 (OpReg dst_r) (OpReg dst_r)
-                ]
-            _ -> unitOL $ TZCNT (intFormat width) (OpReg src_r) dst_r
-    else do
-        -- The following insn sequence makes sure 'ctz 0' has a defined value.
-        -- starting with Haswell, one could use the TZCNT insn instead.
-        let format = if width == W8 then II16 else intFormat width
-        src_r <- getNewRegNat format
-        tmp_r <- getNewRegNat format
-        return $ code_src src_r `appOL` toOL
-                 ([ MOVZxL  II8    (OpReg src_r) (OpReg src_r) | width == W8 ] ++
-                  [ BSF     format (OpReg src_r) tmp_r
-                  , MOV     II32   (OpImm (ImmInt bw)) (OpReg dst_r)
-                  , CMOV NE format (OpReg tmp_r) dst_r
-                  ]) -- NB: We don't need to zero-extend the result for the
-                     -- W8/W16 cases because the 'MOV' insn already
-                     -- took care of implicitly clearing the upper bits
+    -- The following insn sequence makes sure 'ctz 0' has a defined value.
+    -- starting with Haswell, one could use the TZCNT insn instead.
+    return $ code_src src_r `appOL` toOL
+             ([ MOVZxL  II8    (OpReg src_r) (OpReg src_r) | width == W8 ] ++
+              [ BSF     format (OpReg src_r) tmp_r
+              , MOV     II32   (OpImm (ImmInt bw)) (OpReg dst_r)
+              , CMOV NE format (OpReg tmp_r) dst_r
+              ]) -- NB: We don't need to zero-extend the result for the
+                 -- W8/W16 cases because the 'MOV' insn already
+                 -- took care of implicitly clearing the upper bits
   where
     bw = widthInBits width
     platform = targetPlatform dflags
+    format = if width == W8 then II16 else intFormat width
 
 genCCall dflags is32Bit (PrimTarget (MO_UF_Conv width)) dest_regs args bid = do
     targetExpr <- cmmMakeDynamicReference dflags
index 5e790e4..c47e1fa 100644 (file)
@@ -342,8 +342,6 @@ data Instr
 
     -- bit counting instructions
         | POPCNT      Format Operand Reg -- [SSE4.2] count number of bits set to 1
-        | LZCNT       Format Operand Reg -- [BMI2] count number of leading zeros
-        | TZCNT       Format Operand Reg -- [BMI2] count number of trailing zeros
         | BSF         Format Operand Reg -- bit scan forward
         | BSR         Format Operand Reg -- bit scan reverse
 
@@ -473,8 +471,6 @@ x86_regUsageOfInstr platform instr
     DELTA   _           -> noUsage
 
     POPCNT _ src dst -> mkRU (use_R src []) [dst]
-    LZCNT  _ src dst -> mkRU (use_R src []) [dst]
-    TZCNT  _ src dst -> mkRU (use_R src []) [dst]
     BSF    _ src dst -> mkRU (use_R src []) [dst]
     BSR    _ src dst -> mkRU (use_R src []) [dst]
 
@@ -657,8 +653,6 @@ x86_patchRegsOfInstr instr env
     CLTD _              -> instr
 
     POPCNT fmt src dst -> POPCNT fmt (patchOp src) (env dst)
-    LZCNT  fmt src dst -> LZCNT  fmt (patchOp src) (env dst)
-    TZCNT  fmt src dst -> TZCNT  fmt (patchOp src) (env dst)
     PDEP   fmt src mask dst -> PDEP   fmt (patchOp src) (patchOp mask) (env dst)
     PEXT   fmt src mask dst -> PEXT   fmt (patchOp src) (patchOp mask) (env dst)
     BSF    fmt src dst -> BSF    fmt (patchOp src) (env dst)
index 075bb26..bf449d0 100644 (file)
@@ -693,8 +693,6 @@ pprInstr (XOR FF64 src dst) = pprOpOp (sLit "xorpd") FF64 src dst
 pprInstr (XOR format src dst) = pprFormatOpOp (sLit "xor")  format src dst
 
 pprInstr (POPCNT format src dst) = pprOpOp (sLit "popcnt") format src (OpReg dst)
-pprInstr (LZCNT format src dst)  = pprOpOp (sLit "lzcnt")  format src (OpReg dst)
-pprInstr (TZCNT format src dst)  = pprOpOp (sLit "tzcnt")  format src (OpReg dst)
 pprInstr (BSF format src dst)    = pprOpOp (sLit "bsf")    format src (OpReg dst)
 pprInstr (BSR format src dst)    = pprOpOp (sLit "bsr")    format src (OpReg dst)
 
index 45fc5a0..c177775 100644 (file)
@@ -151,11 +151,10 @@ mkClassDecl loc (dL->L _ (mcxt, tycl_hdr)) fds where_cls
   = do { (binds, sigs, ats, at_insts, _, docs) <- cvBindsAndSigs where_cls
        ; let cxt = fromMaybe (noLoc []) mcxt
        ; (cls, tparams, fixity, ann) <- checkTyClHdr True tycl_hdr
-       ; addAnnsAt loc ann -- Add any API Annotations to the top SrcSpan
-       ; (tyvars,annst) <- checkTyVarsP (text "class") whereDots cls tparams
-       ; addAnnsAt loc annst -- Add any API Annotations to the top SrcSpan
-       ; (at_defs, annsi) <- mapAndUnzipM (eitherToP . mkATDefault) at_insts
-       ; sequence_ annsi
+       ; mapM_ (\a -> a loc) ann -- Add any API Annotations to the top SrcSpan
+       ; tyvars <- checkTyVarsP (text "class") whereDots cls tparams
+       ; (at_defs, anns) <- fmap unzip $ mapM (eitherToP . mkATDefault) at_insts
+       ; sequence_ anns
        ; return (cL loc (ClassDecl { tcdCExt = noExt, tcdCtxt = cxt
                                    , tcdLName = cls, tcdTyVars = tyvars
                                    , tcdFixity = fixity
@@ -187,7 +186,7 @@ mkATDefault (dL->L loc (TyFamInstDecl { tfid_eqn = HsIB { hsib_body = e }}))
                                     , feqn_pats   = tvs
                                     , feqn_fixity = fixity
                                     , feqn_rhs    = rhs })
-           ; pure (f, addAnnsAt loc anns) }
+           ; pure (f, anns) }
 mkATDefault (dL->L _ (TyFamInstDecl (HsIB _ (XFamEqn _)))) = panic "mkATDefault"
 mkATDefault (dL->L _ (TyFamInstDecl (XHsImplicitBndrs _))) = panic "mkATDefault"
 mkATDefault _ = panic "mkATDefault: Impossible Match"
@@ -204,9 +203,8 @@ mkTyData :: SrcSpan
 mkTyData loc new_or_data cType (dL->L _ (mcxt, tycl_hdr))
          ksig data_cons maybe_deriv
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False tycl_hdr
-       ; addAnnsAt loc ann -- Add any API Annotations to the top SrcSpan
-       ; (tyvars, anns) <- checkTyVarsP (ppr new_or_data) equalsDots tc tparams
-       ; addAnnsAt loc anns -- Add any API Annotations to the top SrcSpan
+       ; mapM_ (\a -> a loc) ann -- Add any API Annotations to the top SrcSpan
+       ; tyvars <- checkTyVarsP (ppr new_or_data) equalsDots tc tparams
        ; defn <- mkDataDefn new_or_data cType mcxt ksig data_cons maybe_deriv
        ; return (cL loc (DataDecl { tcdDExt = noExt,
                                     tcdLName = tc, tcdTyVars = tyvars,
@@ -237,9 +235,8 @@ mkTySynonym :: SrcSpan
             -> P (LTyClDecl GhcPs)
 mkTySynonym loc lhs rhs
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False lhs
-       ; addAnnsAt loc ann -- Add any API Annotations to the top SrcSpan
-       ; (tyvars, anns) <- checkTyVarsP (text "type") equalsDots tc tparams
-       ; addAnnsAt loc anns -- Add any API Annotations to the top SrcSpan
+       ; mapM_ (\a -> a loc) ann -- Add any API Annotations to the top SrcSpan
+       ; tyvars <- checkTyVarsP (text "type") equalsDots tc tparams
        ; return (cL loc (SynDecl { tcdSExt = noExt
                                  , tcdLName = tc, tcdTyVars = tyvars
                                  , tcdFixity = fixity
@@ -296,9 +293,8 @@ mkFamDecl :: SrcSpan
           -> P (LTyClDecl GhcPs)
 mkFamDecl loc info lhs ksig injAnn
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False lhs
-       ; addAnnsAt loc ann -- Add any API Annotations to the top SrcSpan
-       ; (tyvars, anns) <- checkTyVarsP (ppr info) equals_or_where tc tparams
-       ; addAnnsAt loc anns -- Add any API Annotations to the top SrcSpan
+       ; mapM_ (\a -> a loc) ann -- Add any API Annotations to the top SrcSpan
+       ; tyvars <- checkTyVarsP (ppr info) equals_or_where tc tparams
        ; return (cL loc (FamDecl noExt (FamilyDecl
                                            { fdExt       = noExt
                                            , fdInfo      = info, fdLName = tc
@@ -808,11 +804,13 @@ really doesn't matter!
 -}
 
 checkTyVarsP :: SDoc -> SDoc -> Located RdrName -> [LHsTypeArg GhcPs]
-             -> P (LHsQTyVars GhcPs, [AddAnn])
+             -> P (LHsQTyVars GhcPs)
 -- Same as checkTyVars, but in the P monad
 checkTyVarsP pp_what equals_or_where tc tparms
   = do { let checkedTvs = checkTyVars pp_what equals_or_where tc tparms
-       ; eitherToP checkedTvs }
+       ; (tvs, anns) <- eitherToP checkedTvs
+       ; anns
+       ; pure tvs }
 
 eitherToP :: Either (SrcSpan, SDoc) a -> P a
 -- Adapts the Either monad to the P monad
@@ -822,14 +820,14 @@ eitherToP (Right thing)     = return thing
 checkTyVars :: SDoc -> SDoc -> Located RdrName -> [LHsTypeArg GhcPs]
             -> Either (SrcSpan, SDoc)
                       ( LHsQTyVars GhcPs  -- the synthesized type variables
-                      , [AddAnn] )        -- action which adds annotations
+                      , P () )            -- action which adds annotations
 -- ^ Check whether the given list of type parameters are all type variables
 -- (possibly with a kind signature).
 -- We use the Either monad because it's also called (via 'mkATDefault') from
 -- "Convert".
 checkTyVars pp_what equals_or_where tc tparms
   = do { (tvs, anns) <- fmap unzip $ mapM check tparms
-       ; return (mkHsQTvs tvs, concat anns) }
+       ; return (mkHsQTvs tvs, sequence_ anns) }
   where
     check (HsTypeArg ki@(L loc _)) = Left (loc,
                                       vcat [ text "Unexpected type application" <+>
@@ -841,15 +839,14 @@ checkTyVars pp_what equals_or_where tc tparms
                            <+> text "declaration for" <+> quotes (ppr tc)])
         -- Keep around an action for adjusting the annotations of extra parens
     chkParens :: [AddAnn] -> LHsType GhcPs
-              -> Either (SrcSpan, SDoc) (LHsTyVarBndr GhcPs, [AddAnn])
+              -> Either (SrcSpan, SDoc) (LHsTyVarBndr GhcPs, P ())
     chkParens acc (dL->L l (HsParTy _ ty)) = chkParens (mkParensApiAnn l
                                                         ++ acc) ty
     chkParens acc ty = case chk ty of
       Left err -> Left err
-      Right tv -> Right (tv, reverse acc)
+      Right tv@(dL->L l _) -> Right (tv, addAnnsAt l (reverse acc))
 
         -- Check that the name space is correct!
-    chk :: LHsType GhcPs -> Either (SrcSpan, SDoc) (LHsTyVarBndr GhcPs)
     chk (dL->L l (HsKindSig _ (dL->L lv (HsTyVar _ _ (dL->L _ tv))) k))
         | isRdrTyVar tv    = return (cL l (KindedTyVar noExt (cL lv tv) k))
     chk (dL->L l (HsTyVar _ _ (dL->L ltv tv)))
index 33b7f48..cd4c00d 100644 (file)
@@ -111,10 +111,6 @@ Runtime system
   Generation of these files, which sport a ``.hie`` suffix, is enabled via the
   ``-fwrite-ide-info`` flag. See :ref:`hie-options` for more information.
 
-- A new flag ``-xp`` is added on x86_64. When it is passed, the runtime linker
-  can load object files compiled with ``-fPIC -fexternal-dynamic-refs``
-  anywhere in the address space. This used to be restricted to the low 2Gb.
-
 Template Haskell
 ~~~~~~~~~~~~~~~~
 
index 0048a51..a5c2f14 100644 (file)
@@ -241,28 +241,6 @@ Miscellaneous RTS options
     crashes if exception handling are enabled. In order to get more information
     in compiled executables, C code or DLLs symbols need to be available.
 
-
-.. rts-flag:: -xp
-
-    On 64-bit machines, the runtime linker usually needs to map object code
-    into the low 2Gb of the address space, due to the x86_64 small memory model
-    where most symbol references are 32 bits. The problem is that this 2Gb of
-    address space can fill up, especially if you're loading a very large number
-    of object files into GHCi.
-
-    This flag offers a workaround, albeit a slightly convoluted one. To be able
-    to load an object file outside of the low 2Gb, the object code needs to be
-    compiled with ``-fPIC -fexternal-dynamic-refs``. When the ``+RTS -xp`` flag
-    is passed, the linker will assume that all object files were compiled with
-    ``-fPIC -fexternal-dynamic-refs`` and load them anywhere in the address
-    space. It's up to you to arrange that the object files you load (including
-    all packages) were compiled in the right way. If this is not the case for
-    an object, the linker will probably fail with an error message when the
-    problem is detected.
-
-    On some platforms where PIC is always the case, e.g. x86_64 MacOS X, this
-    flag is enabled by default.
-
 .. rts-flag:: -xm ⟨address⟩
 
     .. index::
@@ -272,10 +250,8 @@ Miscellaneous RTS options
 
         This option is for working around memory allocation
         problems only. Do not use unless GHCi fails with a message like
-        “\ ``failed to mmap() memory below 2Gb``\ ”. Consider recompiling
-        the objects with ``-fPIC -fexternal-dynamic-refs`` and using the
-        ``-xp`` flag instead. If you need to use this option to get GHCi
-        working on your machine, please file a bug.
+        “\ ``failed to mmap() memory below 2Gb``\ ”. If you need to use this
+        option to get GHCi working on your machine, please file a bug.
 
     On 64-bit machines, the RTS needs to allocate memory in the low 2Gb
     of the address space. Support for this across different operating
index 8c997f0..338c438 100644 (file)
@@ -588,11 +588,6 @@ The GHC API exposes functions for reading and writing these files.
     that are being written out. These include testing things properties such as
     variables not occuring outside of their expected scopes.
 
-The format in which GHC currently stores its typechecked AST, makes it costly
-to collect the types for some expressions nodes. For the sake of performance,
-GHC currently chooses to skip over these, so not all expression nodes should be
-expected to have type information on them. See :ghc-ticket:`16233` for more.
-
 .. _recomp:
 
 The recompilation checker
index 83eeb51..420e2d3 100644 (file)
@@ -1088,16 +1088,6 @@ Some flags only make sense for particular target platforms.
     SSE4.2 if your processor supports it but detects this automatically
     so no flag is required.
 
-.. ghc-flag:: -mbmi2
-    :shortdesc: (x86 only) Use BMI2 for bit manipulation operations
-    :type: dynamic
-    :category: platform-options
-
-    (x86 only, added in GHC 7.4.1) Use the BMI2 instruction set to
-    implement some bit operations when using the
-    :ref:`native code generator <native-code-gen>`. The resulting compiled
-    code will only run on processors that support BMI2 (Intel Haswell and newer, AMD Excavator, Zen and newer).
-
 Miscellaneous flags
 -------------------
 
index aa0acab..3344791 100644 (file)
@@ -1,6 +1,6 @@
 @echo off
 set CABAL=cabal
-set CABFLAGS=--disable-documentation --disable-profiling --disable-library-profiling
+set CABFLAGS=--disable-documentation --disable-profiling
 
 rem It is currently more robust to pass Cabal an absolute path to the project file.
 set PROJ="%CD%/hadrian/cabal.project"
index 13ef927..f28c3e0 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
 CABAL=cabal
-CABFLAGS="--disable-documentation --disable-profiling --disable-library-profiling"
+CABFLAGS="--disable-documentation --disable-profiling"
 
 # It is currently more robust to pass Cabal an absolute path to the project file.
 PROJ="$PWD/hadrian/cabal.project"
index 9ad4b6b..5919026 100644 (file)
@@ -8,10 +8,7 @@ import {-# SOURCE #-} Settings.Default
 developmentFlavour :: Stage -> Flavour
 developmentFlavour ghcStage = defaultFlavour
     { name = "devel" ++ show (fromEnum ghcStage)
-    , args = defaultBuilderArgs <> developmentArgs ghcStage <> defaultPackageArgs
-    , libraryWays = pure [vanilla]
-    , rtsWays = pure [vanilla, threaded]
-    , dynamicGhcPrograms = return False }
+    , args = defaultBuilderArgs <> developmentArgs ghcStage <> defaultPackageArgs }
 
 developmentArgs :: Stage -> Args
 developmentArgs ghcStage = do
index 3582e6a..63450d5 100644 (file)
@@ -188,17 +188,6 @@ typedef struct _CONCURRENT_FLAGS {
  */
 #define DEFAULT_TICK_INTERVAL USToTime(10000)
 
-/*
- * When linkerAlwaysPic is true, the runtime linker assume that all object
- * files were compiled with -fPIC -fexternal-dynamic-refs and load them
- * anywhere in the address space.
- */
-#if defined(x86_64_HOST_ARCH) && defined(darwin_HOST_OS)
-#define DEFAULT_LINKER_ALWAYS_PIC true
-#else
-#define DEFAULT_LINKER_ALWAYS_PIC false
-#endif
-
 /* See Note [Synchronization of flags and base APIs] */
 typedef struct _MISC_FLAGS {
     Time    tickInterval;        /* units: TIME_RESOLUTION */
@@ -208,7 +197,6 @@ typedef struct _MISC_FLAGS {
     bool generate_stack_trace;
     bool machineReadable;
     bool internalCounters;       /* See Note [Internal Counter Stats] */
-    bool linkerAlwaysPic;        /* Assume the object code is always PIC */
     StgWord linkerMemBase;       /* address to ask the OS for memory
                                   * for the linker, NULL ==> off */
 } MISC_FLAGS;
index 69446f9..000e663 100644 (file)
@@ -438,9 +438,6 @@ instance Bits Int where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    -- We want popCnt# to be inlined in user code so that `ghc -msse4.2`
-    -- can compile it down to a popcnt instruction without an extra function call
-    {-# INLINE popCount #-}
 
     zeroBits = 0
 
@@ -481,16 +478,13 @@ instance Bits Int where
 instance FiniteBits Int where
     finiteBitSize _ = WORD_SIZE_IN_BITS
     countLeadingZeros  (I# x#) = I# (word2Int# (clz# (int2Word# x#)))
-    {-# INLINE countLeadingZeros #-}
     countTrailingZeros (I# x#) = I# (word2Int# (ctz# (int2Word# x#)))
-    {-# INLINE countTrailingZeros #-}
 
 -- | @since 2.01
 instance Bits Word where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (W# x#) .&.   (W# y#)    = W# (x# `and#` y#)
     (W# x#) .|.   (W# y#)    = W# (x# `or#`  y#)
@@ -525,9 +519,7 @@ instance Bits Word where
 instance FiniteBits Word where
     finiteBitSize _ = WORD_SIZE_IN_BITS
     countLeadingZeros  (W# x#) = I# (word2Int# (clz# x#))
-    {-# INLINE countLeadingZeros #-}
     countTrailingZeros (W# x#) = I# (word2Int# (ctz# x#))
-    {-# INLINE countTrailingZeros #-}
 
 -- | @since 2.01
 instance Bits Integer where
index d87d352..2c5ca9d 100644 (file)
@@ -177,7 +177,6 @@ instance Bits Int8 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (I8# x#) .&.   (I8# y#)   = I8# (word2Int# (int2Word# x# `and#` int2Word# y#))
     (I8# x#) .|.   (I8# y#)   = I8# (word2Int# (int2Word# x# `or#`  int2Word# y#))
@@ -212,8 +211,6 @@ instance Bits Int8 where
 
 -- | @since 4.6.0.0
 instance FiniteBits Int8 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 8
     countLeadingZeros  (I8# x#) = I# (word2Int# (clz8# (int2Word# x#)))
     countTrailingZeros (I8# x#) = I# (word2Int# (ctz8# (int2Word# x#)))
@@ -384,7 +381,6 @@ instance Bits Int16 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (I16# x#) .&.   (I16# y#)  = I16# (word2Int# (int2Word# x# `and#` int2Word# y#))
     (I16# x#) .|.   (I16# y#)  = I16# (word2Int# (int2Word# x# `or#`  int2Word# y#))
@@ -419,8 +415,6 @@ instance Bits Int16 where
 
 -- | @since 4.6.0.0
 instance FiniteBits Int16 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 16
     countLeadingZeros  (I16# x#) = I# (word2Int# (clz16# (int2Word# x#)))
     countTrailingZeros (I16# x#) = I# (word2Int# (ctz16# (int2Word# x#)))
@@ -593,7 +587,6 @@ instance Bits Int32 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (I32# x#) .&.   (I32# y#)  = I32# (word2Int# (int2Word# x# `and#` int2Word# y#))
     (I32# x#) .|.   (I32# y#)  = I32# (word2Int# (int2Word# x# `or#`  int2Word# y#))
@@ -629,8 +622,6 @@ instance Bits Int32 where
 
 -- | @since 4.6.0.0
 instance FiniteBits Int32 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 32
     countLeadingZeros  (I32# x#) = I# (word2Int# (clz32# (int2Word# x#)))
     countTrailingZeros (I32# x#) = I# (word2Int# (ctz32# (int2Word# x#)))
@@ -834,7 +825,6 @@ instance Bits Int64 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (I64# x#) .&.   (I64# y#)  = I64# (word64ToInt64# (int64ToWord64# x# `and64#` int64ToWord64# y#))
     (I64# x#) .|.   (I64# y#)  = I64# (word64ToInt64# (int64ToWord64# x# `or64#`  int64ToWord64# y#))
@@ -1012,7 +1002,6 @@ instance Bits Int64 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (I64# x#) .&.   (I64# y#)  = I64# (word2Int# (int2Word# x# `and#` int2Word# y#))
     (I64# x#) .|.   (I64# y#)  = I64# (word2Int# (int2Word# x# `or#`  int2Word# y#))
@@ -1089,8 +1078,6 @@ uncheckedIShiftRA64# = uncheckedIShiftRA#
 
 -- | @since 4.6.0.0
 instance FiniteBits Int64 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 64
 #if WORD_SIZE_IN_BITS < 64
     countLeadingZeros  (I64# x#) = I# (word2Int# (clz64# (int64ToWord64# x#)))
index 249bcd5..12cb828 100644 (file)
@@ -139,7 +139,6 @@ data MiscFlags = MiscFlags
     , generateStackTrace    :: Bool
     , machineReadable       :: Bool
     , internalCounters      :: Bool
-    , linkerAlwaysPic       :: Bool
     , linkerMemBase         :: Word
       -- ^ address to ask the OS for memory for the linker, 0 ==> off
     } deriving ( Show -- ^ @since 4.8.0.0
@@ -445,8 +444,6 @@ getMiscFlags = do
                   (#{peek MISC_FLAGS, machineReadable} ptr :: IO CBool))
             <*> (toBool <$>
                   (#{peek MISC_FLAGS, internalCounters} ptr :: IO CBool))
-            <*> (toBool <$>
-                  (#{peek MISC_FLAGS, linkerAlwaysPic} ptr :: IO CBool))
             <*> #{peek MISC_FLAGS, linkerMemBase} ptr
 
 getDebugFlags :: IO DebugFlags
index e714392..d19a31d 100644 (file)
@@ -168,7 +168,6 @@ instance Bits Word8 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (W8# x#) .&.   (W8# y#)   = W8# (x# `and#` y#)
     (W8# x#) .|.   (W8# y#)   = W8# (x# `or#`  y#)
@@ -202,8 +201,6 @@ instance Bits Word8 where
 
 -- | @since 4.6.0.0
 instance FiniteBits Word8 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 8
     countLeadingZeros  (W8# x#) = I# (word2Int# (clz8# x#))
     countTrailingZeros (W8# x#) = I# (word2Int# (ctz8# x#))
@@ -359,7 +356,6 @@ instance Bits Word16 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (W16# x#) .&.   (W16# y#)  = W16# (x# `and#` y#)
     (W16# x#) .|.   (W16# y#)  = W16# (x# `or#`  y#)
@@ -393,8 +389,6 @@ instance Bits Word16 where
 
 -- | @since 4.6.0.0
 instance FiniteBits Word16 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 16
     countLeadingZeros  (W16# x#) = I# (word2Int# (clz16# x#))
     countTrailingZeros (W16# x#) = I# (word2Int# (ctz16# x#))
@@ -596,7 +590,6 @@ instance Bits Word32 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (W32# x#) .&.   (W32# y#)  = W32# (x# `and#` y#)
     (W32# x#) .|.   (W32# y#)  = W32# (x# `or#`  y#)
@@ -630,8 +623,6 @@ instance Bits Word32 where
 
 -- | @since 4.6.0.0
 instance FiniteBits Word32 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 32
     countLeadingZeros  (W32# x#) = I# (word2Int# (clz32# x#))
     countTrailingZeros (W32# x#) = I# (word2Int# (ctz32# x#))
@@ -771,7 +762,6 @@ instance Bits Word64 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (W64# x#) .&.   (W64# y#)  = W64# (x# `and64#` y#)
     (W64# x#) .|.   (W64# y#)  = W64# (x# `or64#`  y#)
@@ -924,7 +914,6 @@ instance Bits Word64 where
     {-# INLINE shift #-}
     {-# INLINE bit #-}
     {-# INLINE testBit #-}
-    {-# INLINE popCount #-}
 
     (W64# x#) .&.   (W64# y#)  = W64# (x# `and#` y#)
     (W64# x#) .|.   (W64# y#)  = W64# (x# `or#`  y#)
@@ -970,8 +959,6 @@ uncheckedShiftRL64# = uncheckedShiftRL#
 
 -- | @since 4.6.0.0
 instance FiniteBits Word64 where
-    {-# INLINE countLeadingZeros #-}
-    {-# INLINE countTrailingZeros #-}
     finiteBitSize _ = 64
     countLeadingZeros  (W64# x#) = I# (word2Int# (clz64# x#))
     countTrailingZeros (W64# x#) = I# (word2Int# (ctz64# x#))
index 43403ab..73dac44 100644 (file)
@@ -4,4 +4,5 @@ test('T12010',
         only_ways(['threaded1']),
         extra_ways(['threaded1']),
         cmd_prefix('WAY_FLAGS="' + ' '.join(config.way_flags['threaded1']) + '"')],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T12010'])
index 1912be7..dba0e5e 100644 (file)
@@ -89,14 +89,14 @@ test('hDuplicateTo001', [], compile_and_run, [''])
 test('countReaders001', [], compile_and_run, [''])
 
 test('concio001', [normal, multi_cpu_race],
-     makefile_test, ['test.concio001'])
+     run_command, ['$MAKE -s --no-print-directory test.concio001'])
 test('concio001.thr', [extra_files(['concio001.hs']), multi_cpu_race],
-     makefile_test, ['test.concio001.thr'])
+     run_command, ['$MAKE -s --no-print-directory test.concio001.thr'])
 
 test('concio002', reqlib('process'), compile_and_run, [''])
 
 test('T2122', [], compile_and_run, [''])
-test('T3307', [], makefile_test, ['T3307-test'])
+test('T3307', [], run_command, ['$MAKE -s --no-print-directory T3307-test'])
 test('T4855', normal, compile_and_run, [''])
 
 test('hSetEncoding001',extra_run_opts('hSetEncoding001.in'), compile_and_run, [''])
@@ -118,7 +118,8 @@ test('encoding003', normal, compile_and_run, [''])
 test('encoding004', extra_files(['encoded-data/']), compile_and_run, [''])
 test('encoding005', normal, compile_and_run, [''])
 
-test('environment001', [], makefile_test, ['environment001-test'])
+test('environment001', [], run_command,
+     ['$MAKE -s --no-print-directory environment001-test'])
 
 test('newline001', [], compile_and_run, [''])
 
index b6f1de9..ac030af 100644 (file)
 #  include <mach-o/fat.h>
 #endif
 
+#if defined(x86_64_HOST_ARCH) && defined(darwin_HOST_OS)
+#define ALWAYS_PIC
+#endif
+
 #if defined(dragonfly_HOST_OS)
 #include <sys/tls.h>
 #endif
@@ -208,7 +212,9 @@ int ocTryLoad( ObjectCode* oc );
  * We pick a default address based on the OS, but also make this
  * configurable via an RTS flag (+RTS -xm)
  */
-#if defined(MAP_32BIT) || DEFAULT_LINKER_ALWAYS_PIC
+#if !defined(ALWAYS_PIC) && defined(x86_64_HOST_ARCH)
+
+#if defined(MAP_32BIT)
 // Try to use MAP_32BIT
 #define MMAP_32BIT_BASE_DEFAULT 0
 #else
@@ -217,6 +223,7 @@ int ocTryLoad( ObjectCode* oc );
 #endif
 
 static void *mmap_32bit_base = (void *)MMAP_32BIT_BASE_DEFAULT;
+#endif
 
 static void ghciRemoveSymbolTable(HashTable *table, const SymbolName* key,
     ObjectCode *owner)
@@ -489,10 +496,12 @@ initLinker_ (int retain_cafs)
     }
 #   endif
 
+#if !defined(ALWAYS_PIC) && defined(x86_64_HOST_ARCH)
     if (RtsFlags.MiscFlags.linkerMemBase != 0) {
         // User-override for mmap_32bit_base
         mmap_32bit_base = (void*)RtsFlags.MiscFlags.linkerMemBase;
     }
+#endif
 
     if (RTS_LINKER_USE_MMAP)
         m32_allocator_init();
@@ -1000,32 +1009,29 @@ mmapForLinker (size_t bytes, uint32_t flags, int fd, int offset)
    void *map_addr = NULL;
    void *result;
    size_t size;
-   uint32_t tryMap32Bit = RtsFlags.MiscFlags.linkerAlwaysPic
-     ? 0
-     : TRY_MAP_32BIT;
    static uint32_t fixed = 0;
 
    IF_DEBUG(linker, debugBelch("mmapForLinker: start\n"));
    size = roundUpToPage(bytes);
 
-#if defined(x86_64_HOST_ARCH)
+#if !defined(ALWAYS_PIC) && defined(x86_64_HOST_ARCH)
 mmap_again:
-#endif
 
    if (mmap_32bit_base != 0) {
        map_addr = mmap_32bit_base;
    }
+#endif
 
    IF_DEBUG(linker,
             debugBelch("mmapForLinker: \tprotection %#0x\n",
                        PROT_EXEC | PROT_READ | PROT_WRITE));
    IF_DEBUG(linker,
             debugBelch("mmapForLinker: \tflags      %#0x\n",
-                       MAP_PRIVATE | tryMap32Bit | fixed | flags));
+                       MAP_PRIVATE | TRY_MAP_32BIT | fixed | flags));
 
    result = mmap(map_addr, size,
                  PROT_EXEC|PROT_READ|PROT_WRITE,
-                 MAP_PRIVATE|tryMap32Bit|fixed|flags, fd, offset);
+                 MAP_PRIVATE|TRY_MAP_32BIT|fixed|flags, fd, offset);
 
    if (result == MAP_FAILED) {
        sysErrorBelch("mmap %" FMT_Word " bytes at %p",(W_)size,map_addr);
@@ -1033,9 +1039,8 @@ mmap_again:
        return NULL;
    }
 
-#if defined(x86_64_HOST_ARCH)
-   if (RtsFlags.MiscFlags.linkerAlwaysPic) {
-   } else if (mmap_32bit_base != 0) {
+#if !defined(ALWAYS_PIC) && defined(x86_64_HOST_ARCH)
+   if (mmap_32bit_base != 0) {
        if (result == map_addr) {
            mmap_32bit_base = (StgWord8*)map_addr + size;
        } else {
@@ -1203,10 +1208,10 @@ void freeObjectCode (ObjectCode *oc)
 #if defined(NEED_SYMBOL_EXTRAS) && (!defined(x86_64_HOST_ARCH) \
                                     || !defined(mingw32_HOST_OS))
     if (RTS_LINKER_USE_MMAP) {
-      if (!USE_CONTIGUOUS_MMAP && !RtsFlags.MiscFlags.linkerAlwaysPic &&
-          oc->symbol_extras != NULL) {
-        m32_free(oc->symbol_extras, sizeof(SymbolExtra) * oc->n_symbol_extras);
-      }
+        if (!USE_CONTIGUOUS_MMAP && oc->symbol_extras != NULL) {
+            m32_free(oc->symbol_extras,
+                    sizeof(SymbolExtra) * oc->n_symbol_extras);
+        }
     }
     else {
         stgFree(oc->symbol_extras);
@@ -1286,8 +1291,6 @@ mkOc( pathchar *path, char *image, int imageSize,
 #if defined(NEED_SYMBOL_EXTRAS)
    oc->symbol_extras     = NULL;
 #endif
-   oc->bssBegin          = NULL;
-   oc->bssEnd            = NULL;
    oc->imageMapped       = mapped;
 
    oc->misalignment      = misalignment;
@@ -1501,39 +1504,17 @@ HsInt loadOc (ObjectCode* oc)
    }
 
    /* Note [loadOc orderings]
-      The order of `ocAllocateExtras` and `ocGetNames` matters. For MachO
-      and ELF, `ocInit` and `ocGetNames` initialize a bunch of pointers based
-      on the offset to `oc->image`, but `ocAllocateExtras` may relocate
-      the address of `oc->image` and invalidate those pointers. So we must
-      compute or recompute those pointers after `ocAllocateExtras`.
+      ocAllocateSymbolsExtras has only two pre-requisites, it must run after
+      preloadObjectFile and ocVerify.   Neither have changed.   On most targets
+      allocating the extras is independent on parsing the section data, so the
+      order between these two never mattered.
 
       On Windows, when we have an import library we (for now, as we don't honor
       the lazy loading semantics of the library and instead GHCi is already
       lazy) don't use the library after ocGetNames as it just populates the
-      symbol table.  Allocating space for jump tables in ocAllocateExtras
+      symbol table.  Allocating space for jump tables in ocAllocateSymbolExtras
       would just be a waste then as we'll be stopping further processing of the
-      library in the next few steps. If necessary, the actual allocation
-      happens in `ocGetNames_PEi386` and `ocAllocateExtras_PEi386` simply
-      set the correct pointers.
-      */
-
-#if defined(NEED_SYMBOL_EXTRAS)
-#  if defined(OBJFORMAT_MACHO)
-   r = ocAllocateExtras_MachO ( oc );
-   if (!r) {
-       IF_DEBUG(linker,
-                debugBelch("loadOc: ocAllocateExtras_MachO failed\n"));
-       return r;
-   }
-#  elif defined(OBJFORMAT_ELF)
-   r = ocAllocateExtras_ELF ( oc );
-   if (!r) {
-       IF_DEBUG(linker,
-                debugBelch("loadOc: ocAllocateExtras_ELF failed\n"));
-       return r;
-   }
-#  endif
-#endif
+      library in the next few steps.  */
 
    /* build the symbol list for this image */
 #  if defined(OBJFORMAT_ELF)
@@ -1551,8 +1532,22 @@ HsInt loadOc (ObjectCode* oc)
    }
 
 #if defined(NEED_SYMBOL_EXTRAS)
-#  if defined(OBJFORMAT_PEi386)
-   ocAllocateExtras_PEi386 ( oc );
+#  if defined(OBJFORMAT_MACHO)
+   r = ocAllocateSymbolExtras_MachO ( oc );
+   if (!r) {
+       IF_DEBUG(linker,
+                debugBelch("loadOc: ocAllocateSymbolExtras_MachO failed\n"));
+       return r;
+   }
+#  elif defined(OBJFORMAT_ELF)
+   r = ocAllocateSymbolExtras_ELF ( oc );
+   if (!r) {
+       IF_DEBUG(linker,
+                debugBelch("loadOc: ocAllocateSymbolExtras_ELF failed\n"));
+       return r;
+   }
+#  elif defined(OBJFORMAT_PEi386)
+   ocAllocateSymbolExtras_PEi386 ( oc );
 #  endif
 #endif
 
@@ -1838,3 +1833,4 @@ addSection (Section *s, SectionKind kind, SectionAlloc alloc,
                        start, (void*)((StgWord)start + size),
                        size, kind ));
 }
+
index 81a09fe..e284cd6 100644 (file)
@@ -201,10 +201,6 @@ typedef struct _ObjectCode {
     unsigned long   first_symbol_extra;
     unsigned long   n_symbol_extras;
 #endif
-    /* Additional memory that is preallocated and contiguous with image
-       which can be used used to relocate bss sections. */
-    char* bssBegin;
-    char* bssEnd;
 
     ForeignExportStablePtr *stable_ptrs;
 
index 37eafa5..ff9635a 100644 (file)
@@ -236,7 +236,6 @@ void initRtsFlagsDefaults(void)
     RtsFlags.MiscFlags.generate_dump_file      = false;
     RtsFlags.MiscFlags.machineReadable         = false;
     RtsFlags.MiscFlags.internalCounters        = false;
-    RtsFlags.MiscFlags.linkerAlwaysPic         = DEFAULT_LINKER_ALWAYS_PIC;
     RtsFlags.MiscFlags.linkerMemBase           = 0;
 
 #if defined(THREADED_RTS)
@@ -458,11 +457,6 @@ usage_text[] = {
 "  -e<n>     Maximum number of outstanding local sparks (default: 4096)",
 #endif
 #if defined(x86_64_HOST_ARCH)
-#if !DEFAULT_LINKER_ALWAYS_PIC
-"  -xp       Assume that all object files were compiled with -fPIC",
-"            -fexternal-dynamic-refs and load them anywhere in the address",
-"            space",
-#endif
 "  -xm       Base address to mmap memory in the GHCi linker",
 "            (hex; must be <80000000)",
 #endif
@@ -1508,11 +1502,6 @@ error = true;
                     break;
 
 #if defined(x86_64_HOST_ARCH)
-                case 'p': /* linkerAlwaysPic */
-                    OPTION_UNSAFE;
-                    RtsFlags.MiscFlags.linkerAlwaysPic = true;
-                    break;
-
                 case 'm': /* linkerMemBase */
                     OPTION_UNSAFE;
                     if (rts_argv[arg][3] != '\0') {
index b647d20..9ea10d4 100644 (file)
  * SILENTLY generate crashing code for data references.  This hack is
  * enabled by X86_64_ELF_NONPIC_HACK.
  *
- * One workaround is to use shared Haskell libraries. This is the case
- * when dynamically-linked GHCi is used.
- *
- * Another workaround is to keep the static libraries but compile them
- * with -fPIC -fexternal-dynamic-refs, because that will generate PIC
- * references to data which can be relocated. This is the case when
- * +RTS -xp is passed.
+ * One workaround is to use shared Haskell libraries.  This is
+ * coming.  Another workaround is to keep the static libraries but
+ * compile them with -fPIC, because that will generate PIC references
+ * to data which can be relocated.  The PIC code is still too green to
+ * do this systematically, though.
  *
  * See bug #781
  * See thread http://www.haskell.org/pipermail/cvs-ghc/2007-September/038458.html
@@ -76,7 +74,7 @@
  * Sym*_NeedsProto: the symbol is undefined and we add a dummy
  *                  default proto extern void sym(void);
  */
-#define X86_64_ELF_NONPIC_HACK (!RtsFlags.MiscFlags.linkerAlwaysPic)
+#define X86_64_ELF_NONPIC_HACK 1
 
 #if defined(sparc_HOST_ARCH)
 #  define ELF_TARGET_SPARC  /* Used inside <elf.h> */
@@ -171,8 +169,6 @@ get_shndx_table(Elf_Ehdr* ehdr)
 void
 ocInit_ELF(ObjectCode * oc)
 {
-    ocDeinit_ELF(oc);
-
     oc->info = (struct ObjectCodeFormatInfo*)stgCallocBytes(
             1, sizeof *oc->info,
             "ocInit_Elf(ObjectCodeFormatInfo)");
@@ -322,7 +318,6 @@ ocDeinit_ELF(ObjectCode * oc)
         }
 
         stgFree(oc->info);
-        oc->info = NULL;
     }
 }
 
@@ -581,7 +576,7 @@ ocVerifyImage_ELF ( ObjectCode* oc )
 /* Figure out what kind of section it is.  Logic derived from
    Figure 1.14 ("Special Sections") of the ELF document
    ("Portable Formats Specification, Version 1.1"). */
-static SectionKind getSectionKind_ELF( Elf_Shdr *hdr, int *is_bss )
+static int getSectionKind_ELF( Elf_Shdr *hdr, int *is_bss )
 {
     *is_bss = false;
 
@@ -683,31 +678,23 @@ ocGetNames_ELF ( ObjectCode* oc )
       StgWord mapped_size = 0, mapped_offset = 0;
       StgWord size = shdr[i].sh_size;
       StgWord offset = shdr[i].sh_offset;
-      StgWord align = shdr[i].sh_addralign;
 
       if (is_bss && size > 0) {
          /* This is a non-empty .bss section.  Allocate zeroed space for
             it, and set its .sh_offset field such that
             ehdrC + .sh_offset == addr_of_zeroed_space.  */
-#if defined(NEED_GOT) || RTS_LINKER_USE_MMAP
-          if (USE_CONTIGUOUS_MMAP || RtsFlags.MiscFlags.linkerAlwaysPic) {
-              /* The space for bss sections is already preallocated */
-              ASSERT(oc->bssBegin != NULL);
-              alloc = SECTION_NOMEM;
-              start =
-                oc->image + roundUpToAlign(oc->bssBegin - oc->image, align);
-              oc->bssBegin = (char*)start + size;
-              ASSERT(oc->bssBegin <= oc->bssEnd);
-          } else {
-              /* Use mmapForLinker to allocate .bss, otherwise the malloced
-               * address might be out of range for sections that are mmaped.
-               */
-              alloc = SECTION_MMAP;
-              start = mmapForLinker(size, MAP_ANONYMOUS, -1, 0);
-              mapped_start = start;
-              mapped_offset = 0;
-              mapped_size = roundUpToPage(size);
-          }
+#if defined(NEED_GOT)
+          /* always use mmap if we use GOT slots.  Otherwise the malloced
+           * address might be out of range for sections that are mmaped.
+           */
+          alloc = SECTION_MMAP;
+          start = mmap(NULL, size,
+                       PROT_READ | PROT_WRITE | PROT_EXEC,
+                       MAP_ANON | MAP_PRIVATE,
+                       -1, 0);
+          mapped_start = start;
+          mapped_offset = 0;
+          mapped_size = roundUpToPage(size);
 #else
           alloc = SECTION_MALLOC;
           start = stgCallocBytes(1, size, "ocGetNames_ELF(BSS)");
@@ -767,7 +754,7 @@ ocGetNames_ELF ( ObjectCode* oc )
           start = mem;
           mapped_start = mem;
 #else
-          if (USE_CONTIGUOUS_MMAP || RtsFlags.MiscFlags.linkerAlwaysPic) {
+          if (USE_CONTIGUOUS_MMAP) {
               // already mapped.
               start = oc->image + offset;
               alloc = SECTION_NOMEM;
@@ -1598,6 +1585,9 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
 
       case COMPAT_R_X86_64_PC32:
       {
+#if defined(ALWAYS_PIC)
+          barf("R_X86_64_PC32 relocation, but ALWAYS_PIC.");
+#else
           StgInt64 off = value - P;
           if (off != (Elf64_Sword)off && X86_64_ELF_NONPIC_HACK) {
               StgInt64 pltAddress =
@@ -1614,6 +1604,7 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
           }
           Elf64_Sword payload = off;
           memcpy((void*)P, &payload, sizeof(payload));
+#endif
           break;
       }
 
@@ -1626,6 +1617,9 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
 
       case COMPAT_R_X86_64_32:
       {
+#if defined(ALWAYS_PIC)
+          barf("R_X86_64_32 relocation, but ALWAYS_PIC.");
+#else
           if (value != (Elf64_Word)value && X86_64_ELF_NONPIC_HACK) {
               StgInt64 pltAddress =
                   (StgInt64) &makeSymbolExtra(oc, ELF_R_SYM(info), S)
@@ -1641,11 +1635,15 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
           }
           Elf64_Word payload = value;
           memcpy((void*)P, &payload, sizeof(payload));
+#endif
           break;
       }
 
       case COMPAT_R_X86_64_32S:
       {
+#if defined(ALWAYS_PIC)
+          barf("R_X86_64_32S relocation, but ALWAYS_PIC.");
+#else
           if ((StgInt64)value != (Elf64_Sword)value && X86_64_ELF_NONPIC_HACK) {
               StgInt64 pltAddress =
                   (StgInt64) &makeSymbolExtra(oc, ELF_R_SYM(info), S)
@@ -1661,6 +1659,7 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
           }
           Elf64_Sword payload = value;
           memcpy((void*)P, &payload, sizeof(payload));
+#endif
           break;
       }
       case COMPAT_R_X86_64_REX_GOTPCRELX:
@@ -1682,6 +1681,9 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
 #if defined(dragonfly_HOST_OS)
       case COMPAT_R_X86_64_GOTTPOFF:
       {
+#if defined(ALWAYS_PIC)
+          barf("R_X86_64_GOTTPOFF relocation, but ALWAYS_PIC.");
+#else
         /* determine the offset of S to the current thread's tls
            area
            XXX: Move this to the beginning of function */
@@ -1699,12 +1701,16 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
           }
           Elf64_SWord payload = off;
           memcpy((void*)P, &payload, sizeof(payload));
+#endif
           break;
       }
 #endif
 
       case COMPAT_R_X86_64_PLT32:
       {
+#if defined(ALWAYS_PIC)
+          barf("R_X86_64_PLT32 relocation, but ALWAYS_PIC.");
+#else
           StgInt64 off = value - P;
           if (off != (Elf64_Sword)off) {
               StgInt64 pltAddress = (StgInt64) &makeSymbolExtra(oc, ELF_R_SYM(info), S)
@@ -1719,6 +1725,7 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
           }
           Elf64_Sword payload = off;
           memcpy((void*)P, &payload, sizeof(payload));
+#endif
           break;
       }
 #endif
@@ -1884,27 +1891,22 @@ int ocRunInit_ELF( ObjectCode *oc )
 
 #if defined(NEED_SYMBOL_EXTRAS)
 
-int ocAllocateExtras_ELF( ObjectCode *oc )
+int ocAllocateSymbolExtras_ELF( ObjectCode *oc )
 {
-  Elf_Ehdr *ehdr = (Elf_Ehdr *) oc->image;
-  Elf_Shdr* shdr = (Elf_Shdr *) ( ((char *)oc->image) + ehdr->e_shoff );
-  Elf_Shdr* symtab = NULL;
-  Elf_Word shnum = elf_shnum(ehdr);
-  int bssSize = 0;
-
-  for (Elf_Word i = 0; i < shnum; ++i) {
-    if(shdr[i].sh_type == SHT_SYMTAB) {
-      symtab = &shdr[i];
-    } else {
-      int isBss = 0;
-      getSectionKind_ELF(&shdr[i], &isBss);
-      if (isBss && shdr[i].sh_size > 0) {
-        bssSize += roundUpToAlign(shdr[i].sh_size, shdr[i].sh_addralign);
-      }
-    }
-  }
+  Elf_Ehdr *ehdr;
+  Elf_Shdr* shdr;
+  Elf_Word i, shnum;
+
+  ehdr = (Elf_Ehdr *) oc->image;
+  shdr = (Elf_Shdr *) ( ((char *)oc->image) + ehdr->e_shoff );
+
+  shnum = elf_shnum(ehdr);
+
+  for( i = 0; i < shnum; i++ )
+    if( shdr[i].sh_type == SHT_SYMTAB )
+      break;
 
-  if (symtab == NULL)
+  if( i == shnum )
   {
     // Not having a symbol table is not in principle a problem.
     // When an object file has no symbols then the 'strip' program
@@ -1914,15 +1916,15 @@ int ocAllocateExtras_ELF( ObjectCode *oc )
     return 1;
   }
 
-  if( symtab->sh_entsize != sizeof( Elf_Sym ) )
+  if( shdr[i].sh_entsize != sizeof( Elf_Sym ) )
   {
     errorBelch( "The entry size (%d) of the symtab isn't %d\n",
-      (int) symtab->sh_entsize, (int) sizeof( Elf_Sym ) );
+      (int) shdr[i].sh_entsize, (int) sizeof( Elf_Sym ) );
 
     return 0;
   }
 
-  return ocAllocateExtras(oc, symtab->sh_size / sizeof( Elf_Sym ), 0, bssSize);
+  return ocAllocateSymbolExtras( oc, shdr[i].sh_size / sizeof( Elf_Sym ), 0 );
 }
 
 #endif /* NEED_SYMBOL_EXTRAS */
index 30c993b..b0d6638 100644 (file)
@@ -13,6 +13,6 @@ int ocVerifyImage_ELF    ( ObjectCode* oc );
 int ocGetNames_ELF       ( ObjectCode* oc );
 int ocResolve_ELF        ( ObjectCode* oc );
 int ocRunInit_ELF        ( ObjectCode* oc );
-int ocAllocateExtras_ELF ( ObjectCode *oc );
+int ocAllocateSymbolExtras_ELF( ObjectCode *oc );
 
 #include "EndPrivate.h"
index ca5befc..c6a6c28 100644 (file)
@@ -99,8 +99,6 @@ bool ocMprotect_MachO( ObjectCode *oc );
 void
 ocInit_MachO(ObjectCode * oc)
 {
-    ocDeinit_MachO(oc);
-
     oc->info = (struct ObjectCodeFormatInfo*)stgCallocBytes(
                 1, sizeof *oc->info,
                 "ocInit_MachO(ObjectCodeFormatInfo)");
@@ -162,19 +160,16 @@ ocInit_MachO(ObjectCode * oc)
 
 void
 ocDeinit_MachO(ObjectCode * oc) {
-    if (oc->info != NULL) {
-        if(oc->info->n_macho_symbols > 0) {
-            stgFree(oc->info->macho_symbols);
-        }
+    if(oc->info->n_macho_symbols > 0) {
+        stgFree(oc->info->macho_symbols);
+    }
 #if defined(aarch64_HOST_ARCH)
-        freeGot(oc);
-        for(int i = 0; i < oc->n_sections; i++) {
-            freeStubs(&oc->sections[i]);
-        }
-#endif
-        stgFree(oc->info);
-        oc->info = NULL;
+    freeGot(oc);
+    for(int i = 0; i < oc->n_sections; i++) {
+        freeStubs(&oc->sections[i]);
     }
+#endif
+    stgFree(oc->info);
 }
 
 static int
@@ -187,22 +182,19 @@ resolveImports(
 #if defined(x86_64_HOST_ARCH) || defined(aarch64_HOST_ARCH)
 
 int
-ocAllocateExtras_MachO(ObjectCode* oc)
+ocAllocateSymbolExtras_MachO(ObjectCode* oc)
 {
-    IF_DEBUG(linker, debugBelch("ocAllocateExtras_MachO: start\n"));
+    IF_DEBUG(linker, debugBelch("ocAllocateSymbolExtras_MachO: start\n"));
 
     if (NULL != oc->info->symCmd) {
-        IF_DEBUG(linker,
-            debugBelch("ocAllocateExtras_MachO: allocate %d symbols\n",
-                oc->info->symCmd->nsyms));
-        IF_DEBUG(linker, debugBelch("ocAllocateExtras_MachO: done\n"));
-        return ocAllocateExtras(oc, oc->info->symCmd->nsyms, 0, 0);
+        IF_DEBUG(linker, debugBelch("ocAllocateSymbolExtras_MachO: allocate %d symbols\n", oc->info->symCmd->nsyms));
+        IF_DEBUG(linker, debugBelch("ocAllocateSymbolExtras_MachO: done\n"));
+        return ocAllocateSymbolExtras(oc, oc->info->symCmd->nsyms, 0);
     }
 
-    IF_DEBUG(linker,
-        debugBelch("ocAllocateExtras_MachO: allocated no symbols\n"));
-    IF_DEBUG(linker, debugBelch("ocAllocateExtras_MachO: done\n"));
-    return ocAllocateExtras(oc, 0, 0, 0);
+    IF_DEBUG(linker, debugBelch("ocAllocateSymbolExtras_MachO: allocated no symbols\n"));
+    IF_DEBUG(linker, debugBelch("ocAllocateSymbolExtras_MachO: done\n"));
+    return ocAllocateSymbolExtras(oc,0,0);
 }
 
 #else
index 4fb58e8..b495c2b 100644 (file)
@@ -13,7 +13,7 @@ int ocGetNames_MachO       ( ObjectCode* oc );
 int ocResolve_MachO        ( ObjectCode* oc );
 int ocRunInit_MachO        ( ObjectCode* oc );
 int machoGetMisalignment( FILE * );
-int ocAllocateExtras_MachO ( ObjectCode* oc );
+int ocAllocateSymbolExtras_MachO ( ObjectCode* oc );
 
 #if defined(powerpc_HOST_ARCH)
 void machoInitSymbolsWithoutUnderscore( void );
index 6cf0d52..cc92fa7 100644 (file)
@@ -1778,7 +1778,7 @@ ocGetNames_PEi386 ( ObjectCode* oc )
  * so simply set correct pointer here.
  */
 bool
-ocAllocateExtras_PEi386 ( ObjectCode* oc )
+ocAllocateSymbolExtras_PEi386 ( ObjectCode* oc )
 {
    /* If the ObjectCode was unloaded we don't need a trampoline, it's likely
       an import library so we're discarding it earlier.  */
index 538f132..eb5bec8 100644 (file)
@@ -57,7 +57,7 @@ bool ocRunInit_PEi386     ( ObjectCode *oc );
 bool ocGetNames_PEi386    ( ObjectCode* oc );
 bool ocVerifyImage_PEi386 ( ObjectCode* oc );
 SymbolAddr *lookupSymbol_PEi386(SymbolName *lbl);
-bool ocAllocateExtras_PEi386 ( ObjectCode* oc );
+bool ocAllocateSymbolExtras_PEi386 ( ObjectCode* oc );
 SymbolAddr *lookupSymbolInDLLs ( const SymbolName* lbl );
 /* See Note [mingw-w64 name decoration scheme] */
 /* We use myindex to calculate array addresses, rather than
index a9e4c37..88541f4 100644 (file)
 #include "linker/SymbolExtras.h"
 #include "linker/M32Alloc.h"
 
-#if defined(OBJFORMAT_ELF)
-#  include "linker/Elf.h"
-#elif defined(OBJFORMAT_MACHO)
-#  include "linker/MachO.h"
-#endif
-
 #include <string.h>
 #if RTS_LINKER_USE_MMAP
 #include <sys/mman.h>
 #endif /* RTS_LINKER_USE_MMAP */
 
 /*
-  ocAllocateExtras
+  ocAllocateSymbolExtras
 
   Allocate additional space at the end of the object file image to make room
-  for jump islands (powerpc, x86_64, arm), GOT entries (x86_64) and
-  bss sections.
+  for jump islands (powerpc, x86_64, arm) and GOT entries (x86_64).
 
   PowerPC relative branch instructions have a 24 bit displacement field.
   As PPC code is always 4-byte-aligned, this yields a +-32MB range.
   filled in by makeSymbolExtra below.
 */
 
-int ocAllocateExtras(ObjectCode* oc, int count, int first, int bssSize)
+int ocAllocateSymbolExtras( ObjectCode* oc, int count, int first )
 {
-  void* oldImage = oc->image;
-
-  if (count > 0 || bssSize > 0) {
-    if (!RTS_LINKER_USE_MMAP) {
-
-      // round up to the nearest 4
-      int aligned = (oc->fileSize + 3) & ~3;
-      int misalignment = oc->misalignment;
-
-      oc->image -= misalignment;
-      oc->image = stgReallocBytes( oc->image,
-                               misalignment +
-                               aligned + sizeof (SymbolExtra) * count,
-                               "ocAllocateExtras" );
-      oc->image += misalignment;
-
-      oc->symbol_extras = (SymbolExtra *) (oc->image + aligned);
-    } else if (USE_CONTIGUOUS_MMAP || RtsFlags.MiscFlags.linkerAlwaysPic) {
-      /* Keep image, bssExtras and symbol_extras contiguous */
-      size_t n = roundUpToPage(oc->fileSize);
-      bssSize = roundUpToAlign(bssSize, 8);
-      size_t allocated_size = n + bssSize + (sizeof(SymbolExtra) * count);
+  size_t n;
+
+  if (RTS_LINKER_USE_MMAP && USE_CONTIGUOUS_MMAP) {
+      n = roundUpToPage(oc->fileSize);
+
+      /* Keep image and symbol_extras contiguous */
+
+      size_t allocated_size = n + (sizeof(SymbolExtra) * count);
       void *new = mmapForLinker(allocated_size, MAP_ANONYMOUS, -1, 0);
       if (new) {
           memcpy(new, oc->image, oc->fileSize);
@@ -82,37 +61,44 @@ int ocAllocateExtras(ObjectCode* oc, int count, int first, int bssSize)
           }
           oc->image = new;
           oc->imageMapped = true;
-          oc->fileSize = allocated_size;
-          oc->symbol_extras = (SymbolExtra *) (oc->image + n + bssSize);
-          oc->bssBegin = oc->image + n;
-          oc->bssEnd = oc->image + n + bssSize;
+          oc->fileSize = n + (sizeof(SymbolExtra) * count);
+          oc->symbol_extras = (SymbolExtra *) (oc->image + n);
+          if(mprotect(new, allocated_size, PROT_READ | PROT_EXEC) != 0) {
+              sysErrorBelch("unable to protect memory");
+          }
       }
       else {
           oc->symbol_extras = NULL;
           return 0;
       }
-    } else {
+  }
+  else if( count > 0 ) {
+    if (RTS_LINKER_USE_MMAP) {
+        n = roundUpToPage(oc->fileSize);
+
         oc->symbol_extras = m32_alloc(sizeof(SymbolExtra) * count, 8);
         if (oc->symbol_extras == NULL) return 0;
     }
+    else {
+        // round up to the nearest 4
+        int aligned = (oc->fileSize + 3) & ~3;
+        int misalignment = oc->misalignment;
+
+        oc->image -= misalignment;
+        oc->image = stgReallocBytes( oc->image,
+                                 misalignment +
+                                 aligned + sizeof (SymbolExtra) * count,
+                                 "ocAllocateSymbolExtras" );
+        oc->image += misalignment;
+
+        oc->symbol_extras = (SymbolExtra *) (oc->image + aligned);
+    }
   }
 
   if (oc->symbol_extras != NULL) {
       memset( oc->symbol_extras, 0, sizeof (SymbolExtra) * count );
   }
 
-  // ObjectCodeFormatInfo contains computed addresses based on offset to
-  // image, if the address of image changes, we need to invalidate
-  // the ObjectCodeFormatInfo and recompute it.
-  if (oc->image != oldImage) {
-#if defined(OBJFORMAT_MACHO)
-    ocInit_MachO( oc );
-#endif
-#if defined(OBJFORMAT_ELF)
-    ocInit_ELF( oc );
-#endif
-  }
-
   oc->first_symbol_extra = first;
   oc->n_symbol_extras = count;
 
index af828e6..4974c06 100644 (file)
@@ -7,7 +7,7 @@
 
 #if defined(NEED_SYMBOL_EXTRAS)
 
-int ocAllocateExtras(ObjectCode* oc, int count, int first, int bssSize);
+int ocAllocateSymbolExtras( ObjectCode* oc, int count, int first );
 
 #if defined(arm_HOST_ARCH)
 SymbolExtra* makeArmSymbolExtra( ObjectCode const* oc,
index ea123e8..7dd0efd 100644 (file)
@@ -32,16 +32,10 @@ roundDownToPage (size_t x)
 }
 
 INLINE_HEADER size_t
-roundUpToAlign (size_t size, size_t align)
-{
-    /* alignment must always be a power of 2 */
-    return (size + align - 1) & ~(align - 1);
-}
-
-INLINE_HEADER size_t
 roundUpToPage (size_t x)
 {
-    return roundUpToAlign(x, getPageSize());
+    size_t size = getPageSize();
+    return ((x + size - 1) & ~(size - 1));
 }
 
 
index c5d09e0..6d80e07 100644 (file)
@@ -13,7 +13,6 @@ import argparse
 import re
 import subprocess
 import time
-import sys
 
 from collections import namedtuple
 from math import ceil, trunc
@@ -42,7 +41,7 @@ def is_worktree_dirty():
 # The metrics (a.k.a stats) are named tuples, PerfStat, in this form:
 #
 # ( test_env : 'val',      # Test environment.
-#   test     : 'val',      # Name of the test
+#   test     : 'val',      # Name of the test 
 #   way      : 'val',
 #   metric   : 'val',      # Metric being recorded
 #   value    : 'val',      # The statistic result e.g. runtime
@@ -74,21 +73,6 @@ def get_perf_stats(commit='HEAD', namespace='perf'):
     log = [parse_perf_stat(stat_str) for stat_str in log]
     return log
 
-# Check if a str is in a 40 character git commit hash.
-# str -> bool
-_commit_hash_re = re.compile('[0-9a-f]' * 40)
-def is_commit_hash(hash):
-    return _commit_hash_re.fullmatch(hash) != None
-
-# Convert a <ref> to a commit hash code.
-# str -> str
-def commit_hash(commit):
-    if is_commit_hash(commit):
-        return commit
-    return subprocess.check_output(['git', 'rev-parse', commit], \
-            stderr=subprocess.STDOUT) \
-            .decode() \
-            .strip()
 
 # Get allowed changes to performance. This is extracted from the commit message of
 # the given commit in this form:
@@ -99,20 +83,13 @@ def commit_hash(commit):
 #           'metrics': ['metricA', 'metricB', ...],
 #           'opts': {
 #                   'optionA': 'string value',
-#                   'optionB': 'string value',          # e.g. test_env: "x86_64-linux"
+#                   'optionB': 'string value',
 #                   ...
 #               }
 #   }
-_get_allowed_perf_changes_cache = {}
 def get_allowed_perf_changes(commit='HEAD'):
-    global _get_allowed_perf_changes_cache
-    commit =  commit_hash(commit)
-    if not commit in _get_allowed_perf_changes_cache:
-        commitByteStr = subprocess.check_output(\
-            ['git', '--no-pager', 'log', '-n1', '--format=%B', commit])
-        _get_allowed_perf_changes_cache[commit] \
-            = parse_allowed_perf_changes(commitByteStr.decode())
-    return _get_allowed_perf_changes_cache[commit]
+    commitByteStr = subprocess.check_output(['git', '--no-pager', 'log', '-n1', '--format=%B', commit])
+    return parse_allowed_perf_changes(commitByteStr.decode())
 
 def parse_allowed_perf_changes(commitMsg):
     # Helper regex. Non-capturing unless postfixed with Cap.
@@ -125,7 +102,7 @@ def parse_allowed_perf_changes(commitMsg):
     exp = (r"^Metric"
         +s+r"(Increase|Decrease)"
         +s+r"?("+qstr+r"|"+qstrList+r")?"                   # Metric or list of metrics.s..
-        +s+r"?(\(" + r"(?:[^')]|"+qstr+r")*" + r"\))?"      # Options surrounded in parenthesis. (allow parenthases in quoted strings)
+        +s+r"?(\(" + r"(?:[^')]|"+qstr+r")*" + r"\))?"      # Options surounded in parenthesis. (allow parenthases in quoted strings))
         +s+r"?:?"                                           # Optional ":"
         +s+r"?((?:(?!\n\n)(?!\n[^\s])(?:.|\n))*)"           # Test names. Stop parsing on empty or non-indented new line.
         )
@@ -236,176 +213,11 @@ def append_perf_stat(stats, commit='HEAD', namespace='perf', max_tries=5):
         tries += 1
         time.sleep(1)
 
-    print("\nAn error occurred while writing the performance metrics to git notes.\n \
-            This is usually due to a lock-file existing somewhere in the git repo.")
+    print("\nAn error occured while writing the performance metrics to git notes.\n \
+       ​            This is usually due to a lock-file existing somewhere in the git repo.")
 
     return False
 
-#
-# Baseline calculation
-#
-
-# Max number of ancestor commits to search when compiling a baseline performance metric.
-BaselineSearchDepth = 75
-
-# The git notes name space for local results.
-LocalNamespace = "perf"
-
-# The git notes name space for ci results.
-CiNamespace = "ci/" + LocalNamespace
-
-# (isCalculated, best fit ci test_env or None)
-BestFitCiTestEnv = (False, None)
-
-# test_env string or None
-def best_fit_ci_test_env():
-    global BestFitCiTestEnv
-    if not BestFitCiTestEnv[0]:
-        platform = sys.platform
-        isArch64 = sys.maxsize > 2**32
-        arch = "x86_64" if isArch64 else "i386"
-
-        if platform.startswith("linux"):
-            test_env = arch + "-linux-deb9"
-        elif platform.startswith("win32"):
-            # There are no windows CI test results.
-            test_env = None
-        elif isArch64 and platform.startswith("darwin"):
-            test_env = arch + "-darwin"
-        elif isArch64 and platform.startswith("freebsd"):
-            test_env = arch + "-freebsd"
-        else:
-            test_env = None
-
-        BestFitCiTestEnv = (True, test_env)
-
-    return BestFitCiTestEnv[1]
-
-_baseline_depth_commit_log = {}
-
-# Get the commit hashes for the last BaselineSearchDepth commits from and
-# including the input commit. The output commits are all commit hashes.
-# str -> [str]
-def baseline_commit_log(commit):
-    global _baseline_depth_commit_log
-    commit = commit_hash(commit)
-    if not commit in _baseline_depth_commit_log:
-        _baseline_depth_commit_log[commit] = \
-            subprocess.check_output(['git', 'log', '--format=%H', \
-                             '-n' + str(BaselineSearchDepth)]) \
-                .decode().split('\n')
-    return _baseline_depth_commit_log[commit]
-
-# Cache of baseline values. This is a dict of dicts indexed on:
-# (useCiNamespace, commit) -> (test_env, test, metric, way) -> baseline
-# (bool          , str   ) -> (str     , str , str   , str) -> float
-_commit_metric_cache = {}
-
-# Get the baseline (expected value) of a test at a given commit. This searches
-# git notes from older commits for recorded metrics (locally and from ci). More
-# recent commits are favoured, then local results over ci results are favoured.
-#
-# commit: str - must be a commit hash (see commit_has())
-# name: str - test name
-# test_env: str - test environment (note a best fit test_env will be used
-#                      instead when looking for ci results)
-# metric: str - test metric
-# way: str - test way
-# returns: the baseline float or None if no metric was found within
-#          BaselineSearchDepth commits and since the last expected change.
-def baseline_metric(commit, name, test_env, metric, way):
-    # For performance reasons (in order to avoid calling commit_hash), we assert
-    # commit is already a commit hash.
-    assert is_commit_hash(commit)
-
-    # Get all recent commit hashes.
-    commit_hashes = baseline_commit_log(commit)
-
-    # TODO PERF use git log to get hashes of all BaselineSearchDepth commits
-    def depth_to_commit(depth):
-        return commit_hashes[depth]
-
-    def has_expected_change(commit):
-        return get_allowed_perf_changes(commit).get(name) \
-                != None
-
-    # Bool -> String
-    def namespace(useCiNamespace):
-        return CiNamespace if useCiNamespace else LocalNamespace
-
-    ci_test_env = best_fit_ci_test_env()
-
-    # gets the metric of a given commit
-    # (Bool, Int) -> (float | None)
-    def commit_metric(useCiNamespace, currentCommit):
-        global _commit_metric_cache
-
-        # Get test environment.
-        effective_test_env = ci_test_env if useCiNamespace else test_env
-        if effective_test_env == None:
-            # This can happen when no best fit ci test is found.
-            return None
-
-        # Check for cached value.
-        cacheKeyA = (useCiNamespace, currentCommit)
-        cacheKeyB = (effective_test_env, name, metric, way)
-        if cacheKeyA in _commit_metric_cache:
-            return _commit_metric_cache[cacheKeyA].get(cacheKeyB)
-
-        # Cache miss.
-        # Calculate baselines from the current commit's git note.
-        # Note that the git note may contain data for other tests. All tests'
-        # baselines will be collected and cached for future use.
-        allCommitMetrics = get_perf_stats(
-                                currentCommit,
-                                namespace(useCiNamespace))
-
-        # Collect recorded values by cacheKeyB.
-        values_by_cache_key_b = {}
-        for perfStat in allCommitMetrics:
-            currentCacheKey = (perfStat.test_env, perfStat.test, \
-                               perfStat.metric, perfStat.way)
-            currentValues = values_by_cache_key_b.setdefault(currentCacheKey, [])
-            currentValues.append(float(perfStat.value))
-
-        # Calculate and baseline (average of values) by cacheKeyB.
-        baseline_by_cache_key_b = {}
-        for currentCacheKey, currentValues in values_by_cache_key_b.items():
-            baseline_by_cache_key_b[currentCacheKey] = \
-                    sum(currentValues) / len(currentValues)
-
-        # Save baselines to the cache.
-        _commit_metric_cache[cacheKeyA] = baseline_by_cache_key_b
-        return baseline_by_cache_key_b.get(cacheKeyB)
-
-    # Searches through previous commits trying local then ci for each commit in.
-    def search(useCiNamespace, depth):
-        # Stop if reached the max search depth, or if
-        # there is an expected change at the child commit (depth-1). This is a
-        # subtlety: Metrics recorded on commit x incorporate the expected
-        # changes for commit x. Hence metrics from x are still a valid baseline,
-        # while older commits are not. This is why we check for expected changes
-        # on depth-1 rather than depth.
-        if depth >= BaselineSearchDepth or has_expected_change( \
-                        depth_to_commit(depth - 1)):
-            return None
-
-        # Check for a metric on this commit.
-        current_metric = commit_metric(useCiNamespace, depth_to_commit(depth))
-        if current_metric != None:
-            return current_metric
-
-        # Metric is not available.
-        # If tried local, now try CI. Else move to the parent commit.
-        if not useCiNamespace:
-            return search(True, depth)
-        else:
-            return search(False, depth + 1)
-
-    # Start search from parent commit using local name space.
-    return search(False, 1)
-
-
 # Check test stats. This prints the results for the user.
 # actual: the PerfStat with actual value.
 # expected_val: the expected value (this should generally be derived from get_perf_stats())
index 73297da..247a5cc 100644 (file)
@@ -379,37 +379,18 @@ else:
     new_metrics = [metric for (change, metric) in t.metrics if change == MetricChange.NewMetric]
     if any(new_metrics):
         if canGitStatus:
-            reason = 'a baseline (expected value) cannot be recovered from' + \
-                ' previous git commits. This may be due to HEAD having' + \
-                ' new tests or having expected changes, the presence of' + \
-                ' expected changes since the last run of the tests, and/or' + \
-                ' the latest test run being too old.'
-            fix = 'If the tests exist on the previous' + \
-                ' commit (And are configured to run with the same ways),' + \
-                ' then check out that commit and run the tests to generate' + \
-                ' the missing metrics. Alternatively, a baseline may be' + \
-                ' recovered from ci results once fetched (where origin' + \
-                ' is the official ghc git repo):\n\n' + \
-                spacing + 'git fetch ' + \
-                  'https://gitlab.haskell.org/ghc/ghc-performance-notes.git' + \
-                  ' refs/notes/perf:refs/notes/' + Perf.CiNamespace
+            reason = 'the previous git commit doesn\'t have recorded metrics for the following tests.' + \
+                  ' If the tests exist on the previous commit, then check it out and run the tests to generate the missing metrics.'
         else:
-            reason = "this is not a git repo so the previous git commit's" + \
-                     " metrics cannot be loaded from git notes:"
-            fix = ""
+            reason = 'this is not a git repo so the previous git commit\'s metrics cannot be loaded from git notes:'
         print()
-        print(str_warn('Missing Baseline Metrics') + \
-                ' these metrics trivially pass because ' + reason)
-        print(spacing + (' ').join(set([metric.test for metric in new_metrics])))
-        if fix != "":
-            print()
-            print(fix)
+        print(str_warn('New Metrics') + ' these metrics trivially pass because ' + reason)
+        print(spacing + ('\n' + spacing).join(set([metric.test for metric in new_metrics])))
 
     # Inform of how to accept metric changes.
     if (len(t.unexpected_stat_failures) > 0):
         print()
-        print(str_info("Some stats have changed") + " If this is expected, " + \
-            "allow changes by appending the git commit message with this:")
+        print(str_info("Some stats have changed") + " If this is expected, allow changes by appending the git commit message with this:")
         print('-' * 25)
         print(Perf.allow_changes_string(t.metrics))
         print('-' * 25)
@@ -425,9 +406,8 @@ else:
     elif canGitStatus and any(stats):
         if is_worktree_dirty():
             print()
-            print(str_warn('Performance Metrics NOT Saved') + \
-                ' working tree is dirty. Commit changes or use ' + \
-                '--metrics-file to save metrics to a file.')
+            print(str_warn('Working Tree is Dirty') + ' performance metrics will not be saved.' + \
+                                    ' Commit changes or use --metrics-file to save metrics to a file.')
         else:
             Perf.append_perf_stat(stats)
 
index 423925e..0e0240d 100644 (file)
@@ -235,17 +235,11 @@ class TestOptions:
        # extra files to copy to the testdir
        self.extra_files = []
 
-       # Map from metric to (fuction from way to baseline value, allowed percentage deviation) e.g.
-       #     { 'bytes allocated': (
-       #              lambda way: if way1: return None ... elif way2:return 9300000000 ...,
-       #              10) }
-       # This means no baseline is available for way1. For way 2, allow a 10%
-       # deviation from 9300000000.
+       # Map from metric to expectected value and allowed percentage deviation. e.g.
+       #     { 'bytes allocated': (9300000000, 10) }
+       # To allow a 10% deviation from 9300000000 for the 'bytes allocated' metric.
        self.stats_range_fields = {}
 
-       # Is the test testing performance?
-       self.is_stats_test = False
-
        # Does this test the compiler's performance as opposed to the generated code.
        self.is_compiler_stats_test = False
 
index b637b19..4a87f0a 100644 (file)
@@ -65,7 +65,7 @@ def isCompilerStatsTest():
 
 def isStatsTest():
     opts = getTestOpts()
-    return opts.is_stats_test
+    return bool(opts.stats_range_fields)
 
 
 # This can be called at the top of a file of tests, to set default test options
@@ -348,18 +348,29 @@ def testing_metrics():
 # measures the performance numbers of the compiler.
 # As this is a fairly rare case in the testsuite, it defaults to false to
 # indicate that it is a 'normal' performance test.
-def _collect_stats(name, opts, metrics, deviation, is_compiler_stats_test=False):
+def _collect_stats(name, opts, metric, deviation, is_compiler_stats_test=False):
     if not re.match('^[0-9]*[a-zA-Z][a-zA-Z0-9._-]*$', name):
         failBecause('This test has an invalid name.')
 
-    # Normalize metrics to a list of strings.
-    if isinstance(metrics, str):
-        if metrics == 'all':
-            metrics = testing_metrics()
-        else:
-            metrics = [metrics]
+    tests = Perf.get_perf_stats('HEAD^')
+
+    # Might have multiple metrics being measured for a single test.
+    test = [t for t in tests if t.test == name]
+
+    if tests == [] or test == []:
+        # There are no prior metrics for this test.
+        if isinstance(metric, str):
+            if metric == 'all':
+                for field in testing_metrics():
+                    opts.stats_range_fields[field] = None
+            else:
+                opts.stats_range_fields[metric] = None
+        if isinstance(metric, list):
+            for field in metric:
+                opts.stats_range_fields[field] = None
+
+        return
 
-    opts.is_stats_test = True
     if is_compiler_stats_test:
         opts.is_compiler_stats_test = True
 
@@ -368,11 +379,24 @@ def _collect_stats(name, opts, metrics, deviation, is_compiler_stats_test=False)
     if config.compiler_debugged and is_compiler_stats_test:
         opts.skip = 1
 
-    for metric in metrics:
-        baselineByWay = lambda way, target_commit: Perf.baseline_metric( \
-                              target_commit, name, config.test_env, metric, way)
+    # get the average value of the given metric from test
+    def get_avg_val(metric_2):
+        metric_2_metrics = [float(t.value) for t in test if t.metric == metric_2]
+        return sum(metric_2_metrics) / len(metric_2_metrics)
+
+    # 'all' is a shorthand to test for bytes allocated, peak megabytes allocated, and max bytes used.
+    if isinstance(metric, str):
+        if metric == 'all':
+            for field in testing_metrics():
+                opts.stats_range_fields[field] = (get_avg_val(field), deviation)
+                return
+        else:
+            opts.stats_range_fields[metric] = (get_avg_val(metric), deviation)
+            return
 
-        opts.stats_range_fields[metric] = (baselineByWay, deviation)
+    if isinstance(metric, list):
+        for field in metric:
+            opts.stats_range_fields[field] = (get_avg_val(field), deviation)
 
 # -----
 
@@ -872,7 +896,7 @@ def do_test(name, way, func, args, files):
                 framework_fail(name, way,
                     'extra_file does not exist: ' + extra_file)
 
-    if func.__name__ == 'run_command' or func.__name__ == 'makefile_test' or opts.pre_cmd:
+    if func.__name__ == 'run_command' or opts.pre_cmd:
         # When running 'MAKE' make sure 'TOP' still points to the
         # root of the testsuite.
         src_makefile = in_srcdir('Makefile')
@@ -978,13 +1002,6 @@ def badResult(result):
 def run_command( name, way, cmd ):
     return simple_run( name, '', override_options(cmd), '' )
 
-def makefile_test( name, way, target=None ):
-    if target is None:
-        target = name
-
-    cmd = '$MAKE -s --no-print-directory {target}'.format(target=target)
-    return run_command(name, way, cmd)
-
 # -----------------------------------------------------------------------------
 # GHCi tests
 
@@ -1140,11 +1157,10 @@ def metric_dict(name, way, metric, value):
 # name: name of the test.
 # way: the way.
 # stats_file: the path of the stats_file containing the stats for the test.
-# range_fields: see TestOptions.stats_range_fields
+# range_fields
 # Returns a pass/fail object. Passes if the stats are withing the expected value ranges.
 # This prints the results for the user.
 def check_stats(name, way, stats_file, range_fields):
-    head_commit = Perf.commit_hash('HEAD')
     result = passed()
     if range_fields:
         try:
@@ -1154,7 +1170,7 @@ def check_stats(name, way, stats_file, range_fields):
         stats_file_contents = f.read()
         f.close()
 
-        for (metric, baseline_and_dev) in range_fields.items():
+        for (metric, range_val_dev) in range_fields.items():
             field_match = re.search('\("' + metric + '", "([0-9]+)"\)', stats_file_contents)
             if field_match == None:
                 print('Failed to find metric: ', metric)
@@ -1167,15 +1183,14 @@ def check_stats(name, way, stats_file, range_fields):
                 change = None
 
                 # If this is the first time running the benchmark, then pass.
-                baseline = baseline_and_dev[0](way, head_commit)
-                if baseline == None:
+                if range_val_dev == None:
                     metric_result = passed()
                     change = MetricChange.NewMetric
                 else:
-                    tolerance_dev = baseline_and_dev[1]
+                    (expected_val, tolerance_dev) = range_val_dev
                     (change, metric_result) = Perf.check_stats_change(
                         perf_stat,
-                        baseline,
+                        expected_val,
                         tolerance_dev,
                         config.allowed_perf_changes,
                         config.verbose >= 4)
@@ -1308,13 +1323,8 @@ def simple_run(name, way, prog, extra_run_opts):
 
     my_rts_flags = rts_flags(way)
 
-    # Collect stats if necessary:
-    # isStatsTest and not isCompilerStatsTest():
-    #   assume we are running a ghc compiled program. Collect stats.
-    # isStatsTest and way == 'ghci':
-    #   assume we are running a program via ghci. Collect stats
     stats_file = name + '.stats'
-    if isStatsTest() and (not isCompilerStatsTest() or way == 'ghci'):
+    if isStatsTest() and not isCompilerStatsTest():
         stats_args = ' +RTS -V0 -t' + stats_file + ' --machine-readable -RTS'
     else:
         stats_args = ''
index cc4a4ee..6e0c268 100644 (file)
@@ -16,7 +16,7 @@ def strip_quotes(s):
     return s.strip('\'"')
 
 def str_fail(s):
-    return '\033[1m\033[31m' + s + '\033[0m'
+    return '\033[1m\033[43m\033[31m' + s + '\033[0m'
 
 def str_pass(s):
     return '\033[1m\033[32m' + s + '\033[0m'
index 6975b8d..368959b 100644 (file)
@@ -6,9 +6,9 @@
 test('annth_make',
      [extra_files(['AnnHelper.hs', 'TestModule.hs', 'TestModuleTH.hs', 'annth.hs']),
       req_interp, omit_ways(prof_ways), unless(have_dynamic(), skip)],
-     makefile_test, ['annth_make'])
+     run_command, ['$MAKE -s --no-print-directory annth_make'])
 
 test('annth_compunits',
      [extra_files(['AnnHelper.hs', 'TestModule.hs', 'TestModuleTH.hs', 'annth.hs']),
       req_interp, omit_ways(prof_ways), unless(have_dynamic(), skip)],
-     makefile_test, ['annth_compunits'])
+     run_command, ['$MAKE -s --no-print-directory annth_compunits'])
index c8d217e..709943c 100644 (file)
@@ -1 +1 @@
-test('T12485', [extra_files(['a.pkg', 'b.pkg', 'Main.hs'])], makefile_test, [])
+test('T12485', [extra_files(['a.pkg', 'b.pkg', 'Main.hs'])], run_command, ['$MAKE -s --no-print-directory T12485'])
index 3f07527..5f1b308 100644 (file)
@@ -4,14 +4,16 @@ def normaliseDynlibNames(str):
 def ignore_warnings(str):
     return re.sub(r'Warning:.*\n', '', str)
 
-test('ghcpkg01', [extra_files(['test.pkg', 'test2.pkg', 'test3.pkg'])], makefile_test, [])
+test('ghcpkg01', [extra_files(['test.pkg', 'test2.pkg', 'test3.pkg'])], run_command, ['$MAKE -s --no-print-directory ghcpkg01'])
 
 # Use ignore_stderr to prevent (when HADDOCK_DOCS=NO):
 #  warning: haddock-interfaces .. doesn't exist or isn't a file
-test('ghcpkg02', [ignore_stderr], makefile_test, [])
+test('ghcpkg02', [ignore_stderr], run_command,
+     ['$MAKE -s --no-print-directory ghcpkg02'])
 
 test('ghcpkg03', [extra_files(['test.pkg', 'test2.pkg', 'test4.pkg']),
-                  normalise_errmsg_fun(normaliseDynlibNames)], makefile_test, [])
+                  normalise_errmsg_fun(normaliseDynlibNames)], run_command,
+     ['$MAKE -s --no-print-directory ghcpkg03'])
 
 def normalise_package_order(s):
     # Package order is not deterministic?
@@ -20,7 +22,8 @@ def normalise_package_order(s):
                   s)
 
 test('ghcpkg04', [extra_files(['test.pkg', 'test5.pkg']),
-                  normalise_errmsg_fun(normalise_package_order)], makefile_test, [])
+                  normalise_errmsg_fun(normalise_package_order)], run_command,
+     ['$MAKE -s --no-print-directory ghcpkg04'])
 
 # Sometimes we get spurious warnings from ghc-pkg about missing
 # haddock-interfaces; this filters them out.
@@ -30,27 +33,27 @@ def normalise_haddock_junk( str ):
 test('ghcpkg05',
      [extra_files(['test2.pkg', 'test3.pkg']),
       normalise_errmsg_fun(normalise_haddock_junk, normaliseDynlibNames, ignore_warnings)],
-     makefile_test, [])
-test('ghcpkg06', [extra_files(['test.pkg', 'testdup.pkg'])], makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory ghcpkg05'])
+test('ghcpkg06', [extra_files(['test.pkg', 'testdup.pkg'])], run_command, ['$MAKE -s --no-print-directory ghcpkg06'])
 
-test('ghcpkg07', [extra_files(['test.pkg', 'test7a.pkg', 'test7b.pkg'])], makefile_test, [])
+test('ghcpkg07', [extra_files(['test.pkg', 'test7a.pkg', 'test7b.pkg'])], run_command, ['$MAKE -s --no-print-directory ghcpkg07'])
 
 # Test that we *can* compile a module that also belongs to a package
 # (this was disallowed in GHC 6.4 and earlier)
 test('pkg01', normal, compile, [''])
 
-test('T1750', [], makefile_test, [])
+test('T1750', [], run_command, ['$MAKE -s --no-print-directory T1750'])
 
-test('T5442a', [extra_files(['test.pkg'])], makefile_test, [])
+test('T5442a', [extra_files(['test.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442a'])
 
-test('T5442b', [extra_files(['test.pkg'])], makefile_test, [])
+test('T5442b', [extra_files(['test.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442b'])
 
-test('T5442c', [extra_files(['test.pkg'])], makefile_test, [])
+test('T5442c', [extra_files(['test.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442c'])
 
-test('T5442d', [extra_files(['shadow1.pkg', 'shadow2.pkg', 'shadow4.pkg'])], makefile_test, [])
+test('T5442d', [extra_files(['shadow1.pkg', 'shadow2.pkg', 'shadow4.pkg'])], run_command, ['$MAKE -s --no-print-directory T5442d'])
 
-test('shadow', [], makefile_test, [])
+test('shadow', [], run_command, ['$MAKE -s --no-print-directory shadow'])
 
-test('T12485a', [extra_files(['shadow1.pkg', 'shadow2.pkg', 'shadow3.pkg'])], makefile_test, [])
+test('T12485a', [extra_files(['shadow1.pkg', 'shadow2.pkg', 'shadow3.pkg'])], run_command, ['$MAKE -s --no-print-directory T12485a'])
 
-test('T13703', [extra_files(['test13703a.pkg', 'test13703b.pkg'])], makefile_test, [])
+test('T13703', [extra_files(['test13703a.pkg', 'test13703b.pkg'])], run_command, ['$MAKE -s --no-print-directory T13703'])
index 24572a2..b2c0f5f 100644 (file)
@@ -1,3 +1,3 @@
 # Verify that we optimize away conditional branches which always jump
 # to the same target.
-test('T15188', normal, makefile_test, [])
+test('T15188', normal, run_command, ['$MAKE -s --no-print-directory T15188'])
index 45924ef..7217d93 100644 (file)
@@ -12,7 +12,7 @@ test('T2388', normal, compile, [''])
 test('T3132', normal, compile, ['-dcmm-lint'])
 test('T3286', [], multimod_compile, ['T3286', '-v0'])
 test('T3579', normal, compile, [''])
-test('T2578', normal, makefile_test, [])
+test('T2578', normal, run_command, ['$MAKE -s --no-print-directory T2578'])
 # skip llvm on i386 as we don't support fPIC
 test('jmp_tbl', when(arch('i386'), omit_ways(llvm_ways)), compile, ['-fPIC -O'])
 test('massive_array',
@@ -27,7 +27,7 @@ test('T9329', [when(unregisterised(), expect_broken(15467)), cmm_src], compile,
 
 test('debug',
      [when((arch('powerpc64') or arch('powerpc64le')), expect_broken(11261))],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory debug'])
 test('T9964', normal, compile, ['-O'])
 test('T10518', [cmm_src], compile, [''])
 test('T10667', [ when((arch('powerpc64') or arch('powerpc64le')),
@@ -40,15 +40,15 @@ test('T14999',
       when(unregisterised(), skip),
       unless(opsys('linux') and arch('x86_64') and have_gdb() and
         have_readelf(), skip)],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T14999'])
 
 # Verify that we optimize away redundant jumps for unordered comparisons.
 test('T15196',
   [ unless(arch('x86_64'),skip),
     only_ways('normal'),
-  ], makefile_test, [])
+  ], run_command, ['$MAKE -s --no-print-directory T15196'])
 
 test('T15723',
   [ unless(have_profiling(), skip),
     unless(have_dynamic(), skip),
-  ], makefile_test, [])
+  ], run_command, ['$MAKE -s --no-print-directory T15723'])
index 08910f0..6b28478 100644 (file)
@@ -1,3 +1,4 @@
 test('T15038',
      [reqlib('containers'), reqlib('ghc-prim'), reqlib('primitive')],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T15038'])
index 6186df0..9951047 100644 (file)
@@ -77,12 +77,13 @@ test('T4439', normal, compile, [''])
 test('T4488', normal, compile, [''])
 test('T4870', [only_ways(['optasm'])], multimod_compile, ['T4870', '-v0'])
 test('T5117', normal, compile, [''])
-test('T5252', [], makefile_test, [])
+test('T5252', [], run_command, ['$MAKE -s --no-print-directory T5252'])
 test('T5455', normal, compile, [''])
 test('T5001', [only_ways(['optasm'])], multimod_compile, ['T5001', '-v0'])
 
 # T5252Take2 failed when compiled *wihtout* optimisation
-test('T5252Take2', [], makefile_test, [])
+test('T5252Take2', [], run_command,
+     ['$MAKE -s --no-print-directory T5252Take2'])
 test('T2431', normal, compile, ['-ddump-simpl -dsuppress-uniques'])
 test('T7669', normal, compile, [''])
 test('T8470', normal, compile, [''])
@@ -105,4 +106,4 @@ test('T14546c', normal, compile, ['-Wincomplete-patterns'])
 test('T14547', normal, compile, ['-Wincomplete-patterns'])
 test('T14773a', normal, compile, ['-Wincomplete-patterns'])
 test('T14773b', normal, compile, ['-Wincomplete-patterns'])
-test('T14815', [], makefile_test, ['T14815'])
+test('T14815', [], run_command, ['$MAKE -s --no-print-directory T14815'])
index 31a853b..632ef40 100644 (file)
@@ -41,7 +41,8 @@ test('T12742', normal, compile, [''])
 #       (2) Build the program twice: once with -dynamic, and then
 #           with -prof using -osuf to set a different object file suffix.
 test('T13910', omit_ways(['profasm']), compile, [''])
-test('T13938', [extra_files(['T13938a.hs'])], makefile_test, ['T13938'])
+test('T13938', [extra_files(['T13938a.hs'])], run_command,
+     ['$MAKE -s --no-print-directory T13938'])
 test('T14556', normal, compile, [''])
 test('T14720', normal, compile, [''])
 test('T14066a', normal, compile, [''])
index 656cc0d..ef6259d 100644 (file)
@@ -40,7 +40,7 @@ test('deriving-via-compile', normal, compile, [''])
 test('deriving-via-standalone', normal, compile, [''])
 test('T6031', [], multimod_compile, ['T6031', '-v0 -O'])
 # Adding -O on T6031 to expose Trac #11245 regardless of way
-test('T1133', [], makefile_test, [])
+test('T1133', [], run_command, ['$MAKE --no-print-directory -s T1133'])
 test('T7704', normal, compile, [''])
 test('T7710', normal, compile, [''])
 
@@ -65,7 +65,8 @@ test('T7947', [], multimod_compile, ['T7947', '-v0'])
 test('T10561', normal, compile, [''])
 test('T10487', [], multimod_compile, ['T10487', '-v0'])
 test('T10524', normal, compile, [''])
-test('T11148', normal, makefile_test, [])
+test('T11148', normal, run_command,
+     ['$MAKE -s --no-print-directory T11148'])
 test('T9968', normal, compile, [''])
 test('T9968a', normal, compile, [''])
 test('T11174', normal, compile, [''])
index 1f67480..0cc85ea 100644 (file)
@@ -12,7 +12,8 @@ test('drvfail011', normal, compile_fail, [''])
 test('drvfail012', normal, compile_fail, [''])
 test('drvfail013', normal, compile_fail, [''])
 test('drvfail015', normal, compile_fail, [''])
-test('drvfail016', [], makefile_test, [])
+test('drvfail016', [], run_command,
+     ['$MAKE --no-print-directory -s drvfail016'])
 test('T1830_1', normal, compile_fail, [''])
 test('T2394', normal, compile_fail, [''])
 # T2604 was removed as it was out of date re: fixing #9858
@@ -32,7 +33,7 @@ test('T5287', normal, compile_fail, [''])
 test('T5478', normal, compile_fail, [''])
 test('T5686', normal, compile_fail, [''])
 test('T5922', normal, compile_fail, [''])
-test('T1133A', [], makefile_test, [])
+test('T1133A', [], run_command, ['$MAKE --no-print-directory -s T1133A'])
 # 5863a was removed as it was out of date re: fixing #9858
 test('T7959', normal, compile_fail, [''])
 
index 415917c..465d57c 100644 (file)
@@ -1 +1 @@
-test('T13807', [extra_files(['A.hs'])], makefile_test, ['T13807'])
+test('T13807', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory T13807'])
index 02870df..1642c2f 100644 (file)
@@ -1 +1 @@
-test('determ002', [extra_files(['A.hs'])], makefile_test, ['determ002'])
+test('determ002', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ002'])
index 07e6964..b4bc18c 100644 (file)
@@ -1 +1 @@
-test('determ003', [extra_files(['A.hs'])], makefile_test, ['determ003'])
+test('determ003', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ003'])
index 2a5e189..c39aa8b 100644 (file)
@@ -1 +1 @@
-test('determ005', [extra_files(['A.hs'])], makefile_test, ['determ005'])
+test('determ005', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ005'])
index 71c7bbb..a0e547b 100644 (file)
@@ -1 +1 @@
-test('determ006', [extra_files(['spec-inline-determ.hs'])], makefile_test, ['determ006'])
+test('determ006', [extra_files(['spec-inline-determ.hs'])], run_command, ['$MAKE -s --no-print-directory determ006'])
index 0330980..d9f1f5b 100644 (file)
@@ -1 +1 @@
-test('determ007', [extra_files(['A.hs'])], makefile_test, ['determ007'])
+test('determ007', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ007'])
index 8fb078d..da539a0 100644 (file)
@@ -1 +1 @@
-test('determ008', [extra_files(['A.hs'])], makefile_test, ['determ008'])
+test('determ008', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ008'])
index c239ddb..7b2e4cc 100644 (file)
@@ -1 +1 @@
-test('determ009', [extra_files(['A.hs'])], makefile_test, ['determ009'])
+test('determ009', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ009'])
index 3585ad1..10c89af 100644 (file)
@@ -1 +1 @@
-test('determ010', [extra_files(['A.hs'])], makefile_test, ['determ010'])
+test('determ010', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ010'])
index d608caf..fedb3a0 100644 (file)
@@ -1 +1 @@
-test('determ011', [extra_files(['A.hs'])], makefile_test, ['determ011'])
+test('determ011', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ011'])
index 9d806e1..17f557c 100644 (file)
@@ -1 +1 @@
-test('determ012', [extra_files(['A.hs'])], makefile_test, ['determ012'])
+test('determ012', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ012'])
index 149362d..21ea1f4 100644 (file)
@@ -1 +1 @@
-test('determ013', [extra_files(['A.hs'])], makefile_test, ['determ013'])
+test('determ013', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ013'])
index 50359fd..4e27332 100644 (file)
@@ -1 +1 @@
-test('determ014', [extra_files(['A.hs'])], makefile_test, ['determ014'])
+test('determ014', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ014'])
index 1a2a9b9..2b8ec7c 100644 (file)
@@ -1 +1 @@
-test('determ015', [extra_files(['A.hs'])], makefile_test, ['determ015'])
+test('determ015', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ015'])
index 6d4da67..bb3a2cf 100644 (file)
@@ -1 +1 @@
-test('determ016', [extra_files(['A.hs'])], makefile_test, ['determ016'])
+test('determ016', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ016'])
index 75f5470..a81692d 100644 (file)
@@ -1 +1 @@
-test('determ017', [extra_files(['A.hs'])], makefile_test, ['determ017'])
+test('determ017', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ017'])
index f75dcd6..9d67226 100644 (file)
@@ -1 +1 @@
-test('determ018', [extra_files(['A.hs'])], makefile_test, ['determ018'])
+test('determ018', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ018'])
index ae07e7b..fc44db0 100644 (file)
@@ -1 +1 @@
-test('determ019', [extra_files(['A.hs'])], makefile_test, ['determ019'])
+test('determ019', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ019'])
index afad358..331d1f1 100644 (file)
@@ -1,3 +1,4 @@
 test('determ021',
      [normalise_fun(normalise_errmsg), extra_files(['A.hs'])],
-     makefile_test, ['determ021'])
+     run_command,
+     ['$MAKE -s --no-print-directory determ021'])
index 868649e..3ecdf3c 100644 (file)
@@ -1 +1 @@
-test('determ022', [extra_files(['A.hs'])], makefile_test, ['determ022'])
+test('determ022', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory determ022'])
index 4e3fea7..1f2bd40 100644 (file)
@@ -1,3 +1,3 @@
 # Test for #13392, it makes sure 'ghc --show-options' does not print each flag more than once.
 
-test('T13392', normal, makefile_test, [])
+test('T13392', normal, run_command, ['$MAKE -s --no-print-directory T13392'])
index eb9d25b..64daacc 100644 (file)
@@ -1,3 +1,4 @@
 test('T13710',
      [extra_files(['A.hs', 'A.hs-boot', 'B.hs'])],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T13710'])
index 0edd81d..9414ce7 100644 (file)
@@ -1 +1 @@
-test('T1372', [extra_files(['p1/', 'p2/'])], makefile_test, ['T1372'])
+test('T1372', [extra_files(['p1/', 'p2/'])], run_command, ['$MAKE -s --no-print-directory T1372'])
index 25ed815..bfd720c 100644 (file)
@@ -1,3 +1,4 @@
 test('T13803',
      [extra_files(['D.hs', 'E.hs-boot', 'E.hs', 'Y.hs', 'Y.hs-boot'])],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T13803'])
index 7b11a62..2e6a952 100644 (file)
@@ -1,3 +1,4 @@
 test('T13914',
      [extra_files(['main.hs'])],
-     makefile_test, ['t13914'])
+     run_command,
+     ['$MAKE -s --no-print-directory t13914'])
index 9cc75e2..4f6371a 100644 (file)
@@ -2,4 +2,5 @@ test('T14075',
      [ extra_files(['F.hs', 'F.hs-boot', 'O.hs', 'V.hs', 'V.hs-boot'])
      , req_smp, # uses ghc --make -j2
      ],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T14075'])
index 5426004..5c496f0 100644 (file)
@@ -1,2 +1,2 @@
 test('T15970', [extra_files(['A1.hs', 'A2.hs', 'B.hs', 'C.hs'])],
-               makefile_test, [])
+               run_command, ['$MAKE -s --no-print-directory T15970'])
index 77cfd75..e8eb375 100644 (file)
@@ -1 +1 @@
-test('T1959', [extra_files(['B.hs', 'C.hs', 'D.hs', 'E1.hs', 'E2.hs'])], makefile_test, ['dotest'])
+test('T1959', [extra_files(['B.hs', 'C.hs', 'D.hs', 'E1.hs', 'E2.hs'])], run_command, ['$MAKE -s --no-print-directory dotest'])
index 2a360f9..803357b 100644 (file)
@@ -1,3 +1,4 @@
 test('T3007',
      extra_files(['A/', 'B/']),
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T3007'])
index 538699b..a679ce2 100644 (file)
@@ -1,3 +1,3 @@
 # Test for #437, a recompilation bug with '-main-is'
 
-test('T437', [extra_files(['Test.hs', 'Test2.hs'])], makefile_test, [])
+test('T437', [extra_files(['Test.hs', 'Test2.hs'])], run_command, ['$MAKE -s --no-print-directory T437'])
index a77c5da..a83a005 100644 (file)
@@ -1 +1 @@
-test('T5147', [extra_files(['A.hs', 'B1.hs', 'B2.hs'])], makefile_test, [])
+test('T5147', [extra_files(['A.hs', 'B1.hs', 'B2.hs'])], run_command, ['$MAKE -s --no-print-directory T5147'])
index 842d065..d7926af 100644 (file)
@@ -1,3 +1,3 @@
 test('T7373', [extra_files(['D.hs', 'pkg/']),
-               expect_broken(7373)],
-     makefile_test, [])
+               expect_broken(7373)], run_command,
+     ['$MAKE -s --no-print-directory T7373'])
index aa5ba23..a5a09e6 100644 (file)
@@ -1,2 +1,2 @@
 
-test('T7835', [extra_files(['Test.hs', 'TestPrim.hs', 'test-prims.cmm'])], makefile_test, [])
+test('T7835', [extra_files(['Test.hs', 'TestPrim.hs', 'test-prims.cmm'])], run_command, ['$MAKE -s --no-print-directory T7835'])
index 08008c1..e2cc32a 100644 (file)
@@ -1 +1,2 @@
-test('T8184', extra_files(['A.hs', 'B.hs', 'B.hs-boot', 'C.hs']), makefile_test, [])
+test('T8184', extra_files(['A.hs', 'B.hs', 'B.hs-boot', 'C.hs']), run_command,
+     ['$MAKE -s --no-print-directory T8184'])
index bf09556..caa0c31 100644 (file)
@@ -1,3 +1,3 @@
 test('T9562', [extra_files(['A.hs', 'B.hs', 'B.hs-boot', 'C.hs', 'D.hs', 'Main.hs']),
-               expect_broken(9562)],
-     makefile_test, [])
+               expect_broken(9562)], run_command,
+     ['$MAKE -s --no-print-directory T9562'])
index 64b9aeb..02eeeb3 100644 (file)
-test('driver011', [extra_files(['A011.hs'])], makefile_test, ['test011'])
+test('driver011', [extra_files(['A011.hs'])], run_command, ['$MAKE -s --no-print-directory test011'])
 
-test('driver012', [extra_files(['A012.hs'])], makefile_test, ['test012'])
+test('driver012', [extra_files(['A012.hs'])], run_command, ['$MAKE -s --no-print-directory test012'])
 
-test('driver013', [extra_files(['A013.hs'])], makefile_test, ['test013'])
+test('driver013', [extra_files(['A013.hs'])], run_command, ['$MAKE -s --no-print-directory test013'])
 
-test('driver014', [extra_files(['A014.hs'])], makefile_test, ['test014'])
+test('driver014', [extra_files(['A014.hs'])], run_command, ['$MAKE -s --no-print-directory test014'])
 
-test('driver015', [extra_files(['A015.hs'])], makefile_test, ['test015'])
+test('driver015', [extra_files(['A015.hs'])], run_command, ['$MAKE -s --no-print-directory test015'])
 
-test('driver016', [extra_files(['F016.hs'])], makefile_test, ['test016'])
+test('driver016', [extra_files(['F016.hs'])], run_command, ['$MAKE -s --no-print-directory test016'])
 
-test('driver017', [extra_files(['F017.hs'])], makefile_test, ['test017'])
+test('driver017', [extra_files(['F017.hs'])], run_command, ['$MAKE -s --no-print-directory test017'])
 
-test('driver018', [extra_files(['F018.hs'])], makefile_test, ['test018'])
+test('driver018', [extra_files(['F018.hs'])], run_command, ['$MAKE -s --no-print-directory test018'])
 
-test('driver018a', [extra_files(['F018a.hs'])], makefile_test, ['test018a'])
+test('driver018a', [extra_files(['F018a.hs'])], run_command, ['$MAKE -s --no-print-directory test018a'])
 
-test('driver019', [extra_files(['F019.hs'])], makefile_test, ['test019'])
+test('driver019', [extra_files(['F019.hs'])], run_command, ['$MAKE -s --no-print-directory test019'])
 
-test('driver021', [extra_files(['B021/'])], makefile_test, ['test021'])
+test('driver021', [extra_files(['B021/'])], run_command, ['$MAKE -s --no-print-directory test021'])
 
-test('driver022', [extra_files(['B022/'])], makefile_test, ['test022'])
+test('driver022', [extra_files(['B022/'])], run_command, ['$MAKE -s --no-print-directory test022'])
 
-test('driver023', [extra_files(['B023/'])], makefile_test, ['test023'])
+test('driver023', [extra_files(['B023/'])], run_command, ['$MAKE -s --no-print-directory test023'])
 
-test('driver024', [extra_files(['B024/'])], makefile_test, ['test024'])
+test('driver024', [extra_files(['B024/'])], run_command, ['$MAKE -s --no-print-directory test024'])
 
-test('driver024a', [], makefile_test, ['test024a'])
+test('driver024a', [], run_command, ['$MAKE -s --no-print-directory test024a'])
 
-test('driver025', [extra_files(['B025/'])], makefile_test, ['test025'])
+test('driver025', [extra_files(['B025/'])], run_command, ['$MAKE -s --no-print-directory test025'])
 
-test('driver026', [extra_files(['d026/'])], makefile_test, ['test026'])
+test('driver026', [extra_files(['d026/'])], run_command, ['$MAKE -s --no-print-directory test026'])
 
-test('driver027', [extra_files(['B027/'])], makefile_test, ['test027'])
+test('driver027', [extra_files(['B027/'])], run_command, ['$MAKE -s --no-print-directory test027'])
 
-test('driver028', [extra_files(['B028/'])], makefile_test, ['test028'])
+test('driver028', [extra_files(['B028/'])], run_command, ['$MAKE -s --no-print-directory test028'])
 
-test('driver031', [extra_files(['A031.hs'])], makefile_test, ['test031'])
+test('driver031', [extra_files(['A031.hs'])], run_command, ['$MAKE -s --no-print-directory test031'])
 
-test('driver032', [extra_files(['A032.hs'])], makefile_test, ['test032'])
+test('driver032', [extra_files(['A032.hs'])], run_command, ['$MAKE -s --no-print-directory test032'])
 
-test('driver033', [extra_files(['A033.hs'])], makefile_test, ['test033'])
+test('driver033', [extra_files(['A033.hs'])], run_command, ['$MAKE -s --no-print-directory test033'])
 
-test('driver034', [extra_files(['F034.hs'])], makefile_test, ['test034'])
+test('driver034', [extra_files(['F034.hs'])], run_command, ['$MAKE -s --no-print-directory test034'])
 
-test('driver035', [extra_files(['F035.hs'])], makefile_test, ['test035'])
+test('driver035', [extra_files(['F035.hs'])], run_command, ['$MAKE -s --no-print-directory test035'])
 
-test('driver041', [extra_files(['B041/'])], makefile_test, ['test041'])
+test('driver041', [extra_files(['B041/'])], run_command, ['$MAKE -s --no-print-directory test041'])
 
-test('driver042', [extra_files(['B042/'])], makefile_test, ['test042'])
+test('driver042', [extra_files(['B042/'])], run_command, ['$MAKE -s --no-print-directory test042'])
 
-test('driver042stub', [extra_files(['B042stub/'])], makefile_test, ['test042stub'])
+test('driver042stub', [extra_files(['B042stub/'])], run_command,
+     ['$MAKE -s --no-print-directory test042stub'])
 
-test('driver043', [extra_files(['B043/'])], makefile_test, ['test043'])
+test('driver043', [extra_files(['B043/'])], run_command, ['$MAKE -s --no-print-directory test043'])
 
-test('driver044', [extra_files(['B044/'])], makefile_test, ['test044'])
+test('driver044', [extra_files(['B044/'])], run_command, ['$MAKE -s --no-print-directory test044'])
 
-test('driver045', [extra_files(['B045/'])], makefile_test, ['test045'])
+test('driver045', [extra_files(['B045/'])], run_command, ['$MAKE -s --no-print-directory test045'])
 
-test('driver051', [extra_files(['d051_1/', 'd051_2/'])], makefile_test, ['test051'])
+test('driver051', [extra_files(['d051_1/', 'd051_2/'])], run_command, ['$MAKE -s --no-print-directory test051'])
 
-test('driver052', [extra_files(['d052_1/', 'd052_2/'])], makefile_test, ['test052'])
+test('driver052', [extra_files(['d052_1/', 'd052_2/'])], run_command, ['$MAKE -s --no-print-directory test052'])
 
-test('driver053', [extra_files(['d053_1/', 'd053_2/'])], makefile_test, ['test053'])
+test('driver053', [extra_files(['d053_1/', 'd053_2/'])], run_command, ['$MAKE -s --no-print-directory test053'])
 
-test('driver061a', [extra_files(['A061a.hs'])], makefile_test, ['test061a'])
+test('driver061a', [extra_files(['A061a.hs'])], run_command, ['$MAKE -s --no-print-directory test061a'])
 
-test('driver061b', [extra_files(['A061b.hs'])], makefile_test, ['test061b'])
+test('driver061b', [extra_files(['A061b.hs'])], run_command, ['$MAKE -s --no-print-directory test061b'])
 
 
-test('driver062a', [], makefile_test, ['test062a'])
-test('driver062b', [], makefile_test, ['test062b'])
-test('driver062c', [], makefile_test, ['test062c'])
-test('driver062d', [], makefile_test, ['test062d'])
-test('driver062e', [], makefile_test, ['test062e'])
+test('driver062a', [], run_command, ['$MAKE -s --no-print-directory test062a'])
+test('driver062b', [], run_command, ['$MAKE -s --no-print-directory test062b'])
+test('driver062c', [], run_command, ['$MAKE -s --no-print-directory test062c'])
+test('driver062d', [], run_command, ['$MAKE -s --no-print-directory test062d'])
+test('driver062e', [], run_command, ['$MAKE -s --no-print-directory test062e'])
 
-test('driver063', [extra_files(['D063.hs'])], makefile_test, ['test063'])
+test('driver063', [extra_files(['D063.hs'])], run_command, ['$MAKE -s --no-print-directory test063'])
 
-test('driver064', [extra_files(['A064.hs'])], makefile_test, ['test064'])
+test('driver064', [extra_files(['A064.hs'])], run_command, ['$MAKE -s --no-print-directory test064'])
 
-test('driver065', [extra_files(['A065.hs'])], makefile_test, ['test065'])
+test('driver065', [extra_files(['A065.hs'])], run_command, ['$MAKE -s --no-print-directory test065'])
 
-test('driver066', [extra_files(['A066.hs'])], makefile_test, ['test066'])
+test('driver066', [extra_files(['A066.hs'])], run_command, ['$MAKE -s --no-print-directory test066'])
 
-test('driver067', [extra_files(['A067.hs'])], makefile_test, ['test067'])
+test('driver067', [extra_files(['A067.hs'])], run_command, ['$MAKE -s --no-print-directory test067'])
 
-test('driver070', [extra_files(['A070.hs'])], makefile_test, ['test070'])
+test('driver070', [extra_files(['A070.hs'])], run_command, ['$MAKE -s --no-print-directory test070'])
 
-test('driver071', [extra_files(['A071.hs'])], makefile_test, ['test071'])
+test('driver071', [extra_files(['A071.hs'])], run_command, ['$MAKE -s --no-print-directory test071'])
 
-test('driver081a', [], makefile_test, ['test081a'])
+test('driver081a', [], run_command, ['$MAKE -s --no-print-directory test081a'])
 
-test('driver081b', [], makefile_test, ['test081b'])
+test('driver081b', [], run_command, ['$MAKE -s --no-print-directory test081b'])
 
-test('driver100', [extra_files(['overlap/'])], makefile_test, ['test100'])
+test('driver100', [extra_files(['overlap/'])], run_command, ['$MAKE -s --no-print-directory test100'])
 
-test('driver200', [extra_files(['A200.hs', 'B200/', 'D200.hs'])], makefile_test, ['test200'])
+test('driver200', [extra_files(['A200.hs', 'B200/', 'D200.hs'])], run_command, ['$MAKE -s --no-print-directory test200'])
 
-test('T2566', normalise_fun(normalise_errmsg), makefile_test, [])
+test('T2566',
+     normalise_fun(normalise_errmsg),
+     run_command,
+     ['$MAKE -s --no-print-directory T2566'])
 
 test('pragma001', normal, compile, [''])
 test('pragma002', normal, compile, [''])
 
 test('T2499', normal, compile_fail, [''])
 
-test('mode001', normal, makefile_test, [])
+test('mode001', normal, run_command,
+     ['$MAKE -s --no-print-directory mode001'])
 
 if config.os == 'mingw32':
      only_windows = normal
@@ -112,8 +117,8 @@ else:
      only_windows = skip
 
 test('shared001', [extra_files(['Shared001.hs']),
-                   only_windows],
-     makefile_test, ['shared001'])
+                   only_windows], run_command,
+     ['$MAKE -s --no-print-directory shared001'])
 
 if config.os == 'darwin':
   only_darwin = normal
@@ -121,8 +126,8 @@ else:
   only_darwin = skip
 
 test('static001', [extra_files(['Static001.hs']),
-                   only_darwin, expect_broken(8127)],
-     makefile_test, ['static001'])
+                   only_darwin, expect_broken(8127)], run_command,
+     ['$MAKE -s --no-print-directory static001'])
 
 test('dynHelloWorld',
      only_ways(['dyn']),
@@ -136,14 +141,18 @@ test('T5313',
      ['-package ghc'])
 
 test('T2464', normal, compile, [''])
-test('T3674', [], makefile_test, [])
+test('T3674', [], run_command, ['$MAKE -s --no-print-directory T3674'])
 
-test('rtsopts001', [extra_files(['rtsOpts.hs'])], makefile_test, [])
-test('rtsopts002', normal, makefile_test, [])
+test('rtsopts001', [extra_files(['rtsOpts.hs'])], run_command,
+     ['$MAKE -s --no-print-directory rtsopts001'])
+test('rtsopts002', normal, run_command,
+                ['$MAKE -s --no-print-directory rtsopts002'])
 
-test('withRtsOpts', [], makefile_test, [])
+test('withRtsOpts', [], run_command,
+     ['$MAKE -s --no-print-directory withRtsOpts'])
 test('T3389', normal, compile_and_run, [''])
-test('T3364', normalise_fun(normalise_errmsg), makefile_test, [])
+test('T3364', normalise_fun(normalise_errmsg), run_command,
+     ['$MAKE -s --no-print-directory T3364'])
 
 # T4437: A test to ensure that Cabal's language extension list remains
 # consistent with those known by GHC.
@@ -153,7 +162,7 @@ test('T4437', only_ways(['normal']), compile_and_run, ['-package ghc'])
 
 test('werror', normal, compile_fail, [''])
 
-test('T706', [req_interp], makefile_test, [])
+test('T706', [req_interp], run_command, ['$MAKE -s --no-print-directory T706'])
 test('spacesInArgs',
      extra_run_opts('"a   b"   "c   d"'),
      compile_and_run,
@@ -167,27 +176,32 @@ test( 'T4114c', [fobject_code, expect_broken_for(4114, ['ghci'])], compile_and_r
 test( 'T4114d', [fobject_code, expect_broken_for(4114, ['ghci'])], compile_and_run,
      ['-hisuf .myhi -osuf .myo -no-keep-o-files'])
 
-test('T5584', [], makefile_test, [])
-test('T5198', [], makefile_test, [])
-test('T7060', [], makefile_test, [])
+test('T5584', [], run_command, ['$MAKE -s --no-print-directory T5584'])
+test('T5198', [], run_command, ['$MAKE -s --no-print-directory T5198'])
+test('T7060', [], run_command, ['$MAKE -s --no-print-directory T7060'])
 test('T7130', normal, compile_fail, ['-fflul-laziness'])
-test('T7563', when(unregisterised(), skip), makefile_test, [])
+test('T7563', when(unregisterised(), skip), run_command,
+     ['$MAKE -s --no-print-directory T7563'])
 test('T6037',
      # The testsuite doesn't know how to set a non-Unicode locale on Windows or Mac OS X
      [when(opsys('mingw32'), expect_fail), when(opsys('darwin'), expect_fail)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T6037'])
 test('T2507',
      # The testsuite doesn't know how to set a non-Unicode locale on Windows or Mac OS X
      [when(opsys('mingw32'), expect_fail), when(opsys('darwin'), expect_fail)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T2507'])
 test('T8959a',
      # The testsuite doesn't know how to set a non-Unicode locale on Windows or Mac OS X
      [when(opsys('mingw32'), expect_fail), when(opsys('darwin'), expect_fail)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T8959a'])
 
 # Requires readelf
-test('T703', unless(opsys('linux'), skip), makefile_test, [])
-test('T2182', normal, makefile_test, [])
+test('T703', unless(opsys('linux'), skip),
+     run_command, ['$MAKE -s --no-print-directory T703'])
+test('T2182', normal, run_command, ['$MAKE -s --no-print-directory T2182'])
 test('T8101', normal, compile, ['-Wall -fno-code'])
 test('T8101b', normal, multimod_compile,
      ['T8101b', '-Wall -fno-code'])
@@ -196,15 +210,17 @@ test('T10600', normal, compile_fail, ['-fno-code'])
 # Should not panic when compiling cmm file together with -outputdir.
 test('T9050', cmm_src, compile, ['-outputdir=.'])
 
-test('write_interface_oneshot', [extra_files(['A011.hs'])], makefile_test, [])
+test('write_interface_oneshot', [extra_files(['A011.hs'])], run_command,
+     ['$MAKE -s --no-print-directory write_interface_oneshot'])
 
-test('write_interface_make', [extra_files(['A011.hs'])], makefile_test, [])
+test('write_interface_make', [extra_files(['A011.hs'])], run_command,
+     ['$MAKE -s --no-print-directory write_interface_make'])
 
 test('T9776', normal, compile_fail, ['-drule-check'])
 
-test('T9938', [], makefile_test, [])
+test('T9938', [], run_command, ['$MAKE -s --no-print-directory T9938'])
 
-test('T9938B', [], makefile_test, [])
+test('T9938B', [], run_command, ['$MAKE -s --no-print-directory T9938B'])
 
 test('T9963', exit_code(1), run_command,
      ['{compiler} --interactive -ignore-dot-ghci --print-libdir'])
@@ -218,9 +234,9 @@ test('T10220', normal, run_command,
      # Preprocessed T10220.hspp imports T10220B. Should work in --make mode.
      ['{compiler} --make T10220.hspp -fno-code -v0'])
 
-test('T10182', [], makefile_test, [])
+test('T10182', [], run_command, ['$MAKE -s --no-print-directory T10182'])
 
-test('T10869', [], makefile_test, [])
+test('T10869', [], run_command, ['$MAKE -s --no-print-directory T10869'])
 
 test('T365',
      [pre_cmd('touch test_preprocessor.txt'), unless(opsys('mingw32'), skip)],
@@ -238,35 +254,36 @@ test('T11429b', normal, compile, ['-Wno-unrecognised-warning-flags -Wfoobar'])
 test('T11429c', normal, compile_fail, ['-Wunrecognised-warning-flags -Werror -Wfoobar'])
 test('T11763', normal, compile_and_run, ['-fno-version-macros'])
 
-test('T10320', [], makefile_test, [])
+test('T10320', [], run_command, ['$MAKE -s --no-print-directory T10320'])
 
 test('T12056a', normal, compile, ['-w -Wfoo -Wbar'])
 test('T12056b', normal, compile, ['-w -XOverlappingInstances -Wfoo -Wunrecognised-warning-flags -Wbar'])
 test('T12056c', normal, compile,
      ['-w -Wdeprecated-flags -XOverlappingInstances -Wfoo -Wunrecognised-warning-flags -Wbar'])
 
-test('T12135', [expect_broken(12135)], makefile_test, [])
+test('T12135', [expect_broken(12135)], run_command,
+     ['$MAKE -s --no-print-directory T12135'])
 
 test('T12192', normal, run_command, ['mkdir foo && (cd foo && {compiler} -v0 ../T12192)'])
 
-test('T10923', [], makefile_test, [])
+test('T10923', [], run_command, ['$MAKE -s --no-print-directory T10923'])
 
 test('T12625', normal, compile_fail, ['-I'])
 
 test('T12752pass', normal, compile, ['-DSHOULD_PASS=1 -Wcpp-undef'])
 
-test('T12955', normal, makefile_test, [])
+test('T12955', normal, run_command, ['$MAKE -s --no-print-directory T12955'])
 
-test('T12971', ignore_stdout, makefile_test, [])
+test('T12971', ignore_stdout, run_command, ['$MAKE -s --no-print-directory T12971'])
 test('json', normal, compile_fail, ['-ddump-json'])
 test('json2', normal, compile, ['-ddump-types -ddump-json'])
-test('T13604', [], makefile_test, [])
-test('T13604a', [], makefile_test, [])
+test('T13604', [], run_command, ['$MAKE -s --no-print-directory T13604'])
+test('T13604a', [], run_command, ['$MAKE -s --no-print-directory T13604a'])
 # omitting hpc and profasm because they affect the
 # inlining and unfoldings
 test('inline-check', omit_ways(['hpc', 'profasm'])
                    , compile
                   , ['-dinline-check foo -O -ddebug-output'])
 
-test('T14452', [], makefile_test, [])
+test('T14452', [], run_command, ['$MAKE -s --no-print-directory T14452'])
 test('T15396', normal, compile_and_run, ['-package ghc'])
index 745d316..4d25fed 100644 (file)
@@ -1 +1 @@
-test('bug1677', extra_files(['Bar.hs', 'Foo.hs']), makefile_test, [])
+test('bug1677', extra_files(['Bar.hs', 'Foo.hs']), run_command, ['$MAKE bug1677 -s --no-print-directory'])
index dfee6c0..0a6769a 100644 (file)
@@ -1,2 +1,3 @@
-test('conflicting_flags', normal, makefile_test, [])
+test('conflicting_flags', normal, run_command,
+     ['$MAKE -s --no-print-directory conflicting_flags'])
 
index 0c890ef..c190c6b 100644 (file)
@@ -1,5 +1,5 @@
 
 test('dynamicToo003',
      [extra_files(['A003.hs']),
-      unless(have_vanilla(), skip), unless(have_dynamic(), skip)],
-     makefile_test, [])
+      unless(have_vanilla(), skip), unless(have_dynamic(), skip)], run_command,
+     ['$MAKE -s --no-print-directory dynamicToo003'])
index 67b1566..0d3f81e 100644 (file)
@@ -3,4 +3,4 @@ test('dynamicToo001',
      [extra_files(['A.hs', 'B.hs', 'B1.hs', 'B2.hs', 'C.hs']),
       when(opsys('mingw32'), expect_broken(7665)), unless(have_vanilla(), skip),
       unless(have_dynamic(), skip)],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory dynamicToo001'])
index 64e7817..fe94f37 100644 (file)
@@ -1,5 +1,5 @@
 
 test('dynamicToo002',
      [extra_files(['A.hs', 'B.hs', 'C.hs']),
-      unless(have_vanilla(), skip), unless(have_dynamic(), skip)],
-     makefile_test, [])
+      unless(have_vanilla(), skip), unless(have_dynamic(), skip)], run_command,
+     ['$MAKE -s --no-print-directory dynamicToo002'])
index e551c95..72810ba 100644 (file)
@@ -4,5 +4,6 @@ test('dynamicToo004',
       expect_broken(7665),
       unless(have_vanilla(), skip),
       unless(have_dynamic(), skip)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory dynamicToo004'])
 
index 58eb6f7..f062a21 100644 (file)
@@ -1,5 +1,5 @@
 
 test('dynamicToo005',
      [extra_files(['dynamicToo005.bkp']),
-      unless(have_vanilla(), skip), unless(have_dynamic(), skip)],
-     makefile_test, [])
+      unless(have_vanilla(), skip), unless(have_dynamic(), skip)], run_command,
+     ['$MAKE -s --no-print-directory dynamicToo005'])
index 6be71bc..d019a66 100644 (file)
@@ -1,3 +1,3 @@
 test('dynamic_flags_001', [extra_files(['A.hs', 'B.hs', 'C.hs']),
-                           when(fast(), skip)],
-     makefile_test, [])
+                           when(fast(), skip)], run_command,
+     ['$MAKE -s --no-print-directory dynamic_flags_001'])
index ed5b9cc..adc1084 100644 (file)
@@ -3,4 +3,4 @@ test('linkwhole',
       when(arch('powerpc64') or arch('powerpc64le'), expect_broken(11259)),
       when(opsys('freebsd'), expect_broken(16035)),
       when(opsys('mingw32'), skip)],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory linkwhole'])
index b10b210..4c046da 100644 (file)
@@ -1,3 +1,3 @@
 test('recomp001', [extra_files(['A.hs', 'B1.hs', 'B2.hs', 'C.hs']),
-                   when(fast(), skip)],
-     makefile_test, [])
+                   when(fast(), skip)], run_command,
+     ['$MAKE -s --no-print-directory recomp001'])
index 7634bf0..d8a5ee7 100644 (file)
@@ -1,3 +1,3 @@
 test('recomp002', [extra_files(['Q.hs', 'W.hs', 'W.hs-boot']),
-                   when(fast(), skip)],
-     makefile_test, [])
+                   when(fast(), skip)], run_command,
+     ['$MAKE -s --no-print-directory recomp002'])
index 10d935f..0437626 100644 (file)
@@ -1,2 +1 @@
-test('recomp003', [extra_files(['A.hs'])],
-     makefile_test, [])
+test('recomp003', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory recomp003'])
index cfb8a20..945d8a1 100644 (file)
@@ -1,2 +1 @@
-test('recomp004', [extra_files(['Main.hs', 'c.h', 'c1.c', 'c2.c'])],
-     makefile_test, [])
+test('recomp004', [extra_files(['Main.hs', 'c.h', 'c1.c', 'c2.c'])], run_command, ['$MAKE -s --no-print-directory recomp004'])
index 34b3fa7..533b7d6 100644 (file)
@@ -1,4 +1,3 @@
-test('recomp005',
-     [extra_files(['A.hs', 'B.hs', 'C1.hs', 'C2.hs', 'D.hs', 'E.hs']),
-      when(fast(), skip)],
-     makefile_test, [])
+test('recomp005', [extra_files(['A.hs', 'B.hs', 'C1.hs', 'C2.hs', 'D.hs', 'E.hs']),
+                   when(fast(), skip)], run_command,
+     ['$MAKE -s --no-print-directory recomp005'])
index 6c58408..c7252ef 100644 (file)
@@ -1,3 +1,3 @@
 test('recomp006', [extra_files(['A.hs', 'B1.hs', 'B2.hs']),
-                   when(fast(), skip)],
-     makefile_test, [])
+                   when(fast(), skip)], run_command,
+     ['$MAKE -s --no-print-directory recomp006'])
index 34061ad..d4283dd 100644 (file)
@@ -3,5 +3,5 @@
 #   "Fix a recompilation checking bug when a package dependency changes"
 
 test('recomp007', [extra_files(['Setup.hs', 'a1/', 'a2/', 'b/']),
-                   when(fast(), skip), normalise_slashes],
-     makefile_test, [])
+                   when(fast(), skip), normalise_slashes], run_command,
+     ['$MAKE -s --no-print-directory recomp007'])
index 07bfd14..42f52cd 100644 (file)
@@ -1,6 +1,5 @@
 # Test for #4469, a recompilation bug related to instances
 
-test('recomp008',
-     [extra_files(['A1.hs', 'A2.hs', 'B.hs', 'Main.hs']),
-      when(fast(), skip), normalise_slashes],
-     makefile_test, [])
+test('recomp008', [extra_files(['A1.hs', 'A2.hs', 'B.hs', 'Main.hs']),
+                   when(fast(), skip), normalise_slashes], run_command,
+     ['$MAKE -s --no-print-directory recomp008'])
index 5e20e09..2b5d2af 100644 (file)
@@ -1,3 +1,3 @@
 # Test for #481, a recompilation bug with Template Haskell
 
-test('recomp009', [extra_files(['Main.hs', 'Sub1.hs', 'Sub2.hs'])], makefile_test, [])
+test('recomp009', [extra_files(['Main.hs', 'Sub1.hs', 'Sub2.hs'])], run_command, ['$MAKE -s --no-print-directory recomp009'])
index 9040232..5eea6a1 100644 (file)
@@ -1,3 +1,3 @@
 # Test for #5614, a recompilation bug
 
-test('recomp010', [extra_files(['Main.hs', 'X1.hs', 'X2.hs'])], makefile_test, [])
+test('recomp010', [extra_files(['Main.hs', 'X1.hs', 'X2.hs'])], run_command, ['$MAKE -s --no-print-directory recomp010'])
index 88144ae..c22a695 100644 (file)
@@ -3,4 +3,4 @@
 test('recomp011',
      [extra_files(['Main.hs']),
       when(arch('powerpc64') or arch('powerpc64le'), expect_broken(11260))],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory recomp011'])
index 8cb8319..b1b599e 100644 (file)
@@ -1,3 +1,3 @@
 # Test for #7215, a recompilation bug
 
-test('recomp012', [], makefile_test, [])
+test('recomp012', [], run_command, ['$MAKE -s --no-print-directory recomp012'])
index 01d78ca..9481b01 100644 (file)
@@ -1,3 +1,3 @@
 # Test for #8247, a recompilation bug
 
-test('recomp013', [], makefile_test, [])
+test('recomp013', [], run_command, ['$MAKE -s --no-print-directory recomp013'])
index 5b77fe0..9399534 100644 (file)
@@ -6,5 +6,6 @@ test('recomp015',
        unless(opsys('linux') or opsys('solaris2') or opsys('openbsd'), skip),
        when(arch('arm'), skip),
        when(arch('powerpc64') or arch('powerpc64le'), expect_broken(11323))],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory recomp015'])
 
index afd6c2a..54b3372 100644 (file)
@@ -1,5 +1,3 @@
 # Test for #12723, a recompilation bug
 
-test('recomp016',
-     [extra_files(['A.hs', 'A2.hs', 'C.hs', 'D.hs', 'E.hs'])],
-     makefile_test, [])
+test('recomp016', [extra_files(['A.hs', 'A2.hs', 'C.hs', 'D.hs', 'E.hs'])], run_command, ['$MAKE -s --no-print-directory recomp016'])
index 0855f0b..ac473e0 100644 (file)
@@ -3,4 +3,4 @@
 test('recomp017',
      [extra_files(['A.hs', 'B.hs', 'C.hs', 'C2.hs', 'D.hs', 'E.hs']),
       ignore_stdout, expect_broken(13099)],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory recomp017'])
index dc5eb7c..0d8faf7 100644 (file)
@@ -2,4 +2,4 @@
 
 test('recomp018',
      [extra_files(['A.hs', 'B.hs', 'C.hs'])],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory recomp018'])
index a1ec634..a5b0c82 100644 (file)
@@ -2,5 +2,6 @@ test('retc001',
      [extra_files(['A.hs', 'B1.hs', 'B2.hs', 'C.hs']),
 # See issue 11204, this test sometimes passes and sometimes fails on OSX
       when(opsys('darwin'), skip)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory retc001'])
 
index bf5c81d..a2b67e4 100644 (file)
@@ -1,3 +1,3 @@
 test('retc002', [extra_files(['Q.hs', 'W.hs', 'W.hs-boot']),
-                 when(fast(), skip)],
-     makefile_test, [])
+                 when(fast(), skip)], run_command,
+     ['$MAKE -s --no-print-directory retc002'])
index 53a99b8..0bfefce 100644 (file)
@@ -1 +1 @@
-test('retc003', [extra_files(['A.hs'])], makefile_test, [])
+test('retc003', [extra_files(['A.hs'])], run_command, ['$MAKE -s --no-print-directory retc003'])
index aaa7a62..88ce37f 100644 (file)
@@ -1,9 +1,13 @@
 
-test('T3807', [req_shared_libs, when(opsys('mingw32'), skip)], makefile_test, [])
+test('T3807', [req_shared_libs, when(opsys('mingw32'), skip)], run_command,
+     ['$MAKE --no-print-directory -s T3807'])
 
-test('T4464', [req_shared_libs, unless(opsys('mingw32'), skip)], makefile_test, [])
+test('T4464', [req_shared_libs, unless(opsys('mingw32'), skip)], run_command,
+     ['$MAKE --no-print-directory -s T4464'])
 
-test('T5373', [req_shared_libs], makefile_test, [])
+test('T5373', [req_shared_libs], run_command,
+     ['$MAKE --no-print-directory -s T5373'])
 
 # It's not clear exactly what platforms we can expect this to succeed on.
-test('T13702', unless(opsys('linux'), skip), makefile_test, [])
+test('T13702', unless(opsys('linux'), skip), run_command,
+     ['$MAKE --no-print-directory -s T13702'])
index e9ea975..5bc1ab2 100644 (file)
@@ -160,11 +160,11 @@ test('T5594', [ omit_ways(['ghci']),
                 # needs it.
                 compile_and_run, ['T5594_c.c -no-hs-main'])
 
-test('Capi_Ctype_001', [extra_files(['Capi_Ctype_A_001.hsc', 'capi_ctype_001.h', 'capi_ctype_001_c.c'])],
-     makefile_test, ['Capi_Ctype_001'])
+test('Capi_Ctype_001', [extra_files(['Capi_Ctype_A_001.hsc', 'capi_ctype_001.h', 'capi_ctype_001_c.c'])], run_command,
+     ['$MAKE -s --no-print-directory Capi_Ctype_001'])
 
-test('Capi_Ctype_002', [extra_files(['Capi_Ctype_A_002.hsc', 'capi_ctype_002_A.h', 'capi_ctype_002_B.h'])],
-     makefile_test, ['Capi_Ctype_002'])
+test('Capi_Ctype_002', [extra_files(['Capi_Ctype_A_002.hsc', 'capi_ctype_002_A.h', 'capi_ctype_002_B.h'])], run_command,
+     ['$MAKE -s --no-print-directory Capi_Ctype_002'])
 
 test('ffi_parsing_001', [omit_ways(['ghci'])], compile_and_run,
      ['ffi_parsing_001_c.c'])
index 86a9b0c..395cce8 100644 (file)
@@ -19,7 +19,7 @@ test('gadt14', normal, compile, [''])
 test('gadt15', normal, compile, [''])
 test('gadt16', normal, compile, [''])
 
-test('gadt17', [extra_files(['Gadt17_help.hs'])], makefile_test, ['gadt17'])
+test('gadt17', [extra_files(['Gadt17_help.hs'])], run_command, ['$MAKE -s --no-print-directory gadt17'])
 
 test('gadt18', normal, compile, [''])
 test('gadt19', normal, compile, [''])
@@ -27,7 +27,7 @@ test('gadt20', normal, compile, [''])
 test('gadt21', normal, compile_fail, [''])
 test('gadt22', normal, compile, [''])
 
-test('gadt23', [extra_files(['Gadt23_AST.hs'])], makefile_test, ['gadt23'])
+test('gadt23', [extra_files(['Gadt23_AST.hs'])], run_command, ['$MAKE -s --no-print-directory gadt23'])
 
 test('gadt24', normal, compile, [''])
 
@@ -107,7 +107,7 @@ test('FloatEq', normal, compile, [''])
 test('T7205', normal, compile, [''])
 test('T7293', normal, compile_fail, ['-Werror'])
 test('T7294', normal, compile, [''])
-test('T7321', [], makefile_test, [])
+test('T7321', [], run_command, ['$MAKE -s --no-print-directory T7321'])
 test('T7974', normal, compile, [''])
 test('T7558', normal, compile_fail, [''])
 test('T9096', normal, compile, [''])
index 4887d49..f127f78 100644 (file)
@@ -43,4 +43,5 @@ test('T10361a', normal, compile, [''])
 test('T10361b', normal, compile, [''])
 test('T11358', normal, compile_and_run, [''])
 test('T12220', normal, compile, [''])
-test('T15012', [extra_files(['T15012.hs', 'T15012a.hs'])], makefile_test, [])
+test('T15012', [extra_files(['T15012.hs', 'T15012a.hs'])], run_command,
+               ['$MAKE -s --no-print-directory T15012'])
index 7913ba4..e76eae0 100644 (file)
@@ -1,3 +1,3 @@
 test('T10052', [when(arch('powerpc64') or arch('powerpc64le'),
                 expect_broken(11259)), req_interp],
-     makefile_test, ['T10052'])
+     run_command, ['$MAKE -s --no-print-directory T10052'])
index c179398..1e61d62 100644 (file)
@@ -1 +1 @@
-test('T4891', [extra_files(['X.hs'])], makefile_test, ['T4891'])
+test('T4891', [extra_files(['X.hs'])], run_command, ['$MAKE -s --no-print-directory T4891'])
index 0b6346c..e4b43d0 100644 (file)
@@ -1,3 +1,3 @@
 test('T7478', [extra_files(['A.hs', 'B.hs', 'C.hs']),
-               unless(have_dynamic(), skip)],
-     makefile_test, ['T7478'])
+               unless(have_dynamic(), skip)], run_command,
+     ['$MAKE -s --no-print-directory T7478'])
index b4e24ec..377c1e3 100644 (file)
@@ -1,11 +1,15 @@
 test('ghcApi', normal, compile_and_run, ['-package ghc'])
-test('T6145', normal, makefile_test, ['T6145'])
+test('T6145', normal,
+              run_command,
+              ['$MAKE -s --no-print-directory T6145'])
 test('T8639_api', when(arch('powerpc64') or arch('powerpc64le'),
                        expect_broken(11259)),
-              makefile_test, ['T8639_api'])
+              run_command,
+              ['$MAKE -s --no-print-directory T8639_api'])
 test('T8628', when(arch('powerpc64') or arch('powerpc64le'),
                    expect_broken(11259)),
-              makefile_test, ['T8628'])
+              run_command,
+              ['$MAKE -s --no-print-directory T8628'])
 test('T9595', extra_run_opts('"' + config.libdir + '"'),
               compile_and_run,
               ['-package ghc'])
index 75284e5..c8c511f 100644 (file)
@@ -1,2 +1,2 @@
-test('literals', [extra_files(['LiteralsTest.hs'])], makefile_test, ['literals'])
-test('parsed', [extra_files(['LiteralsTest2.hs'])], makefile_test, ['parsed'])
+test('literals', [extra_files(['LiteralsTest.hs'])], run_command, ['$MAKE -s --no-print-directory literals'])
+test('parsed', [extra_files(['LiteralsTest2.hs'])], run_command, ['$MAKE -s --no-print-directory parsed'])
index 4640e33..b415030 100644 (file)
@@ -2,7 +2,8 @@
 []
 ---Ann before enclosing span problem (should be empty list)---
 [
-
+((Test11018.hs:12:22-31,AnnOpenP), [Test11018.hs:12:21]),
+((Test11018.hs:37:23-31,AnnOpenP), [Test11018.hs:37:22])
 ]
 
 ---Annotations-----------------------
 ((Test11018.hs:(7,16)-(9,10),AnnDo), [Test11018.hs:7:16-17]),
 ((Test11018.hs:8:3-15,AnnLarrow), [Test11018.hs:8:5-6]),
 ((Test11018.hs:8:3-15,AnnSemi), [Test11018.hs:9:3]),
-((Test11018.hs:(12,1)-(15,7),AnnCloseP), [Test11018.hs:12:32]),
 ((Test11018.hs:(12,1)-(15,7),AnnData), [Test11018.hs:12:1-4]),
 ((Test11018.hs:(12,1)-(15,7),AnnEqual), [Test11018.hs:13:5]),
-((Test11018.hs:(12,1)-(15,7),AnnOpenP), [Test11018.hs:12:21]),
 ((Test11018.hs:(12,1)-(15,7),AnnSemi), [Test11018.hs:17:1]),
 ((Test11018.hs:12:21-32,AnnCloseP), [Test11018.hs:12:32]),
 ((Test11018.hs:12:21-32,AnnOpenP), [Test11018.hs:12:21]),
+((Test11018.hs:12:22-31,AnnCloseP), [Test11018.hs:12:32]),
 ((Test11018.hs:12:22-31,AnnDcolonU), [Test11018.hs:12:24]),
+((Test11018.hs:12:22-31,AnnOpenP), [Test11018.hs:12:21]),
 ((Test11018.hs:12:26,AnnRarrow), [Test11018.hs:12:28-29]),
 ((Test11018.hs:12:26-31,AnnRarrow), [Test11018.hs:12:28-29]),
 ((Test11018.hs:(13,16)-(15,7),AnnCloseC), [Test11018.hs:15:7]),
 ((Test11018.hs:(32,13)-(34,10),AnnDo), [Test11018.hs:32:13-14]),
 ((Test11018.hs:33:3-14,AnnLarrowU), [Test11018.hs:33:5]),
 ((Test11018.hs:33:3-14,AnnSemi), [Test11018.hs:34:3]),
-((Test11018.hs:(37,1)-(40,7),AnnCloseP), [Test11018.hs:37:32]),
 ((Test11018.hs:(37,1)-(40,7),AnnData), [Test11018.hs:37:1-4]),
 ((Test11018.hs:(37,1)-(40,7),AnnEqual), [Test11018.hs:38:5]),
-((Test11018.hs:(37,1)-(40,7),AnnOpenP), [Test11018.hs:37:22]),
 ((Test11018.hs:(37,1)-(40,7),AnnSemi), [Test11018.hs:42:1]),
 ((Test11018.hs:37:22-32,AnnCloseP), [Test11018.hs:37:32]),
 ((Test11018.hs:37:22-32,AnnOpenP), [Test11018.hs:37:22]),
+((Test11018.hs:37:23-31,AnnCloseP), [Test11018.hs:37:32]),
 ((Test11018.hs:37:23-31,AnnDcolonU), [Test11018.hs:37:25]),
+((Test11018.hs:37:23-31,AnnOpenP), [Test11018.hs:37:22]),
 ((Test11018.hs:37:27,AnnRarrowU), [Test11018.hs:37:29]),
 ((Test11018.hs:37:27-31,AnnRarrowU), [Test11018.hs:37:29]),
 ((Test11018.hs:(38,17)-(40,7),AnnCloseC), [Test11018.hs:40:7]),
index d4f0f08..5b91c36 100644 (file)
@@ -1,10 +1,5 @@
----Unattached Annotation Problems (should be empty list)---
+---Problems (should be empty list)---
 []
----Ann before enclosing span problem (should be empty list)---
-[
-
-]
-
 ---Annotations-----------------------
 -- SrcSpan the annotation is attached to, AnnKeywordId,
 --    list of locations the keyword item appears in
 ((Test16212.hs:1:1,AnnModule), [Test16212.hs:1:1-6]),
 ((Test16212.hs:1:1,AnnWhere), [Test16212.hs:1:18-22]),
 ((Test16212.hs:(3,1)-(4,37),AnnClass), [Test16212.hs:3:1-5]),
-((Test16212.hs:(3,1)-(4,37),AnnCloseP), [Test16212.hs:3:37]),
-((Test16212.hs:(3,1)-(4,37),AnnOpenP), [Test16212.hs:3:21]),
 ((Test16212.hs:(3,1)-(4,37),AnnSemi), [Test16212.hs:6:1]),
 ((Test16212.hs:(3,1)-(4,37),AnnWhere), [Test16212.hs:3:39-43]),
 ((Test16212.hs:3:21-37,AnnCloseP), [Test16212.hs:3:37]),
 ((Test16212.hs:3:21-37,AnnOpenP), [Test16212.hs:3:21]),
+((Test16212.hs:3:22-36,AnnCloseP), [Test16212.hs:3:37]),
 ((Test16212.hs:3:22-36,AnnDcolon), [Test16212.hs:3:28-29]),
+((Test16212.hs:3:22-36,AnnOpenP), [Test16212.hs:3:21]),
 ((Test16212.hs:4:3-37,AnnDcolon), [Test16212.hs:4:9-10]),
 ((Test16212.hs:4:29-37,AnnCloseP), [Test16212.hs:4:37]),
 ((Test16212.hs:4:29-37,AnnOpenP), [Test16212.hs:4:29]),
 ((Test16212.hs:(6,1)-(7,37),AnnClass), [Test16212.hs:6:1-5]),
-((Test16212.hs:(6,1)-(7,37),AnnCloseP), [Test16212.hs:6:40, Test16212.hs:6:39]),
-((Test16212.hs:(6,1)-(7,37),AnnOpenP), [Test16212.hs:6:22, Test16212.hs:6:23]),
 ((Test16212.hs:(6,1)-(7,37),AnnSemi), [Test16212.hs:9:1]),
 ((Test16212.hs:(6,1)-(7,37),AnnWhere), [Test16212.hs:6:42-46]),
 ((Test16212.hs:6:22-40,AnnCloseP), [Test16212.hs:6:40]),
 ((Test16212.hs:6:22-40,AnnOpenP), [Test16212.hs:6:22]),
 ((Test16212.hs:6:23-39,AnnCloseP), [Test16212.hs:6:39]),
 ((Test16212.hs:6:23-39,AnnOpenP), [Test16212.hs:6:23]),
+((Test16212.hs:6:24-38,AnnCloseP), [Test16212.hs:6:40, Test16212.hs:6:39]),
 ((Test16212.hs:6:24-38,AnnDcolon), [Test16212.hs:6:30-31]),
+((Test16212.hs:6:24-38,AnnOpenP), [Test16212.hs:6:22, Test16212.hs:6:23]),
 ((Test16212.hs:7:3-37,AnnDcolon), [Test16212.hs:7:9-10]),
 ((Test16212.hs:7:29-37,AnnCloseP), [Test16212.hs:7:37]),
 ((Test16212.hs:7:29-37,AnnOpenP), [Test16212.hs:7:29]),
-((Test16212.hs:(9,1)-(11,36),AnnCloseP), [Test16212.hs:9:23]),
 ((Test16212.hs:(9,1)-(11,36),AnnData), [Test16212.hs:9:1-4]),
-((Test16212.hs:(9,1)-(11,36),AnnOpenP), [Test16212.hs:9:10]),
-((Test16212.hs:(9,1)-(11,36),AnnSemi), [Test16212.hs:13:1]),
+((Test16212.hs:(9,1)-(11,36),AnnSemi), [Test16212.hs:12:1]),
 ((Test16212.hs:(9,1)-(11,36),AnnWhere), [Test16212.hs:9:25-29]),
 ((Test16212.hs:9:10-23,AnnCloseP), [Test16212.hs:9:23]),
 ((Test16212.hs:9:10-23,AnnOpenP), [Test16212.hs:9:10]),
+((Test16212.hs:9:11-22,AnnCloseP), [Test16212.hs:9:23]),
 ((Test16212.hs:9:11-22,AnnDcolon), [Test16212.hs:9:13-14]),
+((Test16212.hs:9:11-22,AnnOpenP), [Test16212.hs:9:10]),
 ((Test16212.hs:10:5-23,AnnDcolon), [Test16212.hs:10:13-14]),
 ((Test16212.hs:10:5-23,AnnSemi), [Test16212.hs:11:5]),
 ((Test16212.hs:11:5-36,AnnDcolon), [Test16212.hs:11:13-14]),
 ((Test16212.hs:11:16-36,AnnRarrow), [Test16212.hs:11:22-23]),
 ((Test16212.hs:11:29-36,AnnCloseP), [Test16212.hs:11:36]),
 ((Test16212.hs:11:29-36,AnnOpenP), [Test16212.hs:11:29]),
-((Test16212.hs:13:1-41,AnnCloseP), [Test16212.hs:13:12]),
-((Test16212.hs:13:1-41,AnnData), [Test16212.hs:13:1-4]),
-((Test16212.hs:13:1-41,AnnEqual), [Test16212.hs:13:16]),
-((Test16212.hs:13:1-41,AnnOpenP), [Test16212.hs:13:10]),
-((Test16212.hs:13:1-41,AnnSemi), [Test16212.hs:14:1]),
-((Test16212.hs:13:10-12,AnnCloseP), [Test16212.hs:13:12]),
-((Test16212.hs:13:10-12,AnnOpenP), [Test16212.hs:13:10]),
-((Test16212.hs:13:22-41,AnnCloseC), [Test16212.hs:13:41]),
-((Test16212.hs:13:22-41,AnnOpenC), [Test16212.hs:13:22]),
-((Test16212.hs:13:24-30,AnnComma), [Test16212.hs:13:31]),
-((Test16212.hs:13:24-30,AnnDcolon), [Test16212.hs:13:27-28]),
-((Test16212.hs:13:33-39,AnnDcolon), [Test16212.hs:13:36-37]),
-((<no location info>,AnnEofPos), [Test16212.hs:14:1])
+((<no location info>,AnnEofPos), [Test16212.hs:12:1])
 ]
index da7e322..6c2baad 100644 (file)
@@ -9,5 +9,3 @@ class LiftingMonad2  ((trans :: MTrans)) where
 data Nat (t :: NatKind) where
     ZeroNat :: Nat Zero
     SuccNat :: Nat t -> Nat (Succ t)
-
-data Foo (a) b = Foo { av :: a, bv :: b }
index 8002630..49f0780 100644 (file)
@@ -1,64 +1,65 @@
 test('annotations', [extra_files(['AnnotationLet.hs']),
-                     ignore_stderr], makefile_test, ['annotations'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory annotations'])
 test('parseTree',   [extra_files(['AnnotationTuple.hs']),
-                     ignore_stderr], makefile_test, ['parseTree'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory parseTree'])
 test('comments',    [extra_files(['CommentsTest.hs']),
-                     ignore_stderr], makefile_test, ['comments'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory comments'])
 test('exampleTest', [extra_files(['AnnotationTuple.hs']),
-                     ignore_stderr], makefile_test, ['exampleTest'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory exampleTest'])
 test('listcomps',   [extra_files(['ListComprehensions.hs']),
-                     ignore_stderr], makefile_test, ['listcomps'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory listcomps'])
 test('T10255',      [extra_files(['Test10255.hs']),
-                     ignore_stderr], makefile_test, ['T10255'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10255'])
 test('T10268',      [extra_files(['Test10268.hs']),
-                     ignore_stderr], makefile_test, ['T10268'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10268'])
 test('T10269',      [extra_files(['Test10269.hs']),
-                     ignore_stderr], makefile_test, ['T10269'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10269'])
 test('T10280',      [extra_files(['Test10280.hs']),
-                     ignore_stderr], makefile_test, ['T10280'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10280'])
 test('T10312',      [extra_files(['Test10312.hs']),
-                     ignore_stderr], makefile_test, ['T10312'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10312'])
 test('T10307',      [extra_files(['Test10307.hs']),
-                     ignore_stderr], makefile_test, ['T10307'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10307'])
 test('T10309',      [extra_files(['Test10309.hs']),
-                     ignore_stderr], makefile_test, ['T10309'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10309'])
 test('boolFormula', [extra_files(['TestBoolFormula.hs']),
-                     ignore_stderr], makefile_test, ['boolFormula'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory boolFormula'])
 test('T10357',      [extra_files(['Test10357.hs']),
-                     ignore_stderr], makefile_test, ['T10357'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10357'])
 test('T10358',      [extra_files(['Test10358.hs']),
-                     ignore_stderr], makefile_test, ['T10358'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10358'])
 test('T10278',      [extra_files(['Test10278.hs']),
-                     ignore_stderr], makefile_test, ['T10278'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10278'])
 test('T10354',      [extra_files(['Test10354.hs']),
-                     ignore_stderr], makefile_test, ['T10354'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10354'])
 test('T10396',      [extra_files(['Test10396.hs']),
-                     ignore_stderr], makefile_test, ['T10396'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10396'])
 test('T10399',      [extra_files(['Test10399.hs']),
-                     ignore_stderr], makefile_test, ['T10399'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10399'])
 test('T10313',      [extra_files(['Test10313.hs', 'stringSource.hs']),
-                     ignore_stderr], makefile_test, ['T10313'])
-test('T11018',      [extra_files(['Test11018.hs']),
-                     ignore_stderr], makefile_test, ['T11018'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10313'])
+# Stricter tests from trac #16217 now causes this to fail. Will be fixed for trac #16212
+test('T11018',      [expect_broken(11018),extra_files(['Test11018.hs']),
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T11018'])
 test('bundle-export', [extra_files(['BundleExport.hs']),
-                       ignore_stderr], makefile_test, ['bundle-export'])
+                       ignore_stderr], run_command, ['$MAKE -s --no-print-directory bundle-export'])
 test('T10276',      [extra_files(['Test10276.hs']),
-                     ignore_stderr], makefile_test, ['T10276'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10276'])
 test('T10598',      [extra_files(['Test10598.hs']),
-                     ignore_stderr], makefile_test, ['T10598'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T10598'])
 test('T11321',      [extra_files(['Test11321.hs']),
-                     ignore_stderr], makefile_test, ['T11321'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T11321'])
 test('T11332',      [extra_files(['Test11332.hs']),
-                     ignore_stderr], makefile_test, ['T11332'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T11332'])
 test('T11430',      [extra_files(['Test11430.hs', 't11430.hs']),
-                     ignore_stderr], makefile_test, ['T11430'])
-test('load-main',   ignore_stderr, makefile_test, ['load-main'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T11430'])
+test('load-main',   ignore_stderr, run_command, ['$MAKE -s --no-print-directory load-main'])
 test('T12417',      [extra_files(['Test12417.hs']),
-                     ignore_stderr], makefile_test, ['T12417'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T12417'])
 test('T13163',      [extra_files(['Test13163.hs']),
-                     ignore_stderr], makefile_test, ['T13163'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T13163'])
 test('T15303',      [extra_files(['Test15303.hs']),
-                     ignore_stderr], makefile_test, ['T15303'])
+                     ignore_stderr], run_command, ['$MAKE -s --no-print-directory T15303'])
 # Stricter tests from trac #16217 now causes this to fail. Will be fixed for trac #16212
 test('T16212',      [expect_broken(16212),extra_files(['Test16212.hs']),
                      ignore_stderr], run_command, ['$MAKE -s --no-print-directory T16212'])
index 363f9c0..7b17e13 100644 (file)
@@ -1,3 +1,4 @@
 test('apirecomp001',
      extra_files(['A.hs', 'B.hs', 'myghc.hs']),
-     makefile_test, ['apirecomp001'])
+     run_command,
+     ['$MAKE -s --no-print-directory apirecomp001'])
index 3f9fb75..100b3f0 100644 (file)
@@ -1 +1 @@
-test('showsrcspan', normal, makefile_test, ['showsrcspan'])
+test('showsrcspan', normal, run_command, ['$MAKE -s --no-print-directory showsrcspan'])
index 76f9afe..9a75481 100644 (file)
@@ -1,16 +1,23 @@
-test('T7962', req_interp, makefile_test, ['T7962'])
+test('T7962', req_interp, run_command,
+     ['$MAKE --no-print-directory -s T7962'])
 
-test('T9905fail1', req_interp, makefile_test, ['T9905fail1'])
+test('T9905fail1', req_interp, run_command,
+     ['$MAKE --no-print-directory -s T9905fail1'])
 
-test('T9905fail2', req_interp, makefile_test, ['T9905fail2'])
+test('T9905fail2', req_interp, run_command,
+     ['$MAKE --no-print-directory -s T9905fail2'])
 
-test('T9905fail3', req_interp, makefile_test, ['T9905fail3'])
+test('T9905fail3', req_interp, run_command,
+     ['$MAKE --no-print-directory -s T9905fail3'])
 
-test('ghc-e-fail1', req_interp, makefile_test, ['ghc-e-fail1'])
+test('ghc-e-fail1', req_interp, run_command,
+     ['$MAKE --no-print-directory -s ghc-e-fail1'])
 
-test('ghc-e-fail2', req_interp, makefile_test, ['ghc-e-fail2'])
+test('ghc-e-fail2', req_interp, run_command,
+     ['$MAKE --no-print-directory -s ghc-e-fail2'])
 
 # Don't run on Windows, as executable is written to T9930.exe
 # and no failure is induced.
 test('T9930fail', [extra_files(['T9930']), when(opsys('mingw32'), skip)],
-     makefile_test, ['T9930fail'])
+     run_command,
+     ['$MAKE --no-print-directory -s T9930fail'])
index a2e50ab..a10fb0d 100644 (file)
@@ -1,18 +1,19 @@
 
-test('ghc-e001', req_interp, makefile_test, ['ghc-e001'])
-test('ghc-e002', req_interp, makefile_test, ['ghc-e002'])
-test('ghc-e003', req_interp, makefile_test, ['ghc-e003'])
-test('ghc-e004', req_interp, makefile_test, ['ghc-e004'])
-test('ghc-e005', req_interp, makefile_test, ['ghc-e005'])
-test('ghc-e006', req_interp, makefile_test, ['ghc-e006'])
+test('ghc-e001', req_interp, run_command, ['$MAKE --no-print-directory -s ghc-e001'])
+test('ghc-e002', req_interp, run_command, ['$MAKE --no-print-directory -s ghc-e002'])
+test('ghc-e003', req_interp, run_command, ['$MAKE --no-print-directory -s ghc-e003'])
+test('ghc-e004', req_interp, run_command, ['$MAKE --no-print-directory -s ghc-e004'])
+test('ghc-e005', req_interp, run_command, ['$MAKE --no-print-directory -s ghc-e005'])
+test('ghc-e006', req_interp, run_command, ['$MAKE --no-print-directory -s ghc-e006'])
 
 test('T2228',
      [req_interp, when(ghc_dynamic(), expect_broken(7298))],
-     makefile_test, ['T2228'])
-test('T2636', req_interp, makefile_test, ['T2636'])
-test('T3890', req_interp, makefile_test, ['T3890'])
-test('T7299', req_interp, makefile_test, ['T7299'])
-test('T9086', req_interp, makefile_test, ['T9086'])
-test('T9905', req_interp, makefile_test, ['T9905'])
-test('T9905b', req_interp, makefile_test, ['T9905b'])
-test('T11478', req_interp, makefile_test, ['T11478'])
+     run_command,
+     ['$MAKE --no-print-directory -s T2228'])
+test('T2636', req_interp, run_command, ['$MAKE --no-print-directory -s T2636'])
+test('T3890', req_interp, run_command, ['$MAKE --no-print-directory -s T3890'])
+test('T7299', req_interp, run_command, ['$MAKE --no-print-directory -s T7299'])
+test('T9086', req_interp, run_command, ['$MAKE --no-print-directory -s T9086'])
+test('T9905', req_interp, run_command, ['$MAKE --no-print-directory -s T9905'])
+test('T9905b', req_interp, run_command, ['$MAKE --no-print-directory -s T9905b'])
+test('T11478', req_interp, run_command, ['$MAKE --no-print-directory -s T11478'])
index bfbcf24..793998e 100644 (file)
@@ -134,8 +134,3 @@ T14708:
        "$(TEST_HC)" -c add.c -o T14708scratch/add.o
        "$(AR)" cqs T14708scratch/libadd.a T14708scratch/add.o
        -"$(TEST_HC)" $(TEST_HC_OPTS_INTERACTIVE) -LT14708scratch -ladd T14708.hs
-
-.PHONY: T15729
-T15729:
-       "$(TEST_HC)" -fPIC -c T15729.c -o bss.o
-       echo "main" | "$(TEST_HC)" $(TEST_HC_OPTS_INTERACTIVE) bss.o T15729.hs
diff --git a/testsuite/tests/ghci/linking/T15729.c b/testsuite/tests/ghci/linking/T15729.c
deleted file mode 100644 (file)
index 67cc6cd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-int readBss(int i) {
-  static int bss[1 << 20];
-  return bss[i];
-}
diff --git a/testsuite/tests/ghci/linking/T15729.hs b/testsuite/tests/ghci/linking/T15729.hs
deleted file mode 100644 (file)
index f35f96e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module T15729 (main) where
-
-import Foreign
-import Foreign.C
-
-foreign import ccall unsafe "readBss"
-  readBss :: Int -> IO Int
-
-main :: IO ()
-main = do
-  prefix <- mapM readBss [0 .. 10]
-  print prefix
-  samples <- mapM readBss [0, 19 .. bit 20 - 1]
-  print $ foldr1 (.|.) samples
diff --git a/testsuite/tests/ghci/linking/T15729.stdout b/testsuite/tests/ghci/linking/T15729.stdout
deleted file mode 100644 (file)
index 2a408d0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-[0,0,0,0,0,0,0,0,0,0,0]
-0
index 792e91b..d5ee2ff 100644 (file)
@@ -3,45 +3,45 @@ test('ghcilink001',
       when(ghc_dynamic(), expect_fail), # dynamic ghci can't load '.a's
       unless(doing_ghci, skip),
       extra_clean(['dir001/*','dir001'])],
-     makefile_test, ['ghcilink001'])
+     run_command,
+     ['$MAKE -s --no-print-directory ghcilink001'])
 
 test('ghcilink002', [extra_files(['TestLink.hs', 'f.c']),
                      # Fragile when unregisterised; see #16085
                      when(unregisterised(), skip),
-                     unless(doing_ghci, skip)],
-     makefile_test, ['ghcilink002'])
+                     unless(doing_ghci, skip)], run_command,
+     ['$MAKE -s --no-print-directory ghcilink002'])
 
-test('ghcilink003', [unless(doing_ghci, skip)], makefile_test, ['ghcilink003'])
+test('ghcilink003', [unless(doing_ghci, skip)], run_command,
+     ['$MAKE -s --no-print-directory ghcilink003'])
 
 test('ghcilink004',
      [extra_files(['TestLink.hs', 'f.c']),
       unless(doing_ghci, skip),
       when(arch('powerpc64') or arch('powerpc64le'), expect_broken(11259))],
-     makefile_test, ['ghcilink004'])
+     run_command, ['$MAKE -s --no-print-directory ghcilink004'])
 
 test('ghcilink005',
      [extra_files(['TestLink.hs', 'f.c']),
       # Fragile when unregisterised; see #16085
       when(unregisterised(), skip),
       unless(doing_ghci, skip)],
-     makefile_test, ['ghcilink005'])
+     run_command,
+     ['$MAKE -s --no-print-directory ghcilink005'])
 
-test('ghcilink006', [unless(doing_ghci, skip)], makefile_test, ['ghcilink006'])
+test('ghcilink006', [unless(doing_ghci, skip)], run_command,
+     ['$MAKE -s --no-print-directory ghcilink006'])
 
 test('T3333',
      [unless(doing_ghci, skip),
       unless(opsys('linux') or opsys('darwin') or ghc_dynamic(),
              expect_broken(3333))],
-     makefile_test, ['T3333'])
+     run_command, ['$MAKE -s --no-print-directory T3333'])
 
 test('T14708',
      [extra_files(['T14708.hs', 'add.c']),
       unless(doing_ghci, skip),
       unless(ghc_dynamic(), skip),
       extra_clean(['T14708scratch/*', 'T14708'])],
-     makefile_test, ['T14708'])
-
-test('T15729',
-     [extra_files(['T15729.hs', 'T15729.c']),
-      unless(doing_ghci, skip)],
-     makefile_test, ['T15729'])
+     run_command,
+     ['$MAKE -s --no-print-directory T14708'])
index 2efcbbb..f8679bc 100644 (file)
@@ -1,17 +1,18 @@
 test('load_short_name', [extra_files(['A.c']),
-                         unless(doing_ghci, skip)],
-     makefile_test, ['load_short_name'])
+                         unless(doing_ghci, skip)], run_command,
+     ['$MAKE -s --no-print-directory load_short_name'])
 
 test('T1407',
      [extra_files(['A.c']),
       unless(doing_ghci, skip),
       pre_cmd('$MAKE -s --no-print-directory compile_libT1407'),
       extra_hc_opts('-L"$PWD/T1407dir"')],
-     makefile_test, [])
+     run_command, ['$MAKE --no-print-directory -s T1407'])
 
 test('T3242',
      [unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
-     makefile_test, ['T3242'])
+     run_command,
+     ['$MAKE -s --no-print-directory T3242'])
 
 test('T10955',
      [extra_files(['A.c', 'B.c']),
@@ -20,7 +21,8 @@ test('T10955',
       extra_hc_opts('-L. -L./bin_dep')],
      ghci_script, ['T10955.script'])
 
-test('T10955dyn', [extra_files(['A.c', 'B.c'])], makefile_test, ['compile_libAB_dyn'])
+test('T10955dyn', [extra_files(['A.c', 'B.c'])], run_command,
+     ['$MAKE -s --no-print-directory compile_libAB_dyn'])
 
 test('T10458',
      [extra_files(['A.c']),
@@ -31,16 +33,16 @@ test('T10458',
 
 test('T11072gcc', [extra_files(['A.c', 'T11072.hs']),
                    unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
-     makefile_test, ['compile_libAS_impl_gcc'])
+     run_command, ['$MAKE -s --no-print-directory compile_libAS_impl_gcc'])
 
 test('T11072msvc', [extra_files(['A.c', 'T11072.hs', 'libAS.def', 'i686/', 'x86_64/']),
                     unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
-     makefile_test, ['compile_libAS_impl_msvc'])
+     run_command, ['$MAKE -s --no-print-directory compile_libAS_impl_msvc'])
 
 test('T13606', [unless(doing_ghci, skip), unless(opsys('mingw32'), skip),
                 exit_code(0)],
-     makefile_test, ['T13606'])
+     run_command, ['$MAKE -s --no-print-directory T13606'])
 
 test('big-obj', [extra_files(['big-obj-c.c', 'big-obj.hs']),
                     unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
-     makefile_test, ['big-obj'])
+     run_command, ['$MAKE -s --no-print-directory big-obj'])
index 74ec8de..31ac04a 100644 (file)
@@ -3,4 +3,5 @@ def f(name, opts):
         opts.skip = 1
 setTestOpts(f)
 
-test('ghciprog004', [], makefile_test, ['ghciprog004'])
+test('ghciprog004', [], run_command,
+     ['$MAKE -s --no-print-directory ghciprog004'])
index 2cb93b8..1394a9a 100755 (executable)
@@ -53,10 +53,12 @@ test('ghci022', normal, ghci_script, ['ghci022.script'])
 test('ghci023', normal, ghci_script, ['ghci023.script'])
 test('ghci024',
      [req_interp, when(fast(), skip)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory ghci024'])
 test('T9367',
      [req_interp, when(fast() or config.os != 'mingw32', skip)],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T9367'])
 test('ghci025', extra_files(['Ghci025B.hs', 'Ghci025C.hs', 'Ghci025D.hs']), ghci_script, ['ghci025.script'])
 test('ghci026', extra_files(['../prog002']), ghci_script, ['ghci026.script'])
 
@@ -70,7 +72,7 @@ test('ghci033', normal, ghci_script, ['ghci033.script'])
 test('ghci034', normal, ghci_script, ['ghci034.script'])
 test('ghci035', normal, ghci_script, ['ghci035.script'])
 test('ghci036', normal, ghci_script, ['ghci036.script'])
-test('ghci037', req_interp, makefile_test, [])
+test('ghci037', req_interp, run_command, ['$MAKE -s --no-print-directory ghci037'])
 test('ghci038', extra_files(['../shell.hs']), ghci_script, ['ghci038.script'])
 test('ghci039', normal, ghci_script, ['ghci039.script'])
 test('ghci040', normal, ghci_script, ['ghci040.script'])
@@ -217,7 +219,8 @@ test('T10122', normal, ghci_script, ['T10122.script'])
 
 test('T10321', normal, ghci_script, ['T10321.script'])
 
-test('T10408', req_interp, makefile_test, [])
+test('T10408', req_interp, run_command,
+    ['$MAKE -s --no-print-directory T10408'])
 test('T10248', normal, ghci_script, ['T10248.script'])
 test('T10110', normal, ghci_script, ['T10110.script'])
 test('T10322', normal, ghci_script, ['T10322.script'])
@@ -241,7 +244,7 @@ test('T11051a', normal, ghci_script, ['T11051a.script'])
 test('T11051b', normal, ghci_script, ['T11051b.script'])
 test('T11266', ignore_stdout, ghci_script, ['T11266.script'])
 
-test('T11389', req_interp, makefile_test, [])
+test('T11389', req_interp, run_command, ['$MAKE -s --no-print-directory T11389'])
 test('T11524a', normal, ghci_script, ['T11524a.script'])
 test('T11456', normal, ghci_script, ['T11456.script'])
 test('TypeAppData', normal, ghci_script, ['TypeAppData.script'])
@@ -252,7 +255,8 @@ test('T11975', normal, ghci_script, ['T11975.script'])
 test('T10963', normal, ghci_script, ['T10963.script'])
 test('T11721', normal, ghci_script, ['T11721.script'])
 test('T12005', normal, ghci_script, ['T12005.script'])
-test('T12023', normal, makefile_test, [])
+test('T12023', normal, run_command,
+               ['$MAKE -s --no-print-directory T12023'])
 test('T12520', normal, ghci_script, ['T12520.script'])
 test('T12091', [extra_run_opts('-fobject-code')], ghci_script,
      ['T12091.script'])
index 5440019..a9eded4 100644 (file)
@@ -14,7 +14,8 @@ test('T3171',
       skip, # This test is quite flaky (#15383)
       req_interp,
       combined_output],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T3171'])
 
 test('ghcirun004', just_ghci, compile_and_run, [''])
 test('T8377',      just_ghci, compile_and_run, [''])
index b884ecf..bebeb56 100644 (file)
@@ -1 +1 @@
-test('T15904', [], makefile_test, [])
+test('T15904', [], run_command, ['$MAKE -s --no-print-directory T15904'])
index ed68e29..274674b 100644 (file)
@@ -3,7 +3,7 @@ test('T10138', [extra_files(['.keepme.hpc.T10138/']),
      # Using --hpcdir with an absolute path should work (exit code 0).
      ['{hpc} report T10138.keepme.tix --hpcdir="`pwd`/.keepme.hpc.T10138"'])
 
-test('T11798', normal, makefile_test, [])
+test('T11798', normal, run_command, ['$MAKE -s --no-print-directory T11798'])
 
 # Run tests below only for the hpc way.
 #
index ab67d01..d42f385 100644 (file)
@@ -1,22 +1,23 @@
 
-test('hsc2hs001', [], makefile_test, [])
+test('hsc2hs001', [], run_command, ['$MAKE -s --no-print-directory hsc2hs001'])
 
-test('hsc2hs002', [], makefile_test, [])
+test('hsc2hs002', [], run_command, ['$MAKE -s --no-print-directory hsc2hs002'])
 
-test('hsc2hs003', [], makefile_test, [])
+test('hsc2hs003', [], run_command, ['$MAKE -s --no-print-directory hsc2hs003'])
 
-test('hsc2hs004', [], makefile_test, [])
+test('hsc2hs004', [], run_command, ['$MAKE -s --no-print-directory hsc2hs004'])
 
 
-test('T3837', [], makefile_test, [])
+test('T3837', [], run_command, ['$MAKE -s --no-print-directory T3837'])
 
-test('T4340', [], makefile_test, [])
+test('T4340', [], run_command, ['$MAKE -s --no-print-directory T4340'])
 
-test('T10272', [], makefile_test, [])
+test('T10272', [], run_command, ['$MAKE -s --no-print-directory T10272'])
 
-test('T11004', [], makefile_test, [])
+test('T11004', [], run_command, ['$MAKE -s --no-print-directory T11004'])
 
-test('T12504', [extra_files(['T12504']), ignore_stdout], makefile_test, [])
+test('T12504', [extra_files(['T12504']), ignore_stdout], run_command,
+     ['$MAKE -s --no-print-directory T12504'])
 
 # Make sure response files are read and used.
-test('T15758', [], makefile_test, [])
+test('T15758', [], run_command, ['$MAKE -s --no-print-directory T15758'])
index e5245ad..a3047a6 100644 (file)
@@ -1,4 +1,5 @@
 # Test that we don't load all family instance interface files
 # when importing a module that defines a family instance
 
-test('T13092b', ignore_stdout, makefile_test, ['T13092b'])
+test('T13092b', ignore_stdout,
+     run_command, ['$MAKE -s --no-print-directory T13092b'])
index dbebdf0..484d843 100644 (file)
@@ -39,7 +39,7 @@ test('Records', normal, compile, [''])
 # The point about this test is that it compiles NewTyCo1 and NewTyCo2
 # *separately*
 #
-test('NewTyCo', [], makefile_test, ['NewTyCo'])
+test('NewTyCo', [], run_command, ['$MAKE -s --no-print-directory NewTyCo'])
 
 test('Infix', normal, compile, [''])
 test('Kind', normal, compile, [''])
@@ -130,7 +130,8 @@ test('IndTypesPerf',
        extra_clean(['IndTypesPerf.o', 'IndTypesPerf.hi',
                     'IndTypesPerfMerge.o', 'IndTypesPerfMerge.hi'])
      ] ,
-     makefile_test, ['IndTypesPerf'])
+     run_command,
+     ['$MAKE -s --no-print-directory IndTypesPerf'])
 
 test('T4120', normal, compile, [''])
 test('T3787', normal, compile, [''])
@@ -170,9 +171,13 @@ test('HO', normal, compile, [''])
 
 # The point about this test is that it compiles the two T5955
 # modules *separately*
-test('T5955', [], makefile_test, ['T5955'])
+test('T5955', [], run_command, ['$MAKE -s --no-print-directory T5955'])
+
+test('T6152',
+     normal,
+     run_command,
+     ['$MAKE -s --no-print-directory T6152'])
 
-test('T6152', normal, makefile_test, ['T6152'])
 test('T7082', normal, compile, [''])
 
 test('Overlap1', normal, compile, [''])
@@ -201,13 +206,22 @@ test('T7837', normal, compile,
 test('T4185', normal, compile, [''])
 
 # Caused infinite loop in the compiler
-test('T8002', normal, makefile_test, ['T8002'])
+test('T8002',
+     normal,
+     run_command,
+     ['$MAKE -s --no-print-directory T8002'])
 
 # Import and export of associated types
-test('T8011', normal, makefile_test, ['T8011'])
+test('T8011',
+     normal,
+     run_command,
+     ['$MAKE -s --no-print-directory T8011'])
 
 # Marshalling of associated types
-test('T8500', normal, makefile_test, ['T8500'])
+test('T8500',
+     normal,
+     run_command,
+     ['$MAKE -s --no-print-directory T8500'])
 
 test('T8018', normal, compile, [''])
 test('T8020', normal, compile, [''])
index 2f2d1db..090d10d 100644 (file)
@@ -2,4 +2,4 @@
 # with imported ones
 
 test('T13092', extra_files(['A.hs', 'B.hs', 'C.hs', 'Main.hs']),
-     makefile_test, ['T13092'])
+     run_command, ['$MAKE -s --no-print-directory T13092'])
index 359bc04..c4e38be 100644 (file)
@@ -5,4 +5,4 @@
 # defined in T13092c_4, and would not be read otherwise.)
 
 test('T13092c', ignore_stdout,
-     makefile_test, ['T13092c'])
+     run_command, ['$MAKE -s --no-print-directory T13092c'])
index 53564c1..bdde354 100644 (file)
@@ -2,4 +2,4 @@
 
 test('T13102', [expect_broken(13102),
      extra_files(['A.hs', 'B.hs', 'orphan'])],
-     makefile_test, ['T13102'])
+     run_command, ['$MAKE -s --no-print-directory T13102'])
index 4e29910..4f6863b 100644 (file)
@@ -86,7 +86,7 @@ test('Overlap11', normal, compile_fail, [''])
 test('Overlap15', normal, compile_fail, [''])
 test('T7194', normal, compile_fail, [''])
 test('T7354', normal, compile_fail, [''])
-test('T7354a', [extra_files(['T7354b.hs'])], makefile_test, ['T7354a'])
+test('T7354a', [extra_files(['T7354b.hs'])], run_command, ['$MAKE -s --no-print-directory T7354a'])
 test('T7536', normal, compile_fail, [''])
 
 test('T7729', normal, compile_fail, [''])
@@ -100,8 +100,11 @@ test('T7938', normal, compile_fail, [''])
 test('ClosedFam3', [], multimod_compile_fail, ['ClosedFam3', '-v0'])
 test('ClosedFam4', normal, compile_fail, [''])
 test('T8155', normal, compile_fail, [''])
-test('T8227', [], makefile_test, ['T8227'])
-test('T8129', normal, makefile_test, ['T8129'])
+test('T8227', [], run_command, ['$MAKE -s --no-print-directory T8227'])
+test('T8129',
+     normal,
+     run_command,
+     ['$MAKE -s --no-print-directory T8129'])
 
 test('T8368', normal, compile_fail, [''])
 test('T8368a', normal, compile_fail, [''])
index 8826bf9..cde69bf 100644 (file)
@@ -1,18 +1,19 @@
 
-test('layout001', [], makefile_test, ['layout001'])
+test('layout001', [], run_command, ['$MAKE -s --no-print-directory layout001'])
 
-test('layout002', [], makefile_test, ['layout002'])
+test('layout002', [], run_command, ['$MAKE -s --no-print-directory layout002'])
 
-test('layout003', [], makefile_test, ['layout003'])
+test('layout003', [], run_command, ['$MAKE -s --no-print-directory layout003'])
 
-test('layout004', [], makefile_test, ['layout004'])
+test('layout004', [], run_command, ['$MAKE -s --no-print-directory layout004'])
 
-test('layout005', [], makefile_test, ['layout005'])
+test('layout005', [], run_command, ['$MAKE -s --no-print-directory layout005'])
 
-test('layout006', [], makefile_test, ['layout006'])
+test('layout006', [], run_command, ['$MAKE -s --no-print-directory layout006'])
 
-test('layout007', [req_interp], makefile_test, ['layout007'])
+test('layout007', [req_interp], run_command,
+     ['$MAKE -s --no-print-directory layout007'])
 
-test('layout008', [], makefile_test, ['layout008'])
+test('layout008', [], run_command, ['$MAKE -s --no-print-directory layout008'])
 
-test('layout009', [], makefile_test, ['layout009'])
+test('layout009', [], run_command, ['$MAKE -s --no-print-directory layout009'])
index 5e629b9..fda9a4a 100644 (file)
@@ -3,7 +3,10 @@ test('integerConversions', normal, compile_and_run, [''])
 # skip ghci as it doesn't support unboxed tuples
 test('integerGmpInternals', [reqlib('integer-gmp'), omit_ways('ghci')], compile_and_run, [''])
 test('plusMinusInteger', [omit_ways('ghci')], compile_and_run, [''])
-test('integerConstantFolding', normal, makefile_test, ['integerConstantFolding'])
-test('fromToInteger', [], makefile_test, ['fromToInteger'])
-test('IntegerConversionRules', [], makefile_test, ['IntegerConversionRules'])
+test('integerConstantFolding', normal, run_command,
+     ['$MAKE -s --no-print-directory integerConstantFolding'])
+test('fromToInteger', [], run_command,
+     ['$MAKE -s --no-print-directory fromToInteger'])
+test('IntegerConversionRules', [], run_command,
+     ['$MAKE -s --no-print-directory IntegerConversionRules'])
 test('gcdInteger', normal, compile_and_run, [''])
index ef586bc..ca6bc0a 100644 (file)
@@ -13,4 +13,5 @@ setTestOpts(f)
 # Please refer to https://ghc.haskell.org/trac/ghc/ticket/5019
 # for the subsections_via_symbols.stderr
 
-test('subsections_via_symbols', [only_darwin], makefile_test, [])
+test('subsections_via_symbols', [only_darwin], run_command,
+     ['$MAKE -s --no-print-directory subsections_via_symbols_test'])
index 6ff69b0..33ce3ae 100644 (file)
@@ -198,11 +198,11 @@ test('mod142', [extra_files(['Mod142_A.hs'])], multimod_compile_fail, ['mod142',
 
 test('mod143', [extra_files(['Mod143_A.hs'])], multimod_compile_fail, ['mod143', '-v0'])
 
-test('mod144', [extra_files(['Mod144_A.hs'])], makefile_test, [])
+test('mod144', [extra_files(['Mod144_A.hs'])], run_command, ['$MAKE -s --no-print-directory mod144'])
 
 test('mod145', [extra_files(['Mod145_A.hs'])], multimod_compile_fail, ['mod145', '-v0'])
 
-test('mod146', [extra_files(['Mod145_A.hs'])], makefile_test, [])
+test('mod146', [extra_files(['Mod145_A.hs'])], run_command, ['$MAKE -s --no-print-directory mod146'])
 
 test('mod147', [extra_files(['Mod147_A.hs'])], multimod_compile_fail, ['mod147', '-v0'])
 
@@ -217,11 +217,11 @@ test('mod155', normal, compile_fail, [''])
 test('mod156', normal, compile, [''])
 test('mod157', [extra_files(['Mod157_A.hs', 'Mod157_B.hs', 'Mod157_C.hs', 'Mod157_D.hs'])], multimod_compile, ['mod157', '-v0'])
 
-test('mod158', [extra_files(['Mod157_A.hs', 'Mod157_B.hs', 'Mod157_C.hs', 'Mod157_D.hs'])], makefile_test, [])
+test('mod158', [extra_files(['Mod157_A.hs', 'Mod157_B.hs', 'Mod157_C.hs', 'Mod157_D.hs'])], run_command, ['$MAKE -s --no-print-directory mod158'])
 
 test('mod159', [extra_files(['Mod159_A.hs', 'Mod159_B.hs', 'Mod159_C.hs', 'Mod159_D.hs'])], multimod_compile, ['mod159', '-v0'])
 
-test('mod160', [extra_files(['Mod159_A.hs', 'Mod159_B.hs', 'Mod159_C.hs', 'Mod159_D.hs'])], makefile_test, [])
+test('mod160', [extra_files(['Mod159_A.hs', 'Mod159_B.hs', 'Mod159_C.hs', 'Mod159_D.hs'])], run_command, ['$MAKE -s --no-print-directory mod160'])
 
 test('mod161', normal, compile_fail, [''])
 test('mod162', [extra_files(['Mod162_A.hs'])], multimod_compile, ['mod162', '-v0'])
@@ -230,13 +230,13 @@ test('mod163', [extra_files(['Mod163_A.hs'])], multimod_compile, ['mod163', '-v0
 
 test('mod164', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])], multimod_compile_fail, ['mod164', '-v0'])
 
-test('mod165', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])], makefile_test, [])
+test('mod165', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])], run_command, ['$MAKE -s --no-print-directory mod165'])
 
-test('mod166', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])],
-     run_command, ['$MAKE -s --no-print-directory mod166 MAKELEVEL='])
+test('mod166', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])], run_command,
+     ['$MAKE -s --no-print-directory mod166 MAKELEVEL='])
 
-test('mod167', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])],
-     run_command, ['$MAKE -s --no-print-directory mod167 MAKELEVEL='])
+test('mod167', [extra_files(['Mod164_A.hs', 'Mod164_B.hs'])], run_command,
+     ['$MAKE -s --no-print-directory mod167 MAKELEVEL='])
 
 test('mod168', normal, compile, [''])
 test('mod169', normal, compile, [''])
index 739e966..6c1c207 100644 (file)
@@ -1,3 +1,3 @@
 test('base01', [extra_files(['GHC']),
-                normalise_slashes],
-     makefile_test, [])
+                normalise_slashes], run_command,
+     ['$MAKE -s base01 --no-print-directory'])
index 2340e63..b6639e8 100644 (file)
@@ -1 +1 @@
-test('mod175', [extra_files(['Test.hs', 'Test2.hs'])], makefile_test, ['mod175'])
+test('mod175', [extra_files(['Test.hs', 'Test2.hs'])], run_command, ['$MAKE -s --no-print-directory mod175'])
index 625951f..6177c66 100644 (file)
@@ -1,7 +1,7 @@
-test('T7116', normal, makefile_test, ['T7116'])
+test('T7116', normal, run_command, ['$MAKE -s --no-print-directory T7116'])
 # These test Core output that depends upon integer-gmp
-test('T14170', reqlib("integer-gmp"), makefile_test, ['T14170'])
-test('T14465', reqlib("integer-gmp"), makefile_test, ['T14465'])
+test('T14170', reqlib("integer-gmp"), run_command, ['$MAKE -s --no-print-directory T14170'])
+test('T14465', reqlib("integer-gmp"), run_command, ['$MAKE -s --no-print-directory T14465'])
 test('T7895', normal, compile, [''])
 test('T7881', normal, compile, [''])
 # For T8542, the hpc way adds extra annotations that prevent
index a966038..295e818 100644 (file)
@@ -54,7 +54,7 @@ test('mul2', normal, compile_and_run, ['-fobject-code'])
 test('quotRem2', normal, compile_and_run, ['-fobject-code'])
 test('T5863', normal, compile_and_run, [''])
 
-test('T7014', [], makefile_test, [])
+test('T7014', [], run_command, ['$MAKE -s --no-print-directory T7014'])
 
 test('T7233', normal, compile_and_run, [''])
 test('NumDecimals', normal, compile_and_run, [''])
index f9cb339..cef48ae 100644 (file)
@@ -2,4 +2,4 @@
 # This test is in its own subdirectory as it needs to use the global
 # filename "Main.imports"
 
-test('T7476', [], makefile_test, ['T7476'])
+test('T7476', [], run_command, ['$MAKE -s --no-print-directory T7476'])
index 67b4101..e8d82a7 100644 (file)
@@ -2,4 +2,5 @@
 
 test('T13350',
      extra_files(['T13350.hs', 'boolean']),
-     makefile_test, ['T13350'])
+     run_command,
+     ['$MAKE -s --no-print-directory T13350'])
index 9103719..b2ca109 100644 (file)
@@ -98,7 +98,10 @@ test('T3064',
      compile,
      [''])
 
-test('T4007', normal, makefile_test, ['T4007'])
+test('T4007',
+     normal,
+     run_command,
+     ['$MAKE -s --no-print-directory T4007'])
 
 test('T5030',
      [collect_compiler_stats('bytes allocated', 10),
index 2273ddd..6095317 100644 (file)
@@ -93,7 +93,7 @@ test('T4321',
      omit_ways(['ghci']),
      compile_and_run, ['-O ' + sse2_opts])
 
-test('T3736', [], makefile_test, ['T3736'])
+test('T3736', [], run_command, ['$MAKE -s --no-print-directory T3736'])
 test('T3738',
      [extra_clean(['T3738a.hi', 'T3738a.o']),
       collect_stats('peak_megabytes_allocated', 0),
@@ -110,14 +110,15 @@ test('MethSharing',
       ],
      compile_and_run,
      ['-O'])
-test('T2902', [], makefile_test, ['T2902'])
+test('T2902', [], run_command, ['$MAKE -s --no-print-directory T2902'])
 test('T149',
      [ # expect_broken(149),
        # working (2 Jul 2013, x86-64/Linux)
       extra_clean(['T149_A',    'T149_B',
                    'T149_A.hi', 'T149_B.hi',
                    'T149_A.o',  'T149_B.o'])],
-     makefile_test, ['T149'])
+     run_command,
+     ['$MAKE -s --no-print-directory T149'])
 
 test('T5113',
      [collect_stats('bytes allocated',5),
index 7570938..30b8fd6 100644 (file)
@@ -9,7 +9,7 @@ test('plugins01',
      [extra_files(['simple-plugin/']), only_ways([config.ghc_plugin_way]),
       when(opsys('mingw32'), multi_cpu_race),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins01 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins01'])
 
 test('plugins02',
      [extra_files(['simple-plugin/']), only_ways([config.ghc_plugin_way]),
@@ -49,103 +49,103 @@ test('plugins07',
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C rule-defining-plugin package.plugins07 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins07'])
 
 test('plugins08',
      [extra_files(['simple-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins08 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins08'])
 
 test('plugins09',
      [extra_files(['simple-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins09 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins09'])
 
 test('plugins10',
      [extra_files(['simple-plugin/', 'QuasiQuotation.hs']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins10 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins10'])
 
 test('plugins11',
      [extra_files(['simple-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins11 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins11'])
 
 test('plugins12',
      [extra_files(['simple-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins12 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins12'])
 
 test('plugins13',
      [extra_files(['simple-plugin/', 'PluginFilteredExport.hs']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins13 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins13'])
 
 test('plugins14',
      [extra_files(['simple-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins14 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins14'])
 
 test('plugins15',
      [extra_files(['simple-plugin/', 'MetaRemoveHelper.hs']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins15 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugins15'])
 
 test('T10420',
      [extra_files(['rule-defining-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C rule-defining-plugin package.T10420 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T10420'])
 
 test('T10294',
      [extra_files(['annotation-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C annotation-plugin package.T10294 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T10294'])
 
 test('T10294a',
      [extra_files(['annotation-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C annotation-plugin package.T10294a TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T10294a'])
 
 test('frontend01', [extra_files(['FrontendPlugin.hs']),
                     only_ways([config.ghc_plugin_way]),
                     when(opsys('mingw32'), multi_cpu_race),
-                    unless(have_dynamic(), expect_broken(10301))],
-     makefile_test, [])
+                    unless(have_dynamic(), expect_broken(10301))], run_command,
+     ['$MAKE -s --no-print-directory frontend01'])
 
 test('T11244',
      [extra_files(['rule-defining-plugin/']),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C rule-defining-plugin package.T11244 TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T11244'])
 
 test('T12567a',
      [extra_files(['T12567b.hs', 'simple-plugin/']),
       when(opsys('mingw32'), multi_cpu_race),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.T12567a TOP={top}')],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T12567a'])
 
 test('T14335',
      [extra_files(['simple-plugin/', 'plugins01.hs']),
@@ -162,7 +162,7 @@ test('plugin-recomp-pure',
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}')
       ],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugin-recomp-pure'])
 
 test('plugin-recomp-impure',
      [extra_files(['plugin-recomp/', 'plugin-recomp-test.hs']),
@@ -170,7 +170,7 @@ test('plugin-recomp-impure',
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}')
       ],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugin-recomp-impure'])
 
 test('plugin-recomp-flags',
      [extra_files(['plugin-recomp/', 'plugin-recomp-test.hs']),
@@ -178,14 +178,14 @@ test('plugin-recomp-flags',
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}')
       ],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugin-recomp-flags'])
 
 test('plugin-recomp-change',
      [extra_files(['plugin-recomp/', 'plugin-recomp-test.hs']),
       only_ways([config.ghc_plugin_way]),
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}')
       ],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugin-recomp-change'])
 
 test('plugin-recomp-change-prof',
      [extra_files(['plugin-recomp/', 'plugin-recomp-test.hs']),
@@ -193,7 +193,7 @@ test('plugin-recomp-change-prof',
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}'),
       when(not config.have_profiling,skip)
       ],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory plugin-recomp-change-prof'])
 
 test('static-plugins',
      [extra_files(['simple-plugin/']),
@@ -214,4 +214,4 @@ test('T16104',
      [extra_files(['T16104-plugin/']),
       pre_cmd('$MAKE -s --no-print-directory -C T16104-plugin package.T16104-plugin TOP={top}')
      ],
-     makefile_test, [])
+     run_command, ['$MAKE -s --no-print-directory T16104'])
index 9c34ed4..21de7f8 100644 (file)
@@ -25,7 +25,7 @@ test('T5771', normal, compile, [''])
 test('T5717', normal, compile, [''])
 test('T5862', normal, compile, [''])
 test('T5912', normal, compile, [''])
-test('T5881', normal, makefile_test, [])
+test('T5881', normal, run_command, ['$MAKE -s --no-print-directory T5881'])
 test('T5716', normal, compile_fail, [''])
 test('T5716a', normal, compile_fail, [''])
 test('T5937', normal, compile, [''])
@@ -35,13 +35,13 @@ test('T5948', normal, compile, [''])
 test('T6020', normal, compile, [''])
 test('T6035', normal, compile, [''])
 test('T6036', normal, compile, [''])
-test('T6025', normal, makefile_test, [])
+test('T6025', normal, run_command, ['$MAKE -s --no-print-directory T6025'])
 test('T6002', normal, compile, [''])
 test('T6039', normal, compile, [''])
 test('T6021', normal, compile, [''])
 test('T6020a', normal, compile, [''])
 test('T6044', normal, compile, [''])
-test('T6054', normal, makefile_test, [])
+test('T6054', normal, run_command, ['$MAKE -s --no-print-directory T6054'])
 test('T6081', normal, compile, [''])
 test('T6015', normal, compile, [''])
 test('T6015a', normal, compile, [''])
@@ -55,7 +55,7 @@ test('T6129', normal, compile_fail,[''])
 test('T7053', normal, compile,[''])
 test('T7053a', normal, compile,[''])
 test('T7020', normal, compile,[''])
-test('T7022', normal, makefile_test, [])
+test('T7022', normal, run_command, ['$MAKE -s --no-print-directory T7022'])
 test('T7073', normal, compile,[''])
 test('T7128', normal, compile,[''])
 test('T7151', normal, compile_fail,[''])
@@ -73,7 +73,7 @@ test('T7347', normal, compile,[''])
 test('T7341', normal, compile_fail,[''])
 test('T7422', normal, compile,[''])
 test('T7433', normal, compile_fail,[''])
-test('T7438', normal, makefile_test, [])
+test('T7438', normal, run_command, ['$MAKE -s --no-print-directory T7438'])
 test('T7404', normal, compile,[''])
 test('T7502', normal, compile,[''])
 test('T7488', normal, compile,[''])
@@ -87,7 +87,7 @@ test('T7939a', normal, compile_fail, [''])
 test('T8132', normal, compile_fail, [''])
 test('T8359', normal, compile, [''])
 test('T8391', normal, compile, [''])
-test('T8449', normal, makefile_test, [])
+test('T8449', normal, run_command, ['$MAKE -s --no-print-directory T8449'])
 test('T8534', normal, compile, [''])
 test('T8566', normal, compile_fail,[''])
 test('T8616', normal, compile_fail,[''])
@@ -99,7 +99,7 @@ test('T9106', normal, compile_fail, [''])
 test('T9144', normal, compile_fail, [''])
 test('T9222', normal, compile_fail, [''])
 test('T9264', normal, compile, [''])
-test('T9263', normal, makefile_test, [])
+test('T9263', normal, run_command, ['$MAKE -s --no-print-directory T9263'])
 test('T9063', normal, compile, [''])
 test('T9200', normal, compile, [''])
 test('T9200b', normal, compile_fail, [''])
index 879d2aa..7f45c74 100644 (file)
@@ -1,59 +1,59 @@
-test('Ppr001', ignore_stderr, makefile_test, ['ppr001'])
-test('Ppr002', ignore_stderr, makefile_test, ['ppr002'])
-test('Ppr003', ignore_stderr, makefile_test, ['ppr003'])
-test('Ppr004', ignore_stderr, makefile_test, ['ppr004'])
-test('Ppr005', ignore_stderr, makefile_test, ['ppr005'])
-test('Ppr006', ignore_stderr, makefile_test, ['ppr006'])
-test('Ppr007', ignore_stderr, makefile_test, ['ppr007'])
-test('Ppr008', ignore_stderr, makefile_test, ['ppr008'])
-test('Ppr009', ignore_stderr, makefile_test, ['ppr009'])
-test('Ppr010', ignore_stderr, makefile_test, ['ppr010'])
-test('Ppr011', ignore_stderr, makefile_test, ['ppr011'])
-test('Ppr012', ignore_stderr, makefile_test, ['ppr012'])
-test('Ppr013', ignore_stderr, makefile_test, ['ppr013'])
-test('Ppr014', ignore_stderr, makefile_test, ['ppr014'])
-test('Ppr015', ignore_stderr, makefile_test, ['ppr015'])
-test('Ppr016', ignore_stderr, makefile_test, ['ppr016'])
-test('Ppr017', ignore_stderr, makefile_test, ['ppr017'])
-test('Ppr018', ignore_stderr, makefile_test, ['ppr018'])
-test('Ppr019', ignore_stderr, makefile_test, ['ppr019'])
-test('Ppr020', ignore_stderr, makefile_test, ['ppr020'])
-test('Ppr021', ignore_stderr, makefile_test, ['ppr021'])
-test('Ppr022', ignore_stderr, makefile_test, ['ppr022'])
-test('Ppr023', ignore_stderr, makefile_test, ['ppr023'])
-test('Ppr024', ignore_stderr, makefile_test, ['ppr024'])
-test('Ppr025', ignore_stderr, makefile_test, ['ppr025'])
-test('Ppr026', ignore_stderr, makefile_test, ['ppr026'])
-test('Ppr027', ignore_stderr, makefile_test, ['ppr027'])
-test('Ppr028', ignore_stderr, makefile_test, ['ppr028'])
-test('Ppr029', ignore_stderr, makefile_test, ['ppr029'])
-test('Ppr030', ignore_stderr, makefile_test, ['ppr030'])
-test('Ppr031', ignore_stderr, makefile_test, ['ppr031'])
-test('Ppr032', ignore_stderr, makefile_test, ['ppr032'])
-test('Ppr033', ignore_stderr, makefile_test, ['ppr033'])
-test('Ppr034', ignore_stderr, makefile_test, ['ppr034'])
-test('Ppr035', ignore_stderr, makefile_test, ['ppr035'])
-test('Ppr036', ignore_stderr, makefile_test, ['ppr036'])
-test('Ppr037', ignore_stderr, makefile_test, ['ppr037'])
-test('Ppr038', ignore_stderr, makefile_test, ['ppr038'])
-test('Ppr039', ignore_stderr, makefile_test, ['ppr039'])
-test('Ppr040', ignore_stderr, makefile_test, ['ppr040'])
-test('Ppr041', ignore_stderr, makefile_test, ['ppr041'])
-test('Ppr042', ignore_stderr, makefile_test, ['ppr042'])
-test('Ppr043', ignore_stderr, makefile_test, ['ppr043'])
-test('Ppr044', ignore_stderr, makefile_test, ['ppr044'])
-test('Ppr045', ignore_stderr, makefile_test, ['ppr045'])
-test('Ppr046', ignore_stderr, makefile_test, ['ppr046'])
-test('Ppr047', expect_fail, makefile_test, ['ppr047'])
-test('Ppr048', ignore_stderr, makefile_test, ['ppr048'])
-test('T13199', ignore_stderr, makefile_test, ['T13199'])
-test('T13050p', ignore_stderr, makefile_test, ['T13050p'])
-test('T13550', ignore_stderr, makefile_test, ['T13550'])
-test('T13942', ignore_stderr, makefile_test, ['T13942'])
-test('T14289', ignore_stderr, makefile_test, ['T14289'])
-test('T14289b', ignore_stderr, makefile_test, ['T14289b'])
-test('T14289c', ignore_stderr, makefile_test, ['T14289c'])
-test('T14306', ignore_stderr, makefile_test, ['T14306'])
+test('Ppr001', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr001'])
+test('Ppr002', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr002'])
+test('Ppr003', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr003'])
+test('Ppr004', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr004'])
+test('Ppr005', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr005'])
+test('Ppr006', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr006'])
+test('Ppr007', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr007'])
+test('Ppr008', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr008'])
+test('Ppr009', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr009'])
+test('Ppr010', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr010'])
+test('Ppr011', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr011'])
+test('Ppr012', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr012'])
+test('Ppr013', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr013'])
+test('Ppr014', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr014'])
+test('Ppr015', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr015'])
+test('Ppr016', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr016'])
+test('Ppr017', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr017'])
+test('Ppr018', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr018'])
+test('Ppr019', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr019'])
+test('Ppr020', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr020'])
+test('Ppr021', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr021'])
+test('Ppr022', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr022'])
+test('Ppr023', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr023'])
+test('Ppr024', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr024'])
+test('Ppr025', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr025'])
+test('Ppr026', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr026'])
+test('Ppr027', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr027'])
+test('Ppr028', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr028'])
+test('Ppr029', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr029'])
+test('Ppr030', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr030'])
+test('Ppr031', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr031'])
+test('Ppr032', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr032'])
+test('Ppr033', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr033'])
+test('Ppr034', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr034'])
+test('Ppr035', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr035'])
+test('Ppr036', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr036'])
+test('Ppr037', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr037'])
+test('Ppr038', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr038'])
+test('Ppr039', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr039'])
+test('Ppr040', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr040'])
+test('Ppr041', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr041'])
+test('Ppr042', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr042'])
+test('Ppr043', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr043'])
+test('Ppr044', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr044'])
+test('Ppr045', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr045'])
+test('Ppr046', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr046'])
+test('Ppr047', expect_fail, run_command, ['$MAKE -s --no-print-directory ppr047'])
+test('Ppr048', ignore_stderr, run_command, ['$MAKE -s --no-print-directory ppr048'])
+test('T13199', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T13199'])
+test('T13050p', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T13050p'])
+test('T13550', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T13550'])
+test('T13942', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T13942'])
+test('T14289', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T14289'])
+test('T14289b', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T14289b'])
+test('T14289c', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T14289c'])
+test('T14306', ignore_stderr, run_command, ['$MAKE -s --no-print-directory T14306'])
 test('T14343', normal, compile_fail, [''])
 test('T14343b', normal, compile_fail, [''])
 test('T15761', normal, compile_fail, [''])
index a29d290..999fa53 100644 (file)
@@ -6,5 +6,5 @@ test('prof002', [only_ways(['normal']), req_profiling], compile_and_run, ['-prof
 test('T2410', [only_ways(['normal']), req_profiling], compile, ['-O2 -prof -fprof-cafs'])
 test('T5889', [only_ways(['normal']), req_profiling, extra_files(['T5889/A.hs', 'T5889/B.hs'])], multimod_compile, ['A B', '-O -prof -fno-prof-count-entries -v0'])
 test('T12790', [only_ways(['normal']), req_profiling], compile, ['-O -prof'])
-test('T14931', [only_ways(['normal']), req_profiling], makefile_test, ['T14931'])
+test('T14931', [only_ways(['normal']), req_profiling], run_command, ['$MAKE -s --no-print-directory T14931'])
 test('T15108', [only_ways(['normal']), req_profiling], compile, ['-O -prof -fprof-auto'])
index f5f696e..9bca86b 100644 (file)
@@ -6,7 +6,8 @@ test('heapprof002',
       extra_run_opts('7')],
      compile_and_run, [''])
 
-test('T11489', [req_profiling], makefile_test, ['T11489'])
+test('T11489', [req_profiling], run_command,
+     ['$MAKE -s --no-print-directory T11489'])
 
 # Below this line, run tests only with profiling ways.
 setTestOpts(req_profiling)
@@ -143,8 +144,9 @@ test('toplevel_scc_1',
 
 test('T12962', [], compile_and_run, [''])
 
-test('T14257', [], makefile_test, ['T14257'])
+test('T14257', [], run_command, ['$MAKE -s --no-print-directory T14257'])
 
 test('T15897',
      [extra_ways(['profasm']), only_ways(['profasm']), run_timeout_multiplier(2)],
-     makefile_test, ['T15897'])
+     run_command,
+     ['$MAKE -s --no-print-directory T15897'])
index 96471f5..a10b8e4 100644 (file)
@@ -1,5 +1,6 @@
 test('T3953', req_interp, compile_fail, [''])
-test('T4150', [expect_broken(4150)], makefile_test, ['T4150'])
+test('T4150', [expect_broken(4150)], run_command,
+     ['$MAKE -s --no-print-directory T4150'])
 test('T5204', req_interp, compile_fail, [''])
 test('T7918',
      [req_interp, extra_run_opts('"' + config.libdir + '"'),
@@ -7,4 +8,5 @@ test('T7918',
      compile_and_run, ['-package ghc ' + config.ghc_th_way_flags])
 test('T14028',
      [req_interp, only_ways(config.ghc_th_way)],
-     makefile_test, ['T14028'])
+     run_command,
+     ['$MAKE -s --no-print-directory T14028'])
index 3a956d7..e119232 100644 (file)
@@ -1 +1,2 @@
-test('rn.prog006', [extra_files(['A.hs', 'B/', 'Main.hs', 'pwd.hs'])], makefile_test, [])
+test('rn.prog006', [extra_files(['A.hs', 'B/', 'Main.hs', 'pwd.hs'])], run_command,
+     ['$MAKE -s --no-print-directory rn.prog006'])
index 0c60360..a7c8da4 100644 (file)
@@ -99,16 +99,17 @@ test('timing001', normal, compile, [''])
 test('timing002', normal, compile, [''])
 test('timing003', normal, compile, [''])
 
-test('T1792_imports', [], makefile_test, ['T1792_imports'])
+test('T1792_imports', [], run_command,
+     ['$MAKE -s --no-print-directory T1792_imports'])
 
-test('T3823', [], makefile_test, ['T3823'])
+test('T3823', [], run_command, ['$MAKE -s --no-print-directory T3823'])
 
-test('T4003', [], makefile_test, ['T4003'])
+test('T4003', [], run_command, ['$MAKE -s --no-print-directory T4003'])
 test('T1789', normal, compile, [''])
 test('T1789_2', normal, compile, [''])
-test('T3449', [], makefile_test, ['T3449'])
-test('T4239', [], makefile_test, ['T4239'])
-test('T4240', [], makefile_test, ['T4240'])
+test('T3449', [], run_command, ['$MAKE -s --no-print-directory T3449'])
+test('T4239', [], run_command, ['$MAKE -s --no-print-directory T4239'])
+test('T4240', [], run_command, ['$MAKE -s --no-print-directory T4240'])
 
 test('T4489', normal, compile, [''])
 test('T4478', normal, compile, [''])
@@ -137,8 +138,8 @@ test('T7336', expect_broken(7336), compile, ['-Wall'])
 
 test('T2435', normal, multimod_compile, ['T2435','-v0'])
 test('T7672', normal, multimod_compile, ['T7672','-v0'])
-test('T7963', [], makefile_test, ['T7963'])
-test('T7969', [], makefile_test, ['T7969'])
+test('T7963', [], run_command, ['$MAKE -s --no-print-directory T7963'])
+test('T7969', [], run_command, ['$MAKE -s --no-print-directory T7969'])
 test('T9127', normal, compile, [''])
 test('T4426', normal, compile_fail, [''])
 test('T9778', normal, compile, ['-fwarn-unticked-promoted-constructors'])
@@ -161,7 +162,7 @@ test('T14487', [], multimod_compile, ['T14487', '-v0'])
 test('T14747', [], multimod_compile, ['T14747', '-v0'])
 test('T15149', [], multimod_compile, ['T15149', '-v0'])
 test('T13064', normal, compile, [''])
-test('T15994', [], makefile_test, ['T15994'])
+test('T15994', [], run_command, ['$MAKE -s --no-print-directory T15994'])
 test('T15798a', normal, compile, [''])
 test('T15798b', normal, compile, [''])
 test('T15798c', normal, compile, [''])
index ce8c5c9..03ee63b 100644 (file)
@@ -110,7 +110,8 @@ test('T9815', normal, compile_fail, [''])
 
 test('T9032',
      normal,
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T9032'])
 test('T10618', normal, compile_fail, [''])
 test('T10668', normal, compile_fail, [''])
 test('T5001b', normal, compile_fail, [''])
index eba86d4..8e7d91b 100644 (file)
@@ -4,7 +4,7 @@ test('Roles7', normal, compile_fail, [''])
 test('Roles8', normal, compile_fail, [''])
 test('Roles10', normal, compile_fail, [''])
 test('Roles11', normal, compile_fail, [''])
-test('Roles12', [], makefile_test, [])
+test('Roles12', [], run_command, ['$MAKE --no-print-directory -s Roles12'])
 test('T8773', normal, compile_fail, [''])
-test('T9204', [], makefile_test, [])
+test('T9204', [], run_command, ['$MAKE --no-print-directory -s T9204'])
 test('RolesIArray', normal, compile_fail, [''])
index 1e04f1b..c24ded2 100644 (file)
@@ -1,9 +1,9 @@
 test('T10672_x64',
      [extra_files(['Main.hs', 'Printf.hs', 'cxxy.cpp']),
       [unless(opsys('mingw32'), skip), unless(arch('x86_64'), skip)]],
-     makefile_test, ['T10672_x64'])
+     run_command, ['$MAKE -s --no-print-directory T10672_x64'])
 
 test('T10672_x86',
      [extra_files(['Main.hs', 'Printf.hs', 'cxxy.cpp']),
       [unless(opsys('mingw32'), skip), unless(arch('i386'), skip)]],
-     makefile_test, ['T10672_x86'])
+     run_command, ['$MAKE -s --no-print-directory T10672_x86'])
index 1fc09e3..6656e7f 100644 (file)
@@ -15,50 +15,59 @@ def normalise_duplicate_errmsg( msg ):
 test('T11223_simple_link',
      [extra_files(['foo.c', 'foo.hs']),
       when(ghc_dynamic(), skip)],
-     makefile_test, ['t_11223_simple_link'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_simple_link'])
 
 test('T11223_simple_link_lib',
      [extra_files(['foo.c', 'foo.hs']),
       when(ghc_dynamic(), skip)],
-     makefile_test, ['t_11223_simple_link_lib'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_simple_link_lib'])
 
 # I'm ignoring the output since for this particular invocation normalise_errmsg
 # isn't being called and I can't figure out why not.
 test('T11223_simple_duplicate',
      [extra_files(['bar.c', 'foo.c', 'foo.hs']),
       when(ghc_dynamic(), skip), ignore_stderr, ignore_stdout, exit_code(2), normalise_errmsg_fun(normalise_duplicate_errmsg)],
-     makefile_test, ['t_11223_simple_duplicate'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_simple_duplicate'])
 
 test('T11223_simple_duplicate_lib',
      [extra_files(['bar.c', 'foo.c', 'foo.hs']),
       when(platform('i386-unknown-mingw32'), expect_broken(13515)),
       when(ghc_dynamic(), skip), normalise_errmsg_fun(normalise_duplicate_errmsg)],
-     makefile_test, ['t_11223_simple_duplicate_lib'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_simple_duplicate_lib'])
 
 test('T11223_simple_unused_duplicate_lib',
      [extra_files(['bar.c', 'foo.c', 'foo.hs']),
       when(ghc_dynamic(), skip)],
-     makefile_test, ['t_11223_simple_unused_duplicate_lib'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_simple_unused_duplicate_lib'])
 
 test('T11223_link_order_a_b_succeed',
      [extra_files(['bar.c', 'foo.c', 'foo2.hs']),
       when(ghc_dynamic(), skip)],
-     makefile_test, ['t_11223_link_order_a_b_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_link_order_a_b_succeed'])
 
 test('T11223_link_order_b_a_succeed',
      [extra_files(['bar.c', 'foo.c', 'foo2.hs']),
       when(ghc_dynamic(), skip)],
-     makefile_test, ['t_11223_link_order_b_a_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_link_order_b_a_succeed'])
 
 test('T11223_link_order_a_b_2_fail',
      [extra_files(['bar.c', 'foo.c', 'foo3.hs']),
       when(ghc_dynamic(), skip), normalise_errmsg_fun(normalise_duplicate_errmsg)],
-     makefile_test, ['t_11223_link_order_a_b_2_fail'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_link_order_a_b_2_fail'])
 
 test('T11223_link_order_b_a_2_succeed',
      [extra_files(['bar.c', 'foo.c', 'foo3.hs']),
       when(ghc_dynamic(), skip)],
-     makefile_test, ['t_11223_link_order_b_a_2_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_link_order_b_a_2_succeed'])
 
 # Weak Symbols are not currently implemented. So Disable all the tests
 # See Note [weak-symbols-support] in Linker.c
@@ -66,29 +75,35 @@ test('T11223_link_order_b_a_2_succeed',
 test('T11223_weak_only_link_fail',
      [extra_files(['power.c', 'power.hs']),
       when(ghc_dynamic(), skip), expect_broken(11817)],
-     makefile_test, ['t_11223_weak_only_link_fail'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_weak_only_link_fail'])
 
 test('T11223_weak_only_link_succeed',
      [extra_files(['power3.hs', 'power_slow.c']),
       when(ghc_dynamic(), skip), expect_broken(11817)],
-     makefile_test, ['t_11223_weak_only_link_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_weak_only_link_succeed'])
 
 test('T11223_weak_both_link_order_a_b_succeed',
      [extra_files(['power.c', 'power3.hs', 'power_slow.c']),
       when(ghc_dynamic(), skip), expect_broken(11817)],
-     makefile_test, ['t_11223_weak_both_link_order_a_b_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_weak_both_link_order_a_b_succeed'])
 
 test('T11223_weak_both_link_order_b_a_succeed',
      [extra_files(['power.c', 'power3.hs', 'power_slow.c']),
       when(ghc_dynamic(), skip), expect_broken(11817)],
-     makefile_test, ['t_11223_weak_both_link_order_b_a_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_weak_both_link_order_b_a_succeed'])
 
 test('T11223_weak_single_link_order_a_b_succeed',
      [extra_files(['power.c', 'power3.hs', 'power_slow.c']),
       when(ghc_dynamic(), skip), expect_broken(11817)],
-     makefile_test, ['t_11223_weak_single_link_order_a_b_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_weak_single_link_order_a_b_succeed'])
 
 test('T11223_weak_single_link_order_b_a_succeed',
      [extra_files(['power.c', 'power3.hs', 'power_slow.c']),
       when(ghc_dynamic(), skip), expect_broken(11817)],
-     makefile_test, ['t_11223_weak_single_link_order_b_a_succeed'])
+     run_command,
+     ['$MAKE -s --no-print-directory t_11223_weak_single_link_order_b_a_succeed'])
index bddcaa3..abff447 100644 (file)
@@ -1,4 +1,4 @@
 test('T12031',
      [extra_files(['bar.c', 'baz.c', 'ExternBug.hs', 'foo.h']),
       unless(opsys('mingw32'), skip)],
-     makefile_test, ['T12031'])
+     run_command, ['$MAKE -s --no-print-directory T12031'])
index 55ada90..f38eda2 100644 (file)
@@ -1,4 +1,4 @@
 test('T12771',
      [extra_files(['foo.c', 'main.hs', 'foo_dll.c']),
       unless(opsys('mingw32'), skip)],
-     makefile_test, ['T12771'])
+     run_command, ['$MAKE -s --no-print-directory T12771'])
index 8219127..9580bc4 100644 (file)
@@ -17,8 +17,8 @@ def normalise_search_dirs (str):
 test('T13082_good',
      [extra_files(['foo.c', 'main.hs', 'foo_dll.c']),
       unless(opsys('mingw32'), skip)],
-     makefile_test, ['T13082_good'])
+     run_command, ['$MAKE -s --no-print-directory T13082_good'])
 
 test('T13082_fail', [extra_files(['main.hs']), unless(opsys('mingw32'), skip),
                      normalise_errmsg_fun(normalise_search_dirs)],
-     makefile_test, ['T13082_fail'])
+     run_command, ['$MAKE -s --no-print-directory T13082_fail'])
index ef7873c..1387e67 100644 (file)
@@ -1,4 +1,4 @@
 test('T14611',
      [extra_files(['foo.c', 'main.hs', 'foo_dll.c']),
       unless(opsys('mingw32'), skip)],
-     makefile_test, ['T14611'])
+     run_command, ['$MAKE -s --no-print-directory T14611'])
index 402764d..5bc6977 100644 (file)
@@ -1,2 +1,2 @@
-test('T15261a', normal, makefile_test, ['T15261a'])
-test('T15261b', normal, makefile_test, ['T15261b'])
+test('T15261a', normal, run_command, ['$MAKE -s --no-print-directory T15261a'])
+test('T15261b', normal, run_command, ['$MAKE -s --no-print-directory T15261b'])
index a2c2079..0773366 100644 (file)
@@ -1,3 +1,3 @@
 test('T15894',
      [extra_files(['copysign.c', 'main.hs']), when(ghc_dynamic(), skip)],
-     makefile_test, ['T15894'])
+     run_command, ['$MAKE -s --no-print-directory T15894'])
index cbc86a5..094140f 100644 (file)
@@ -1 +1,2 @@
-test('T8308', normal, makefile_test, ['T8308'])
+test('T8308', normal,
+     run_command, ['$MAKE -s --no-print-directory T8308'])
index 43c0764..ca8177c 100644 (file)
@@ -64,8 +64,8 @@ test('divbyzero',
      compile_and_run, ['-with-rtsopts="--generate-stack-traces=no"'])
 
 test('outofmem', when(opsys('darwin'), skip),
-                 makefile_test, ['outofmem'])
-test('outofmem2', normal, makefile_test, ['outofmem2'])
+                 run_command, ['$MAKE -s --no-print-directory outofmem'])
+test('outofmem2', normal, run_command, ['$MAKE -s --no-print-directory outofmem2'])
 
 test('T2047', [ignore_stdout, extra_run_opts('+RTS -c -RTS')],
               compile_and_run, ['-package containers'])
@@ -145,15 +145,15 @@ test('traceBinaryEvent', [ omit_ways(['dyn', 'ghci'] + prof_ways),
 test('EventlogOutput1',
      [ extra_files(["EventlogOutput.hs"]),
        omit_ways(['dyn', 'ghci'] + prof_ways) ],
-     makefile_test, ['EventlogOutput1'])
+     run_command, ['$MAKE -s --no-print-directory EventlogOutput1'])
 
 # Test that -ol flag defaults to <program>.eventlog
 test('EventlogOutput2',
      [ extra_files(["EventlogOutput.hs"]),
        omit_ways(['dyn', 'ghci'] + prof_ways) ],
-     makefile_test, ['EventlogOutput2'])
+     run_command, ['$MAKE -s --no-print-directory EventlogOutput2'])
 
-test('T4059', [], makefile_test, ['T4059'])
+test('T4059', [], run_command, ['$MAKE -s --no-print-directory T4059'])
 
 # Test for #4274
 test('exec_signals',
@@ -164,7 +164,7 @@ test('exec_signals',
 
 test('return_mem_to_os', normal, compile_and_run, [''])
 
-test('T4850', when(opsys('mingw32'), expect_broken(4850)), makefile_test, ['T4850'])
+test('T4850', when(opsys('mingw32'), expect_broken(4850)), run_command, ['$MAKE -s --no-print-directory T4850'])
 
 def config_T5250(name, opts):
     if not (config.arch in ['i386','x86_64']):
@@ -180,7 +180,7 @@ test('T5250', [extra_files(['spalign.c']),
                 omit_ways(['ghci']) ],
               compile_and_run, ['spalign.c'])
 
-test('T5423', [], makefile_test, ['T5423'])
+test('T5423', [], run_command, ['$MAKE -s --no-print-directory T5423'])
 
 # Workaround bug #8458: old dlopen opens sections in the wrong order,
 # so we just accept both orders.
@@ -208,22 +208,22 @@ def checkDynAsm(actual_file, normaliser):
 test('T5435_v_asm_a', [extra_files(['T5435.hs', 'T5435_asm.c']),
                      when(arch('powerpc64') or arch('powerpc64le'),
                           expect_broken(11259))],
-     makefile_test, ['T5435_v_asm_a'])
+     run_command, ['$MAKE -s --no-print-directory T5435_v_asm_a'])
 # this one just needs to run on linux, as darwin/mingw32 are covered
 # by the _a test already.
 test('T5435_v_asm_b', [extra_files(['T5435.hs', 'T5435_asm.c']),
                       when(arch('powerpc64') or arch('powerpc64le'),
                           expect_broken(11259)),
                      when(opsys('darwin') or opsys('mingw32'), skip)],
-     makefile_test, ['T5435_v_asm_b'])
+     run_command, ['$MAKE -s --no-print-directory T5435_v_asm_b'])
 test('T5435_v_gcc', [extra_files(['T5435.hs', 'T5435_gcc.c']),
                      when(arch('powerpc64') or arch('powerpc64le'),
                           expect_broken(11259))],
-     makefile_test, ['T5435_v_gcc'])
+     run_command, ['$MAKE -s --no-print-directory T5435_v_gcc'])
 test('T5435_dyn_asm', [extra_files(['T5435.hs', 'T5435_asm.c']),
                        check_stdout(checkDynAsm)],
-     makefile_test, ['T5435_dyn_asm'])
-test('T5435_dyn_gcc', extra_files(['T5435.hs', 'T5435_gcc.c']) , makefile_test, ['T5435_dyn_gcc'])
+     run_command, ['$MAKE -s --no-print-directory T5435_dyn_asm'])
+test('T5435_dyn_gcc', extra_files(['T5435.hs', 'T5435_gcc.c']) , run_command, ['$MAKE -s --no-print-directory T5435_dyn_gcc'])
 
 test('T5993', extra_run_opts('+RTS -k8 -RTS'), compile_and_run, [''])
 
@@ -235,7 +235,7 @@ test('T6006', [ omit_ways(prof_ways + ['ghci']),
                  # needs it.
                compile_and_run, ['T6006_c.c -no-hs-main'])
 
-test('T7037', [], makefile_test, ['T7037'])
+test('T7037', [], run_command, ['$MAKE -s --no-print-directory T7037'])
 
 test('T7087', exit_code(1), compile_and_run, [''])
 test('T7160', normal, compile_and_run, [''])
@@ -277,7 +277,7 @@ test('T8035', normal, compile_and_run, [''])
 test('linker_unload',
      [extra_files(['LinkerUnload.hs', 'Test.hs']),
       when(arch('powerpc64') or arch('powerpc64le'), expect_broken(11259))],
-     makefile_test, ['linker_unload'])
+     run_command, ['$MAKE -s --no-print-directory linker_unload'])
 
 test('T8209', [ req_smp, only_ways(threaded_ways), ignore_stdout ],
               compile_and_run, [''])
@@ -328,13 +328,16 @@ test('overflow2', [ exit_code(251) ], compile_and_run, [''])
 test('overflow3', [ exit_code(251) ], compile_and_run, [''])
 
 test('linker_error1', [extra_files(['linker_error.c']),
-                       ignore_stderr], makefile_test, ['linker_error1'])
+                       ignore_stderr], run_command,
+     ['$MAKE -s --no-print-directory linker_error1'])
 
 test('linker_error2', [extra_files(['linker_error.c']),
-                       ignore_stderr], makefile_test, ['linker_error2'])
+                       ignore_stderr], run_command,
+     ['$MAKE -s --no-print-directory linker_error2'])
 
 test('linker_error3', [extra_files(['linker_error.c']),
-                       ignore_stderr], makefile_test, ['linker_error3'])
+                       ignore_stderr], run_command,
+     ['$MAKE -s --no-print-directory linker_error3'])
 
 def grep_stderr(pattern):
     def wrapper(cmd, pattern=pattern):
@@ -384,12 +387,14 @@ test('T10904', [ omit_ways(['ghci']), extra_run_opts('20000') ],
 test('T10728', [extra_run_opts('+RTS -maxN3 -RTS'), only_ways(['threaded2'])],
                compile_and_run, [''])
 
-test('T9405', [when(msys(), expect_broken(12714))], makefile_test, ['T9405'])
+test('T9405', [when(msys(), expect_broken(12714))], run_command,
+     ['$MAKE -s --no-print-directory T9405'])
 
 test('T11788', when(ghc_dynamic(), skip),
-              makefile_test, ['T11788'])
+              run_command, ['$MAKE -s --no-print-directory T11788'])
 
-test('T10296a', [req_smp], makefile_test, ['T10296a'])
+test('T10296a', [req_smp], run_command,
+     ['$MAKE -s --no-print-directory T10296a'])
 
 test('T10296b', [only_ways('threaded2')], compile_and_run, [''])
 
@@ -398,10 +403,10 @@ test('numa001', [ extra_run_opts('8'), unless(unregisterised(), extra_ways(['deb
 
 test('T12497', [ unless(opsys('mingw32'), skip)
                ],
-               makefile_test, ['T12497'])
+               run_command, ['$MAKE -s --no-print-directory T12497'])
 
 test('T13617', [ unless(opsys('mingw32'), skip)],
-               makefile_test, ['T13617'])
+               run_command, ['$MAKE -s --no-print-directory T13617'])
 
 # This test sometimes produces out of sequence samples in the profasm way, but
 # not reliably, so we just skip it. See ticket #15065.
@@ -416,7 +421,8 @@ test('T13894', normal, compile_and_run, [''])
 # this test fails with the profasm way on some machines but not others,
 # so we just skip it.
 test('T14497', [omit_ways(['profasm']), multi_cpu_race], compile_and_run, ['-O'])
-test('T14695', [normal, ignore_stderr], makefile_test, ['T14695'])
+test('T14695', [normal, ignore_stderr]
+             , run_command, ['$MAKE -s --no-print-directory T14695'])
 test('T14702', [ ignore_stdout
                , when(unregisterised(), skip)
                , only_ways(['threaded1', 'threaded2'])
@@ -425,7 +431,8 @@ test('T14702', [ ignore_stdout
                , compile_and_run, [''])
 
 test('T14900', normal, compile_and_run, ['-package ghc-compact'])
-test('InternalCounters', normal, makefile_test, ['InternalCounters'])
+test('InternalCounters', normal, run_command,
+  ['$MAKE -s --no-print-directory InternalCounters'])
 test('alloccounter1', normal, compile_and_run,
   [
     # avoid allocating stack chunks, which counts as
@@ -454,7 +461,8 @@ test('keep-cafs-fail',
     filter_stdout_lines('Evaluated a CAF|exit.*'),
     ignore_stderr, # on OS X the shell emits an "Abort trap" message to stderr
   ],
-  makefile_test, ['KeepCafsFail'])
+  run_command,
+  ['$MAKE -s --no-print-directory KeepCafsFail'])
 
 # Test the -fkeep-cafs flag
 test('keep-cafs',
@@ -464,5 +472,6 @@ test('keep-cafs',
     when(platform('powerpc64le-unknown-linux'), expect_broken(11261)),
     when(opsys('freebsd'), expect_broken(16035)),
   ],
-  makefile_test, ['KeepCafs'])
+  run_command,
+  ['$MAKE -s --no-print-directory KeepCafs'])
 
index 1b1b9ea..01337bc 100644 (file)
@@ -1,8 +1,11 @@
-test('T7859', req_interp, makefile_test, [])
+test('T7859', req_interp, run_command,
+     ['$MAKE --no-print-directory -s T7859'])
 
-test('T8601', req_interp, makefile_test, [])
+test('T8601', req_interp, run_command,
+     ['$MAKE --no-print-directory -s T8601'])
 
-test('T11247', [req_interp, expect_broken(11247)], makefile_test, [])
+test('T11247', [req_interp, expect_broken(11247)], run_command,
+     ['$MAKE --no-print-directory -s T11247'])
 
 test('T6132', [when(opsys('darwin'), expect_broken(6132))], compile, [''])
 
@@ -10,4 +13,5 @@ test('T-signals-child',
      [ when(opsys('mingw32'), skip), req_interp
      , only_ways(['threaded1', 'threaded2'])
      ],
-     makefile_test, [])
+     run_command,
+     ['$MAKE --no-print-directory -s T-signals-child'])
index dc38031..2807f73 100644 (file)
@@ -35,5 +35,7 @@ test('SafeLang18', normal, compile, [''])
 
 # Test building a package, that trust values are set correctly
 # and can be changed correctly
-#test('SafeRecomp01', normal, makefile_test, [])
+#test('SafeRecomp01',
+#              normal,
+#      run_command, ['$MAKE -s --no-print-directory safeRecomp01'])
 
index 34550f6..df5d5cd 100644 (file)
@@ -1,7 +1,9 @@
-test('Orphans', normal, makefile_test, ['Orphans'])
+test('Orphans', normal, run_command, ['$MAKE -s --no-print-directory Orphans'])
 test('DocsInHiFile0',
      extra_files(['DocsInHiFile.hs']),
-     makefile_test, ['DocsInHiFile0'])
+     run_command,
+     ['$MAKE -s --no-print-directory DocsInHiFile0'])
 test('DocsInHiFile1',
      extra_files(['DocsInHiFile.hs']),
-     makefile_test, ['DocsInHiFile1'])
+     run_command,
+     ['$MAKE -s --no-print-directory DocsInHiFile1'])
index f51b64d..be525b2 100644 (file)
@@ -1,3 +1,4 @@
 test('T16038',
      [extra_files(['A.hs', 'A.hs-boot', 'B.hs'])],
-     makefile_test, [])
+     run_command,
+     ['$MAKE -s --no-print-directory T16038'])
index 06b5e48..1f6ef00 100644 (file)
@@ -45,7 +45,8 @@ test('T1647', normal, compile, ['-fdicts-strict -dcore-lint'])
 
 test('T3234',
      normal,
-     makefile_test, ['T3234'])
+     run_command,
+     ['$MAKE -s --no-print-directory T3234'])
 
 test('T3717', only_ways(['optasm']),
               compile,
@@ -62,32 +63,35 @@ test('T4930', only_ways(['optasm']),
               compile,
               ['-O -ddump-simpl -dsuppress-uniques'])
 
-test('T3055', [], makefile_test, ['T3055'])
+test('T3055', [], run_command, ['$MAKE -s --no-print-directory T3055'])
 
 test('T4306',
      normal,
-     makefile_test, ['T4306'])
+     run_command,
+     ['$MAKE -s --no-print-directory T4306'])
 
 test('T4201',
      normal,
-     makefile_test, ['T4201'])
+     run_command,
+     ['$MAKE -s --no-print-directory T4201'])
 
 test('T3772',
 #      only_ways(['optasm']),
      extra_clean(['T3772_A.hi', 'T3772_A.o']),
-     makefile_test, ['T3772'])
+     run_command, ['$MAKE -s --no-print-directory T3772'])
 
 test('EvalTest',
      normal,
-     makefile_test, ['EvalTest'])
+     run_command,
+     ['$MAKE -s --no-print-directory EvalTest'])
 
 test('T3831', normal, compile, [''])
 test('T4345', normal, compile, [''])
 test('T4398', normal, compile, ['-dsuppress-uniques'])
 
-test('T4903', [], makefile_test, ['T4903'])
+test('T4903', [], run_command, ['$MAKE -s --no-print-directory T4903'])
 
-test('T4918', [], makefile_test, ['T4918'])
+test('T4918', [], run_command, ['$MAKE -s --no-print-directory T4918'])
 
 # This test flips too and fro about whether it passes
 # I'm not sure why it is so delicate, but it greps the
@@ -95,15 +99,18 @@ test('T4918', [], makefile_test, ['T4918'])
 # be very stable
 test('T4945',
      normal,
-     makefile_test, ['T4945'])
+     run_command,
+     ['$MAKE -s --no-print-directory T4945'])
 
 test('T4957',
      normal,
-     makefile_test, ['T4957'])
+     run_command,
+     ['$MAKE -s --no-print-directory T4957'])
 
 test('T5168',
      normal,
-     makefile_test, ['T5168'])
+     run_command,
+     ['$MAKE -s --no-print-directory T5168'])
 
&n