From: hololeap <hololeap@protonmail.com>
Date: Mon, 16 Jun 2025 11:40:06 -0700
Subject: [PATCH 1/1] Patch ghc-9.4 for llvm-20 support

This patch was adapted from the original ghc-9.4.5-llvm-16.patch

Thanks-to: Violet Purcell <vimproved@inventati.org>
Bug: https://github.com/gentoo-haskell/gentoo-haskell/issues/1519
Signed-off-by: hololeap <hololeap@protonmail.com>
--- a/compiler/GHC/Driver/Pipeline/Execute.hs
+++ b/compiler/GHC/Driver/Pipeline/Execute.hs
@@ -882,8 +882,7 @@ getOutputFilename logger tmpfs stop_phase output basename dflags next_phase mayb
 llvmOptions :: DynFlags
             -> [(String, String)]  -- ^ pairs of (opt, llc) arguments
 llvmOptions 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/configure.ac
+++ b/configure.ac
@@ -582,7 +582,7 @@ AC_SUBST(InstallNameToolCmd)
 # versions of LLVM simultaneously, but that stopped working around
 # 3.5/3.6 release of LLVM.
 LlvmMinVersion=10  # inclusive
-LlvmMaxVersion=15 # not inclusive
+LlvmMaxVersion=21 # not inclusive
 AC_SUBST([LlvmMinVersion])
 AC_SUBST([LlvmMaxVersion])
 sUPPORTED_LLVM_VERSION_MIN=$(echo \($LlvmMinVersion\) | sed 's/\./,/')
--- a/llvm-passes
+++ b/llvm-passes
@@ -1,5 +1,5 @@
 [
-(0, "-mem2reg -globalopt -lower-expect"),
-(1, "-O1 -globalopt"),
-(2, "-O2")
+(0, "-passes=module(default<O0>,function(mem2reg),globalopt,function(lower-expect))"),
+(1, "-passes=module(default<O1>,globalopt)"),
+(2, "-passes=module(default<O2>)")
 ]
