summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2023-03-02 20:37:05 +0100
committerKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2023-03-02 20:39:58 +0100
commit5659931be14b35bbbb6bdf9f48db78411898611c (patch)
treeb4ac23a23bfa53676e47d3d7b92375a4fdf8d909
parent074a0f97ff51efd691dbaef6458e74d75e6ed916 (diff)
downloadhaskell-wip/hdoc-llvm-workaround.tar.gz
Implement a workaround for -fno-asm-shortcuttingwip/hdoc-llvm-workaround
-rw-r--r--hadrian/src/Oracles/Setting.hs7
-rw-r--r--hadrian/src/Settings/Builders/Ghc.hs1
2 files changed, 7 insertions, 1 deletions
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
index d8492dbe94..368954b736 100644
--- a/hadrian/src/Oracles/Setting.hs
+++ b/hadrian/src/Oracles/Setting.hs
@@ -7,7 +7,7 @@ module Oracles.Setting (
-- * Helpers
ghcCanonVersion, cmdLineLengthLimit, hostSupportsRPaths, topDirectory,
- libsuf, ghcVersionStage, bashPath,
+ libsuf, ghcVersionStage, bashPath, hostNeedsAsmShortcuttingWorkaround,
-- ** Target platform things
anyTargetPlatform, anyTargetOs, anyTargetArch, anyHostOs,
@@ -272,6 +272,11 @@ anyTargetArch = matchSetting TargetArch
anyHostOs :: [String] -> Action Bool
anyHostOs = matchSetting HostOs
+-- | Workaround for #21972. It can be removed once the minimal bootstrapping
+-- compiler has a fix for this bug.
+hostNeedsAsmShortcuttingWorkaround :: Action Bool
+hostNeedsAsmShortcuttingWorkaround = anyHostOs [ "darwin" ]
+
-- | List of OSes that use the ELF object format.
elfOSes :: [String]
elfOSes =
diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs
index 88bd26bd62..946c8802a2 100644
--- a/hadrian/src/Settings/Builders/Ghc.hs
+++ b/hadrian/src/Settings/Builders/Ghc.hs
@@ -57,6 +57,7 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do
, (hasVanilla && hasDynamic) ? builder (Ghc CompileHs) ?
platformSupportsSharedLibs ? way vanilla ?
arg "-dynamic-too"
+ , hostNeedsAsmShortcuttingWorkaround ? stage0 ? arg "-fno-asm-shortcutting"
, commonGhcArgs
, ghcLinkArgs
, defaultGhcWarningsArgs