Skip to content
Snippets Groups Projects
  1. May 07, 2024
    • Arsen Arsenović's avatar
      Add the cmm_cpp_is_gcc predicate to the testsuite · 4d59abf2
      Arsen Arsenović authored and Marge Bot's avatar Marge Bot committed
      A future C-- test called T24474-cmm-override-g0 relies on the
      GCC-specific behaviour of -g3 implying -dD, which, in turn, leads to it
      emitting #defines past the preprocessing stage.  Clang, at least, does
      not do this, so the test would fail if ran on Clang.
      
      As the behaviour here being tested is ``-optCmmP-g3'' undoing effects of
      the workaround we apply as a fix for bug #24474, and the workaround was
      for GCC-specific behaviour, the test needs to be marked as fragile on
      other compilers.
      4d59abf2
  2. May 02, 2024
  3. Jul 14, 2023
  4. Jul 05, 2023
  5. Jun 13, 2023
  6. Apr 27, 2023
  7. Mar 30, 2023
  8. Feb 06, 2023
    • Sylvain Henry's avatar
      JS: replace "js" architecture with "javascript" · 6636b670
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      
      Despite Cabal supporting any architecture name, `cabal --check` only
      supports a few built-in ones. Sadly `cabal --check` is used by Hackage
      hence using any non built-in name in a package (e.g. `arch(js)`) is
      rejected and the package is prevented from being uploaded on Hackage.
      
      Luckily built-in support for the `javascript` architecture was added for
      GHCJS a while ago. In order to allow newer `base` to be uploaded on
      Hackage we make the switch from `js` to `javascript` architecture.
      
      Fixes #22740.
      
      Co-authored-by: default avatarBen Gamari <ben@smart-cactus.org>
      6636b670
  9. Jan 28, 2023
  10. Jan 18, 2023
    • Sylvain Henry's avatar
      testsuite: req_smp --> req_target_smp, req_ghc_smp · 06036d93
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      See #22630 and !9552
      
      This commit:
       - splits req_smp into req_target_smp and req_ghc_smp
       - changes the testsuite driver to calculate req_ghc_smp
       - changes a handful of tests to use req_target_smp instead of req_smp
       - changes a handful of tests to use req_host_smp when needed
      
      The problem:
       - the problem this solves is the ambiguity surrounding req_smp
       - on master req_smp was used to express the constraint that the program
       being compiled supports smp _and_ that the host RTS (i.e., the RTS used
       to compile the program) supported smp. Normally that is fine, but in
       cross compilation this is not always the case as was discovered in #22630.
      
      The solution:
       - Differentiate the two constraints:
         - use req_target_smp to say the RTS the compiled program is linked
         with (and the platform) supports smp
         - use req_host_smp to say the RTS the host is linked with supports smp
      
      WIP: fix req_smp (target vs ghc)
      
      add flag to separate bootstrapper
      
      split req_smp -> req_target_smp and req_ghc_smp
      
      update tests smp flags
      
      cleanup and add some docstrings
      
      only set ghc_with_smp to bootstrapper on S1 or CC
      
      Only set ghc_with_smp to bootstrapperWithSMP of when testing stage 1
      and cross compiling
      
      test the RTS in config/ghc not hadrian
      
      re-add ghc_with_smp
      
      fix and align req names
      
      fix T11760 to use req_host_smp
      
      test the rts directly, avoid python 3.5 limitation
      
      test the compiler in a try block
      
      align out of tree and in tree withSMP flags
      
      mark failing tests as host req smp
      
      testsuite: req_host_smp --> req_ghc_smp
      
      Fix ghc vs host, fix ghc_with_smp leftover
      06036d93
  11. Nov 29, 2022
  12. Oct 17, 2022
  13. Jul 26, 2022
  14. Jul 17, 2022
  15. Jun 27, 2022
    • Ben Gamari's avatar
      testsuite: Hide output from test compilations with verbosity==2 · 79ae2d89
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously the output from test compilations used to determine whether,
      e.g., profiling libraries are available was shown with verbosity
      levels >= 2. However, the default level is 2, meaning that most users
      were often spammed with confusing errors. Fix this by bumping the
      verbosity threshold for this output to >=3.
      
      Fixes #21760.
      79ae2d89
  16. Apr 27, 2022
    • Ben Gamari's avatar
      Enable eventlog support in all ways by default · ee11d043
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Here we deprecate the eventlogging RTS ways and instead enable eventlog
      support in the remaining ways. This simplifies packaging and reduces GHC
      compilation times (as we can eliminate two whole compilations of the RTS)
      while simplifying the end-user story. The trade-off is a small increase
      in binary sizes in the case that the user does not want eventlogging
      support, but we think that this is a fine trade-off.
      
      This also revealed a latent RTS bug: some files which included `Cmm.h`
      also assumed that it defined various macros which were in fact defined
      by `Config.h`, which `Cmm.h` did not include. Fixing this in turn
      revealed that `StgMiscClosures.cmm` failed to import various spinlock
      statistics counters, as evidenced by the failed unregisterised build.
      
      Closes #18948.
      ee11d043
  17. Apr 25, 2022
    • Ben Gamari's avatar
      testsuite: More robust library way detection · 18e5103f
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously `test.mk` would try to determine whether the dynamic,
      profiling, and vanilla library ways are available by searching for
      `PrimOpWrappers.{,dyn_,p_}hi` in directory reported by `ghc-pkg field
      ghc-prim library-dirs`. However, this is extremely fragile as
      there is no guarantee that there is only one library directory. To
      handle the case of multiple `library-dirs` correct we would
      have to carry out the delicate task of tokenising the directory list (in
      shell, no less).
      
      Since this isn't a task that I am eager to solve, I have rather moved
      the detection logic into the testsuite driver and instead perform a test
      compilation in each of the ways. This should be more robust than the
      previous approach.
      
      I stumbled upon this while fixing #20579.
      18e5103f
  18. Apr 06, 2022
  19. Feb 04, 2022
    • Matthew Pickering's avatar
      testsuite: Run testsuite dependency calculation before GHC is built · 62d670eb
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      The main motivation for this patch is to allow tests to be added to the
      testsuite which test things about the source tree without needing to
      build GHC. In particular the notes linter can easily start failing and
      by integrating it into the testsuite the  process of observing these
      changes is caught by normal validation procedures rather than having to
      run the linter specially.
      
      With this patch I can run
      
      ```
      ./hadrian/build test --flavour=devel2  --only="uniques"
      ```
      
      In a clean tree to run the checkUniques linter without having to build
      GHC.
      
      Fixes #21029
      62d670eb
  20. Feb 03, 2022
    • Matthew Pickering's avatar
      Remove ghc_plugin_way · d820f2e8
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      Using ghc_plugin_way had the unintended effect of meaning certain tests
      weren't run at all when ghc_dynamic=true, if you delete this modifier
      then the tests work in both the static and dynamic cases.
      d820f2e8
  21. Oct 12, 2021
    • Ben Gamari's avatar
      testsuite: Clean up dynlib support predicates · 05303f68
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously it was unclear whether req_shared_libs should require:
      
       * that the platform supports dynamic library loading,
       * that GHC supports dynamic linking of Haskell code, or
       * that the dyn way libraries were built
      
      Clarify by splitting the predicate into two:
      
       * `req_dynamic_lib_support` demands that the platform support dynamic
         linking
       * `req_dynamic_hs` demands that the GHC support dynamic linking of
         Haskell code on the target platform
      
      Naturally `req_dynamic_hs` cannot be true unless
      `req_dynamic_lib_support` is also true.
      05303f68
  22. Aug 11, 2021
    • Sven Tennie's avatar
      Optimize Info Table Provenance Entries (IPEs) Map creation and lookup · f5fdace5
      Sven Tennie authored and Marge Bot's avatar Marge Bot committed
      Using a hash map reduces the complexity of lookupIPE(), making it non linear.
      
      On registration each IPE list is added to a temporary IPE lists buffer, reducing
      registration time. The hash map is built lazily on first lookup.
      
      IPE event output to stderr is added with tests.
      
      For details, please see
      Note [The Info Table Provenance Entry (IPE) Map].
      
      A performance test for IPE registration and lookup can be found here:
      !5724 (comment 370806)
      f5fdace5
  23. Apr 07, 2021
    • Sylvain Henry's avatar
      Remove dynamic-by-default (#16782) · d014ab0d
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      Dynamic-by-default was a mechanism to automatically select the -dynamic
      way for some targets.
      
      It was implemented in a convoluted way: it was defined as a flavour
      option, hence it couldn't be passed as a global settings (which are
      produced by `configure` before considering flavours), so a build system
      rule was used to pass -DDYNAMIC_BY_DEFAULT to the C compiler so that
      deriveConstants could infer it.
      
      * Make build system has it disabled for 8 years (951e28c0)
      * It has never been implemented in Hadrian
      * Last time someone tried to enable it 1 year ago it didn't work (!2436)
      * Having this as a global constant impedes making GHC multi-target (see !5427)
      
      This commit fully removes support for dynamic-by-default. If someone
      wants to reimplement something like this, it would probably need to move
      the logic in the compiler.
      
      (Doing this would probably need some refactoring of the way the compiler
      handles DynFlags: DynFlags are used to store and to pass enabled ways to
      many parts of the compiler. It can be set by command-line flags, GHC
      API, global settings. In multi-target GHC, we will use DynFlags to load
      the target platform and its constants: but at this point with the
      current DynFlags implementation we can't easily update the existing
      DynFlags with target-specific options such as dynamic-by-default without
      overriding ways previously set by the user.)
      d014ab0d
  24. Jan 27, 2021
    • Matthew Pickering's avatar
      Deprecate -h flag · 92573883
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      It is confusing that it defaults to two different things depending on
      whether we are in the profiling way or not.
      
      Use -hc if you have a profiling build
      Use -hT if you have a normal build
      
      Fixes #19031
      92573883
  25. Aug 19, 2020
    • Ben Gamari's avatar
      testsuite: Only run llvm ways if llc is available · aa4b744d
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      As noted in #18560, we previously would always run the LLVM ways since
      `configure` would set `SettingsLlcCommand` to something non-null when
      it otherwise couldn't find the `llc` executable. Now we rather probe for
      the existence of the `llc` executable in the testsuite driver.
      
      Fixes #18560.
      aa4b744d
  26. Jul 15, 2020
  27. Apr 09, 2020
    • Ömer Sinan Ağacan's avatar
      Fix CNF handling in compacting GC · 39075176
      Ömer Sinan Ağacan authored and Marge Bot's avatar Marge Bot committed
      Fixes #17937
      
      Previously compacting GC simply ignored CNFs. This is mostly fine as
      most (see "What about small compacts?" below) CNF objects don't have
      outgoing pointers, and are "large" (allocated in large blocks) and large
      objects are not moved or compacted.
      
      However if we do GC *during* sharing-preserving compaction then the CNF
      will have a hash table mapping objects that have been moved to the CNF
      to their location in the CNF, to be able to preserve sharing.
      
      This case is handled in the copying collector, in `scavenge_compact`,
      where we evacuate hash table entries and then rehash the table.
      
      Compacting GC ignored this case.
      
      We now visit CNFs in all generations when threading pointers to the
      compacted heap and thread hash table keys. A visited CNF is added to the
      list `nfdata_chain`. After compaction is done, we re-visit the CNFs in
      that list and rehash the tables.
      
      The overhead is minimal: the list is static in `Compact.c`, and link
      field is added to `StgCompactNFData` closure. Programs that don't use
      CNFs should not be affected.
      
      To test this CNF tests are now also run in a new way 'compacting_gc',
      which just passes `-c` to the RTS, enabling compacting GC for the oldest
      generation. Before this patch the result would be:
      
          Unexpected failures:
             compact_gc.run          compact_gc [bad exit code (139)] (compacting_gc)
             compact_huge_array.run  compact_huge_array [bad exit code (1)] (compacting_gc)
      
      With this patch all tests pass. I can also pass `-c -DS` without any
      failures.
      
      What about small compacts? Small CNFs are still not handled by the
      compacting GC. However so far I'm unable to write a test that triggers a
      runtime panic ("update_fwd: unknown/strange object") by allocating a
      small CNF in a compated heap. It's possible that I'm missing something
      and it's not possible to have a small CNF.
      
      NoFib Results:
      
      --------------------------------------------------------------------------------
              Program           Size    Allocs    Instrs     Reads    Writes
      --------------------------------------------------------------------------------
                   CS          +0.1%      0.0%      0.0%     +0.0%     +0.0%
                  CSD          +0.1%      0.0%      0.0%      0.0%      0.0%
                   FS          +0.1%      0.0%      0.0%      0.0%      0.0%
                    S          +0.1%      0.0%      0.0%      0.0%      0.0%
                   VS          +0.1%      0.0%      0.0%      0.0%      0.0%
                  VSD          +0.1%      0.0%     +0.0%     +0.0%     -0.0%
                  VSM          +0.1%      0.0%     +0.0%     -0.0%      0.0%
                 anna          +0.0%      0.0%     -0.0%     -0.0%     -0.0%
                 ansi          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                 atom          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               awards          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               banner          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
           bernouilli          +0.1%      0.0%      0.0%     -0.0%     +0.0%
         binary-trees          +0.1%      0.0%     -0.0%     -0.0%      0.0%
                boyer          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               boyer2          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                 bspt          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
            cacheprof          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
             calendar          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             cichelli          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
              circsim          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             clausify          +0.1%      0.0%     -0.0%     +0.0%     +0.0%
        comp_lab_zift          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             compress          +0.1%      0.0%     +0.0%     +0.0%      0.0%
            compress2          +0.1%      0.0%     -0.0%      0.0%      0.0%
          constraints          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
         cryptarithm1          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
         cryptarithm2          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                  cse          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
         digits-of-e1          +0.1%      0.0%     +0.0%     -0.0%     -0.0%
         digits-of-e2          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
               dom-lt          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                eliza          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                event          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
          exact-reals          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               exp3_8          +0.1%      0.0%     +0.0%     -0.0%      0.0%
               expert          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
       fannkuch-redux          +0.1%      0.0%     -0.0%      0.0%      0.0%
                fasta          +0.1%      0.0%     -0.0%     +0.0%     +0.0%
                  fem          +0.1%      0.0%     -0.0%     +0.0%      0.0%
                  fft          +0.1%      0.0%     -0.0%     +0.0%     +0.0%
                 fft2          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             fibheaps          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                 fish          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                fluid          +0.0%      0.0%     +0.0%     +0.0%     +0.0%
               fulsom          +0.1%      0.0%     -0.0%     +0.0%      0.0%
               gamteb          +0.1%      0.0%     +0.0%     +0.0%      0.0%
                  gcd          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
          gen_regexps          +0.1%      0.0%     -0.0%     +0.0%      0.0%
               genfft          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                   gg          +0.1%      0.0%      0.0%     +0.0%     +0.0%
                 grep          +0.1%      0.0%     -0.0%     +0.0%     +0.0%
               hidden          +0.1%      0.0%     +0.0%     -0.0%      0.0%
                  hpg          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
                  ida          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                infer          +0.1%      0.0%     +0.0%      0.0%     -0.0%
              integer          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
            integrate          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
         k-nucleotide          +0.1%      0.0%     +0.0%     +0.0%      0.0%
                kahan          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
              knights          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
               lambda          +0.1%      0.0%     +0.0%     +0.0%     -0.0%
           last-piece          +0.1%      0.0%     +0.0%      0.0%      0.0%
                 lcss          +0.1%      0.0%     +0.0%     +0.0%      0.0%
                 life          +0.1%      0.0%     -0.0%     +0.0%     +0.0%
                 lift          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               linear          +0.1%      0.0%     -0.0%     +0.0%      0.0%
            listcompr          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             listcopy          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             maillist          +0.1%      0.0%     +0.0%     -0.0%     -0.0%
               mandel          +0.1%      0.0%     +0.0%     +0.0%      0.0%
              mandel2          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                 mate          +0.1%      0.0%     +0.0%      0.0%     +0.0%
              minimax          +0.1%      0.0%     -0.0%      0.0%     -0.0%
              mkhprog          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
           multiplier          +0.1%      0.0%     +0.0%      0.0%      0.0%
               n-body          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             nucleic2          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                 para          +0.1%      0.0%      0.0%     +0.0%     +0.0%
            paraffins          +0.1%      0.0%     +0.0%     -0.0%      0.0%
               parser          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
              parstof          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                  pic          +0.1%      0.0%     -0.0%     -0.0%      0.0%
             pidigits          +0.1%      0.0%     +0.0%     -0.0%     -0.0%
                power          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               pretty          +0.1%      0.0%     -0.0%     -0.0%     -0.1%
               primes          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
            primetest          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
               prolog          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
               puzzle          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
               queens          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
              reptile          +0.1%      0.0%     -0.0%     -0.0%     +0.0%
      reverse-complem          +0.1%      0.0%     +0.0%      0.0%     -0.0%
              rewrite          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
                 rfib          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                  rsa          +0.1%      0.0%     -0.0%     +0.0%     -0.0%
                  scc          +0.1%      0.0%     -0.0%     -0.0%     -0.1%
                sched          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                  scs          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               simple          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
                solid          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
              sorting          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
        spectral-norm          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
               sphere          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
               symalg          +0.1%      0.0%     -0.0%     -0.0%     -0.0%
                  tak          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
            transform          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
             treejoin          +0.1%      0.0%     +0.0%     -0.0%     -0.0%
            typecheck          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
              veritas          +0.0%      0.0%     +0.0%     +0.0%     +0.0%
                 wang          +0.1%      0.0%      0.0%     +0.0%     +0.0%
            wave4main          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
         wheel-sieve1          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
         wheel-sieve2          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
                 x2n1          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
      --------------------------------------------------------------------------------
                  Min          +0.0%      0.0%     -0.0%     -0.0%     -0.1%
                  Max          +0.1%      0.0%     +0.0%     +0.0%     +0.0%
       Geometric Mean          +0.1%     -0.0%     -0.0%     -0.0%     -0.0%
      
      Bumping numbers of nonsensical perf tests:
      
      Metric Increase:
          T12150
          T12234
          T12425
          T13035
          T5837
          T6048
      
      It's simply not possible for this patch to increase allocations, and
      I've wasted enough time on these test in the past (see #17686). I think
      these tests should not be perf tests, but for now I'll bump the numbers.
      39075176
  28. Dec 17, 2019
    • Ben Gamari's avatar
      testsuite: Make ghc_built_by_llvm check more precise · 6ea4eb4b
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously it would hackily look at the flavour name to determine
      whether LLVM was used to build stage2 ghc. However, this didn't work at
      all with Hadrian and would miss cases like ARM where we use the LLVM
      backend by default.
      
      See #16087 for the motivation for why ghc_built_by_llvm is needed at
      all. This should catch one of the ARMv7 failures described in #17555.
      6ea4eb4b
  29. Nov 08, 2019
  30. Oct 22, 2019
  31. Oct 21, 2019
  32. Oct 17, 2019
  33. Sep 11, 2019
  34. Jul 19, 2019
  35. Jun 16, 2019
    • Ben Gamari's avatar
      testsuite: Introduce concurrent_ways set · 0d2a4258
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously we just tested for the threaded2 when determining whether to
      skip tests which are fragile under concurrent execution. However, this
      isn't the only way which is concurrent.
      0d2a4258
  36. Dec 30, 2018
  37. Nov 22, 2018
    • Krzysztof Gogolewski's avatar
      Fix GhostScript detection (Trac #15856) · 011e39d7
      Krzysztof Gogolewski authored
      The option `confdir` (used in GhostScript test) was set correctly
      via `--config` in `test.mk` and incorrectly via `config/ghc`.
      AFAICT, some time ago this was working because the
      incorrect assignment was done first, and later it broke.
      
      Hardian doesn't pass `confdir`. I removed `confdir` and use
      `config.top` to determine the directory of the
      `good.ps` and `bad.ps` files. This is simpler.
      
      I also removed some redundant assignments in `config/ghc`.
      
      Test Plan: manually set config.have_profiling and make test
      
      Reviewers: bgamari
      
      Subscribers: rwbarton, carter
      
      GHC Trac Issues: #15856
      
      Differential Revision: https://phabricator.haskell.org/D5298
      011e39d7
Loading