Commit 76b7f619 authored by Ben Gamari's avatar Ben Gamari 🐢 Committed by Marge Bot

Disable optimisation when building Cabal in development flavours

This updates the make and Hadrian build flavours targetting developers
to disable optimisation when building the Cabal library. Cabal tends to
tickle some very bad compiler performance cases (e.g. #16577) so
disabling optimisation here makes a sizeable impact on overall build
time.

See #16817.
parent 20b4d5ec
Pipeline #7188 failed with stages
in 116 minutes and 52 seconds
packages: ./
../libraries/Cabal/Cabal/
# N.B. Compile with -O0 since this is not a performance-critical executable
# and the Cabal takes nearly twice as long to build with -O1. See #16817.
-- N.B. Compile with -O0 since this is not a performance-critical executable
-- and the Cabal takes nearly twice as long to build with -O1. See #16817.
package Cabal
optimization: False
......@@ -2,6 +2,7 @@ module Settings.Flavours.Development (developmentFlavour) where
import Expression
import Flavour
import Packages
import {-# SOURCE #-} Settings.Default
-- Please update doc/flavours.md when changing this file.
......@@ -17,7 +18,10 @@ developmentArgs :: Stage -> Args
developmentArgs ghcStage = do
stage <- getStage
sourceArgs SourceArgs
{ hsDefault = pure ["-O", "-H64m"]
{ hsDefault = mconcat [ pure ["-O", "-H64m"],
-- Disable optimization when building Cabal;
-- this saves many minutes of build time.
package cabal ? pure ["-O0"]]
, hsLibrary = notStage0 ? arg "-dcore-lint"
, hsCompiler = mconcat [stage0 ? arg "-O2",
succ stage == ghcStage ? pure ["-O0", "-DDEBUG"]]
......
......@@ -10,3 +10,7 @@ BUILD_SPHINX_PDF = NO
BUILD_MAN = NO
LAX_DEPENDENCIES = YES
# Reduce optimisation when building Cabal; this makes a significant difference
# in overall build time. See #16817.
libraries/Cabal_dist-install_HC_OPTS += -O0
......@@ -10,3 +10,7 @@ BUILD_SPHINX_PDF = NO
BUILD_MAN = NO
LAX_DEPENDENCIES = YES
# Reduce optimisation when building Cabal; this makes a significant difference
# in overall build time. See #16817.
libraries/Cabal_dist-install_HC_OPTS += -O0
......@@ -27,6 +27,10 @@ endif
WERROR = -Werror
# Reduce optimisation when building Cabal; this makes a significant difference
# in overall build time. See #16817.
libraries/Cabal_dist-install_HC_OPTS += -O0
# DO NOT EDIT THIS FILE! Instead, create a file mk/validate.mk, whose settings
# will override these. See also mk/custom-settings.mk.
#
......@@ -36,6 +40,7 @@ WERROR = -Werror
#
#
# Note [validate build settings]
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Using GhcStage2HcOpts=-O (rather than -O0) here bringes my validate down from
# 22mins to 16 mins. Compiling stage2 takes longer, but we gain a faster
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment