[Git][haskell-team/DHG_packages][experimental] 2 commits: ghc: newer llvm passes
Clint Adams (@clint)
gitlab at salsa.debian.org
Mon Sep 15 04:38:38 BST 2025
Clint Adams pushed to branch experimental at Debian Haskell Group / DHG_packages
Commits:
85eeb65e by Clint Adams at 2025-09-14T23:25:54-04:00
ghc: newer llvm passes
- - - - -
192cfd70 by Clint Adams at 2025-09-14T23:38:09-04:00
ghc: update LoongArch patch
- - - - -
4 changed files:
- p/ghc/debian/changelog
- + p/ghc/debian/patches/0001-llvmGen-Adapt-to-allow-use-of-new-pass-manager.patch
- p/ghc/debian/patches/0004-llvmGen-Pass-mcmodel-medium-option-to-LLVM-backend-on-LoongArch.patch
- p/ghc/debian/patches/series
Changes:
=====================================
p/ghc/debian/changelog
=====================================
@@ -1,3 +1,15 @@
+ghc (9.8.4-0~0exp4) experimental; urgency=medium
+
+ * Update LoongArch patch.
+
+ -- Clint Adams <clint at debian.org> Sun, 14 Sep 2025 23:36:30 -0400
+
+ghc (9.8.4-0~0exp3) experimental; urgency=medium
+
+ * Patch for new LLVM pass manager.
+
+ -- Clint Adams <clint at debian.org> Sun, 14 Sep 2025 21:37:44 -0400
+
ghc (9.8.4-0~0exp2) experimental; urgency=medium
* Fix buildpath-abi-stability.patch for GHC 9.8 API.
=====================================
p/ghc/debian/patches/0001-llvmGen-Adapt-to-allow-use-of-new-pass-manager.patch
=====================================
@@ -0,0 +1,77 @@
+From 77db84aba1ba00f6d146e9107b24c6203798e796 Mon Sep 17 00:00:00 2001
+From: Ben Gamari <ben at smart-cactus.org>
+Date: Wed, 31 Jan 2024 08:58:58 -0500
+Subject: [PATCH] llvmGen: Adapt to allow use of new pass manager.
+
+We now must use `-passes` in place of `-O<n>` due to #21936.
+
+Closes #21936.
+---
+ compiler/GHC/Driver/DynFlags.hs | 1 -
+ compiler/GHC/Driver/Flags.hs | 2 --
+ compiler/GHC/Driver/Pipeline/Execute.hs | 3 +--
+ compiler/GHC/Driver/Session.hs | 1 -
+ llvm-passes | 6 +++---
+ 5 files changed, 4 insertions(+), 9 deletions(-)
+
+--- a/compiler/GHC/Driver/DynFlags.hs
++++ b/compiler/GHC/Driver/DynFlags.hs
+@@ -1249,7 +1249,6 @@ optLevelFlags :: [([Int], GeneralFlag)]
+ optLevelFlags -- see Note [Documenting optimisation flags]
+ = [ ([0,1,2], Opt_DoLambdaEtaExpansion)
+ , ([0,1,2], Opt_DoEtaReduction) -- See Note [Eta-reduction in -O0]
+- , ([0,1,2], Opt_LlvmTBAA)
+ , ([0,1,2], Opt_ProfManualCcs )
+ , ([2], Opt_DictsStrict)
+
+--- a/compiler/GHC/Driver/Flags.hs
++++ b/compiler/GHC/Driver/Flags.hs
+@@ -285,7 +285,6 @@ data GeneralFlag
+ | Opt_RegsGraph -- do graph coloring register allocation
+ | Opt_RegsIterative -- do iterative coalescing graph coloring register allocation
+ | Opt_PedanticBottoms -- Be picky about how we treat bottom
+- | Opt_LlvmTBAA -- Use LLVM TBAA infrastructure for improving AA (hidden flag)
+ | Opt_LlvmFillUndefWithGarbage -- Testing for undef bugs (hidden flag)
+ | Opt_IrrefutableTuples
+ | Opt_CmmSink
+@@ -525,7 +524,6 @@ optimisationFlags = EnumSet.fromList
+ , Opt_EnableRewriteRules
+ , Opt_RegsGraph
+ , Opt_RegsIterative
+- , Opt_LlvmTBAA
+ , Opt_IrrefutableTuples
+ , Opt_CmmSink
+ , Opt_CmmElimCommonBlocks
+--- a/compiler/GHC/Driver/Pipeline/Execute.hs
++++ b/compiler/GHC/Driver/Pipeline/Execute.hs
+@@ -968,8 +968,7 @@ llvmOptions :: LlvmConfig
+ -> DynFlags
+ -> [(String, String)] -- ^ pairs of (opt, llc) arguments
+ llvmOptions llvm_config dflags =
+- [("-enable-tbaa -tbaa", "-enable-tbaa") | gopt Opt_LlvmTBAA dflags ]
+- ++ [("-relocation-model=" ++ rmodel
++ [("-relocation-model=" ++ rmodel
+ ,"-relocation-model=" ++ rmodel) | not (null rmodel)]
+ ++ [("-stack-alignment=" ++ (show align)
+ ,"-stack-alignment=" ++ (show align)) | align > 0 ]
+--- a/compiler/GHC/Driver/Session.hs
++++ b/compiler/GHC/Driver/Session.hs
+@@ -2401,7 +2401,6 @@ fFlagsDeps = [
+ flagSpec "late-dmd-anal" Opt_LateDmdAnal,
+ flagSpec "late-specialise" Opt_LateSpecialise,
+ flagSpec "liberate-case" Opt_LiberateCase,
+- flagHiddenSpec "llvm-tbaa" Opt_LlvmTBAA,
+ flagHiddenSpec "llvm-fill-undef-with-garbage" Opt_LlvmFillUndefWithGarbage,
+ flagSpec "loopification" Opt_Loopification,
+ flagSpec "block-layout-cfg" Opt_CfgBlocklayout,
+--- a/llvm-passes
++++ b/llvm-passes
+@@ -1,5 +1,5 @@
+ [
+-(0, "-enable-new-pm=0 -mem2reg -globalopt -lower-expect"),
+-(1, "-enable-new-pm=0 -O1 -globalopt"),
+-(2, "-enable-new-pm=0 -O2")
++(0, "-passes=function(require<tbaa>),function(mem2reg),globalopt,function(lower-expect)"),
++(1, "-passes=default<O1>"),
++(2, "-passes=default<O2>")
+ ]
=====================================
p/ghc/debian/patches/0004-llvmGen-Pass-mcmodel-medium-option-to-LLVM-backend-on-LoongArch.patch
=====================================
@@ -9,11 +9,9 @@ Subject: [PATCH] llvmGen: Pass mcmodel medium option to LLVM backend on LoongArc
configure.ac | 2 +-
3 files changed, 36 insertions(+), 3 deletions(-)
-diff --git a/compiler/GHC/CmmToLlvm.hs b/compiler/GHC/CmmToLlvm.hs
-index ea58844..04a542c 100644
--- a/compiler/GHC/CmmToLlvm.hs
+++ b/compiler/GHC/CmmToLlvm.hs
-@@ -190,7 +190,7 @@ cmmLlvmGen _ = return ()
+@@ -196,7 +196,7 @@ cmmLlvmGen _ = return ()
cmmMetaLlvmPrelude :: LlvmM ()
cmmMetaLlvmPrelude = do
@@ -22,7 +20,7 @@ index ea58844..04a542c 100644
-- Generate / lookup meta data IDs
tbaaId <- getMetaUniqueId
setUniqMeta uniq tbaaId
-@@ -203,9 +203,43 @@ cmmMetaLlvmPrelude = do
+@@ -209,10 +209,44 @@ cmmMetaLlvmPrelude = do
-- just a name on its own. Previously `null` was accepted as the
-- name.
Nothing -> [ MetaStr name ]
@@ -36,8 +34,10 @@ index ea58844..04a542c 100644
+ _ -> []
+ module_flags_metas <- mkModuleFlagsMeta code_model_metas
+ let metas = tbaa_metas ++ module_flags_metas
++
cfg <- getConfig
- renderLlvm $ ppLlvmMetas cfg metas
+ renderLlvm (ppLlvmMetas cfg metas)
+ (ppLlvmMetas cfg metas)
+mkNamedMeta :: LMString -> [MetaExpr] -> LlvmM [MetaDecl]
+mkNamedMeta name exprs = do
@@ -61,13 +61,10 @@ index ea58844..04a542c 100644
+ ModuleFlag MFBError "Code Model" (MetaLit $ LMIntLit n i32)
+ where
+ n = case codemodel of CMMedium -> 3 -- as of LLVM 8
-+
+
-- -----------------------------------------------------------------------------
-- | Marks variables as used where necessary
--
-diff --git a/compiler/GHC/Llvm/MetaData.hs b/compiler/GHC/Llvm/MetaData.hs
-index 2b28be4..5d0a996 100644
--- a/compiler/GHC/Llvm/MetaData.hs
+++ b/compiler/GHC/Llvm/MetaData.hs
@@ -2,7 +2,6 @@
@@ -78,19 +75,14 @@ index 2b28be4..5d0a996 100644
, MetaExpr(..)
, MetaAnnot(..)
, MetaDecl(..)
-diff --git a/configure.ac b/configure.ac
-index 02a1eee..0665af5 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -555,7 +555,7 @@ AC_SUBST(InstallNameToolCmd)
+@@ -543,7 +543,7 @@ AC_SUBST(InstallNameToolCmd)
# tools we are looking for. In the past, GHC supported a number of
# versions of LLVM simultaneously, but that stopped working around
# 3.5/3.6 release of LLVM.
-LlvmMinVersion=11 # inclusive
+LlvmMinVersion=13 # inclusive
- LlvmMaxVersion=19 # not inclusive
+ LlvmMaxVersion=20 # not inclusive
AC_SUBST([LlvmMinVersion])
AC_SUBST([LlvmMaxVersion])
---
-2.25.1
-
=====================================
p/ghc/debian/patches/series
=====================================
@@ -26,6 +26,7 @@ alpha-fix-ieee_set_fp_control-invocation.patch
0001-llvmGen-Add-export-list-to-GHC.Llvm.MetaData.patch
0002-llvmGen-Allow-LlvmLits-in-MetaExprs.patch
0003-llvmGen-Introduce-infrastructure-for-module-flag-metadata.patch
-#0004-llvmGen-Pass-mcmodel-medium-option-to-LLVM-backend-on-LoongArch.patch
+0004-llvmGen-Pass-mcmodel-medium-option-to-LLVM-backend-on-LoongArch.patch
0005-Pass-the-mcmodel-medium-parameter-to-CC-via-GHC.patch
hp2ps-gcc15.patch
+0001-llvmGen-Adapt-to-allow-use-of-new-pass-manager.patch
View it on GitLab: https://salsa.debian.org/haskell-team/DHG_packages/-/compare/9c288629abc65f4cd8b2fc912f5105b49f204e99...192cfd7031273166dacda47565ed0aa9811a0f4e
--
View it on GitLab: https://salsa.debian.org/haskell-team/DHG_packages/-/compare/9c288629abc65f4cd8b2fc912f5105b49f204e99...192cfd7031273166dacda47565ed0aa9811a0f4e
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-haskell-commits/attachments/20250915/174dcc10/attachment-0001.htm>
More information about the Pkg-haskell-commits
mailing list