[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