Skip to content

Commit b6be8a0

Browse files
committed
haskell.compiler.ghc{948,967,984,9102,9103,9121,9122}: backport patches for LLVM support
LLVM 12–17 have been dropped for Nixpkgs 25.11. As discussed recently on Matrix, this backports upstream changes to allow the use of LLVM 20 for all GHC versions from 9.4.8 onward. I looked over GHC commits mentioning LLVM since the release of 9.4.8, and read the discussions and issues around the relevant bumps, and attempted to be quite thorough, but I obviously cannot guarantee that this is wholly comprehensive. It seems like upstream generally bumps the upper bound on the basis of “it builds successfully for me”, with specific adaptations for new versions being fairly uncommon and only coming for obvious build blockers or reactively in response to bug reports. I have backported both kinds of changes here. For some commits, trivial conflict resolutions and adaptations were required. It would be possible to pass the affected files to `fetchpatch` as `excludes` and keep smaller fix‐up patches in tree in some cases, but I opted to keep it simple and vendor complete backport patches instead. I did not attempt to backport every single change to the LLVM backend, only those that seemed directly relevant to support for newer versions; if you’d get the same issue with the older LLVM, that’s just a GHC bug. These changes should actually make it easier to cross‐compile for new architectures, as more recent LLVMs will have better support for newer platforms, and it will be easier to backport GHC changes to enable new platforms with less drift in the backend. These patches do result in two breaking changes. Firstly, the minimum LLVM version is bumped to 13 across the board. This is irrelevant for Nixpkgs as we pin a specific LLVM version anyway, and versions below LLVM 18 will be removed imminently. Secondly, support for the hidden `-fno-llvm-tbaa` flag is dropped. This can be replaced with custom `-optlo` flags to control the passes more directly, but the main use of this undocumented flag appears to have been to [work around] the lack of support for newer LLVM versions, anyway. [work around]: <https://gitlab.haskell.org/ghc/ghc/-/issues/22220> I successfully built the following on `aarch64-linux`: * `pkgsCross.armv7l-hf-multiplatform.buildPackages.haskell.compiler.ghc948` * `pkgsCross.armv7l-hf-multiplatform.buildPackages.haskell.compiler.ghc967` * `pkgsCross.armv7l-hf-multiplatform.buildPackages.haskell.compiler.ghc984` * `pkgsCross.armv7l-hf-multiplatform.buildPackages.haskell.compiler.ghc9102` * `pkgsCross.armv7l-hf-multiplatform.buildPackages.haskell.compiler.ghc9121` * `pkgsCross.armv7l-hf-multiplatform.buildPackages.haskell.compiler.ghc9122` * `pkgsCross.riscv64.haskell.compiler.ghc948` The GHC 9.4.8 with an ARMv7 host platform segfaults when I try to run GHC, though e.g. `ghc-pkg --help` runs successfully. The GHC 9.10.3 build targeting ARMv7 crashed inside `llc(1)`, so I tried RISC‐V, which has some platform mismatch issue relating to `libffi`, so I tried z/Architecture, which failed with an invalid floating point constant in the LLVM IR, so I tried 64‐bit MIPS, which failed with a different `libffi` issue, so I tried 32‐bit MIPS, which failed to compile `compiler-rt`, so I gave up. I confirmed that both of the ARMv7 issues reproduce with 944e8fd, the revision before they were bumped from their old versions of LLVM, so these are not regressions. I built a test program with the ARMv7 cross‐compilers and confirmed that they run on the AArch64 builder. I also confirmed that the cross‐compiled RISC‐V GHC successfully runs under `qemu-riscv64(1)`. It will only try to build programs via the C backend, though, as that is the only option for unregisterised™ targets, so it’s not clear to me how useful LLVM support in 9.4.8 really is for bootstrapping new platforms; I guess even RISC‐V would require more backporting work to produce a cross‐compiled GHC that will use LLVM to compile its own input. I didn’t bother setting up all the binfmt machinery to get it through compiling and running a test program, but it at least makes the attempt.
1 parent 5923f1f commit b6be8a0

13 files changed

Lines changed: 732 additions & 12 deletions

pkgs/development/compilers/ghc/common-hadrian.nix

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,9 @@
269269
# Missing ELF symbols
270270
++ lib.optionals stdenv.targetPlatform.isAndroid [
271271
./ghc-define-undefined-elf-st-visibility.patch
272-
];
272+
]
273+
274+
++ (import ./common-llvm-patches.nix { inherit lib version fetchpatch; });
273275

274276
stdenv = stdenvNoCC;
275277
},
@@ -859,8 +861,6 @@ stdenv.mkDerivation (
859861
timeout = 24 * 3600;
860862
platforms = lib.platforms.all;
861863
inherit (bootPkgs.ghc.meta) license;
862-
# To be fixed by <https://github.com/NixOS/nixpkgs/pull/440774>.
863-
broken = useLLVM;
864864
};
865865

866866
dontStrip = targetPlatform.useAndroidPrebuilt || targetPlatform.isWasm;
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{
2+
lib,
3+
version,
4+
fetchpatch,
5+
}:
6+
7+
# Backports for LLVM support.
8+
#
9+
# These primarily focus on backporting patches that are relevant to
10+
# supporting newer LLVM versions, rather than aiming to backport every
11+
# LLVM backend bug fix or improvement from newer GHC releases.
12+
#
13+
# Potentially of interest for cross‐compiling GHC 9.4.8 to LoongArch64:
14+
#
15+
# * <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9292>
16+
# * <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13620>
17+
18+
[ ]
19+
20+
++ lib.optionals (lib.versionOlder version "9.6") [
21+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/9857>
22+
(fetchpatch {
23+
name = "ghc-9.4-llvm-support-15.patch";
24+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/0cc16aaf89d7dc3963764b7193ceac73e4e3329b.patch";
25+
hash = "sha256-G0gqrj5iPuQ5JuC2+d151yka72XZMbrqMWPZd4EuT04=";
26+
})
27+
28+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13763>
29+
./ghc-9.4-llvm-fix-version-detection.patch
30+
]
31+
32+
++ lib.optionals (lib.versionOlder version "9.8") [
33+
(
34+
# The upstream backport of !13763 in 9.6.7 removed an unused import
35+
# that is required by the next series.
36+
if lib.versionOlder version "9.6" then null else ./ghc-9.6-llvm-restore-import.patch
37+
)
38+
]
39+
40+
++ lib.optionals (lib.versionOlder version "9.10") [
41+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11124>
42+
(
43+
if lib.versionOlder version "9.8" then
44+
./ghc-9.4-llvm-add-metadata-exports.patch
45+
else
46+
fetchpatch {
47+
name = "ghc-9.8-llvm-add-metadata-exports.patch";
48+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/fcfc1777c22ad47613256c3c5e7304cfd29bc761.patch";
49+
hash = "sha256-9rpyeH8TUVeKoW4PA6qn7DG2+P9MhBCywmbi1O/NsTQ=";
50+
}
51+
)
52+
(
53+
if lib.versionOlder version "9.8" then
54+
./ghc-9.4-llvm-allow-llvmlits-in-metaexprs.patch
55+
else
56+
fetchpatch {
57+
name = "ghc-9.8-llvm-allow-llvmlits-in-metaexprs.patch";
58+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/5880fff6d353a14785c457999fded5a7100c9514.patch";
59+
hash = "sha256-NDMGNc0PYpWJUW+nI2YvMsBOWRIfNix4oWHQZAIxrVY=";
60+
}
61+
)
62+
(
63+
# `GHC.Driver.DynFlags` was not split out until 9.8, so this can be
64+
# omitted with no functional effect on the rest of the series on
65+
# earlier versions.
66+
if lib.versionOlder version "9.8" then
67+
null
68+
else
69+
fetchpatch {
70+
name = "ghc-9.8-move-feature-predicates-to-dynflags.patch";
71+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/86ce92a2f81a04aa980da2891d0e300cb3cb7efd.patch";
72+
hash = "sha256-SzJgzq4b5wAMPz+/QSa67iSOxB2enqejvV0lsF0+9L8=";
73+
}
74+
)
75+
(fetchpatch {
76+
name = "ghc-9.4-llvm-add-module-flag-metadata-infra.patch";
77+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/a6a3874276ced1b037365c059dcd0a758e813a5b.patch";
78+
hash = "sha256-tAYDRNXmpp5cZtyONpO8vlsDmnNEBbh4J3oSCy/uWWc=";
79+
})
80+
(
81+
if lib.versionOlder version "9.8" then
82+
./ghc-9.4-llvm-fix-stack-alignment.patch
83+
else
84+
fetchpatch {
85+
name = "ghc-9.8-llvm-fix-stack-alignment.patch";
86+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/e9af2cf3f16ab60b5c79ed91df95359b11784df6.patch";
87+
hash = "sha256-RmYwFN3c3AgJxF9KXWQLdwOgugzepCW1wcTdJX1h0C4=";
88+
}
89+
)
90+
91+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/8999>
92+
(
93+
if lib.versionOlder version "9.6" then
94+
./ghc-9.4-llvm-use-new-pass-manager.patch
95+
else if lib.versionOlder version "9.8" then
96+
./ghc-9.6-llvm-use-new-pass-manager.patch
97+
else
98+
./ghc-9.8-llvm-use-new-pass-manager.patch
99+
)
100+
]
101+
102+
++ lib.optionals (lib.versionOlder version "9.12") [
103+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12726>
104+
(fetchpatch {
105+
name = "ghc-9.4-llvm-support-16-17-18.patch";
106+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/ae170155e82f1e5f78882f7a682d02a8e46a5823.patch";
107+
hash = "sha256-U1znWqXZTORmAg480p5TjTL53T2Zn+1+9Fnk2V1Drfs=";
108+
})
109+
110+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13311>
111+
(fetchpatch {
112+
name = "ghc-9.4-llvm-support-19.patch";
113+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/36bbb167f354a2fbc6c4842755f2b1e374e3580e.patch";
114+
excludes = [ ".gitlab-ci.yml" ];
115+
hash = "sha256-v8T/FtriDPbibcIDZmU2yotBoDVo+wU2+gw+CCdQlm0=";
116+
})
117+
]
118+
119+
++ lib.optionals (lib.versionOlder version "9.14") [
120+
# <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/14600>
121+
(fetchpatch {
122+
name = "ghc-9.4-llvm-support-20.patch";
123+
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/ca03226db2db2696460bfcb8035dd3268d546706.patch";
124+
hash = "sha256-7cO049DQtJHUAhwPujoFO+zQtXsMg6VFTHtMDwenrKs=";
125+
})
126+
]

pkgs/development/compilers/ghc/common-make-native-bignum.nix

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,9 @@ stdenv.mkDerivation (
386386
# elimination on aarch64-darwin. (see
387387
# https://github.com/NixOS/nixpkgs/issues/140774 for details).
388388
./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
389-
];
389+
]
390+
391+
++ (import ./common-llvm-patches.nix { inherit lib version fetchpatch; });
390392

391393
postPatch = "patchShebangs .";
392394

@@ -671,8 +673,6 @@ stdenv.mkDerivation (
671673
timeout = 24 * 3600;
672674
platforms = lib.platforms.all;
673675
inherit (bootPkgs.ghc.meta) license;
674-
# To be fixed by <https://github.com/NixOS/nixpkgs/pull/440774>.
675-
broken = useLLVM;
676676
};
677677

678678
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
From 701154fdbceff2edb121768eb660713a98580af8 Mon Sep 17 00:00:00 2001
2+
From: Ben Gamari <ben@smart-cactus.org>
3+
Date: Tue, 22 Aug 2023 12:23:26 -0400
4+
Subject: [PATCH] llvmGen: Add export list to GHC.Llvm.MetaData
5+
6+
(cherry picked from commit fcfc1777c22ad47613256c3c5e7304cfd29bc761)
7+
---
8+
compiler/GHC/Llvm/MetaData.hs | 8 +++++++-
9+
1 file changed, 7 insertions(+), 1 deletion(-)
10+
11+
diff --git a/compiler/GHC/Llvm/MetaData.hs b/compiler/GHC/Llvm/MetaData.hs
12+
index f46ae0a101..3526c11bc3 100644
13+
--- a/compiler/GHC/Llvm/MetaData.hs
14+
+++ b/compiler/GHC/Llvm/MetaData.hs
15+
@@ -1,6 +1,12 @@
16+
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17+
18+
-module GHC.Llvm.MetaData where
19+
+module GHC.Llvm.MetaData
20+
+ ( MetaId(..)
21+
+ , ppr
22+
+ , MetaExpr(..)
23+
+ , MetaAnnot(..)
24+
+ , MetaDecl(..)
25+
+ ) where
26+
27+
import GHC.Prelude
28+
29+
--
30+
2.50.1
31+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
From 51765e343e9829f1d3e95d1d7303fa3594ae91cc Mon Sep 17 00:00:00 2001
2+
From: Ben Gamari <ben@smart-cactus.org>
3+
Date: Tue, 22 Aug 2023 12:24:53 -0400
4+
Subject: [PATCH] llvmGen: Allow LlvmLits in MetaExprs
5+
6+
This omission appears to be an oversight.
7+
8+
(cherry picked from commit 5880fff6d353a14785c457999fded5a7100c9514)
9+
---
10+
compiler/GHC/Llvm/MetaData.hs | 1 +
11+
compiler/GHC/Llvm/Ppr.hs | 1 +
12+
2 files changed, 2 insertions(+)
13+
14+
diff --git a/compiler/GHC/Llvm/MetaData.hs b/compiler/GHC/Llvm/MetaData.hs
15+
index f46ae0a101..121cdd5788 100644
16+
--- a/compiler/GHC/Llvm/MetaData.hs
17+
+++ b/compiler/GHC/Llvm/MetaData.hs
18+
@@ -68,6 +68,7 @@ instance Outputable MetaId where
19+
20+
-- | LLVM metadata expressions
21+
data MetaExpr = MetaStr !LMString
22+
+ | MetaLit !LlvmLit
23+
| MetaNode !MetaId
24+
| MetaVar !LlvmVar
25+
| MetaStruct [MetaExpr]
26+
diff --git a/compiler/GHC/Llvm/Ppr.hs b/compiler/GHC/Llvm/Ppr.hs
27+
index f48e7aa034..bc88a13439 100644
28+
--- a/compiler/GHC/Llvm/Ppr.hs
29+
+++ b/compiler/GHC/Llvm/Ppr.hs
30+
@@ -256,6 +256,7 @@ ppMetaExpr :: LlvmCgConfig -> MetaExpr -> SDoc
31+
ppMetaExpr opts = \case
32+
MetaVar (LMLitVar (LMNullLit _)) -> text "null"
33+
MetaStr s -> char '!' <> doubleQuotes (ftext s)
34+
+ MetaLit l -> ppTypeLit opts l
35+
MetaNode n -> ppr n
36+
MetaVar v -> ppVar opts v
37+
MetaStruct es -> char '!' <> braces (ppCommaJoin (map (ppMetaExpr opts) es))
38+
--
39+
2.50.1
40+
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
From 646d62e74c16be785ef08735ae5b24f4af6bcf78 Mon Sep 17 00:00:00 2001
2+
From: Ben Gamari <ben@smart-cactus.org>
3+
Date: Tue, 22 Aug 2023 13:26:58 -0400
4+
Subject: [PATCH] llvmGen: Don't pass stack alignment via command line
5+
6+
As of https://reviews.llvm.org/D103048 LLVM no longer supports the
7+
`-stack-alignment=...` flag. Instead this information is passed via a
8+
module flag metadata node.
9+
10+
This requires dropping support for LLVM 11 and 12.
11+
12+
Fixes #23870
13+
14+
(cherry picked from commit e9af2cf3f16ab60b5c79ed91df95359b11784df6)
15+
---
16+
compiler/GHC/CmmToLlvm.hs | 29 ++++++++++++++++++++++++-
17+
compiler/GHC/CmmToLlvm/Config.hs | 1 +
18+
compiler/GHC/Driver/Config/CmmToLlvm.hs | 1 +
19+
compiler/GHC/Driver/Pipeline/Execute.hs | 7 ------
20+
configure.ac | 2 +-
21+
5 files changed, 31 insertions(+), 9 deletions(-)
22+
23+
diff --git a/compiler/GHC/CmmToLlvm.hs b/compiler/GHC/CmmToLlvm.hs
24+
index 7d48693765..b9036daef1 100644
25+
--- a/compiler/GHC/CmmToLlvm.hs
26+
+++ b/compiler/GHC/CmmToLlvm.hs
27+
@@ -190,7 +190,7 @@ cmmLlvmGen _ = return ()
28+
29+
cmmMetaLlvmPrelude :: LlvmM ()
30+
cmmMetaLlvmPrelude = do
31+
- metas <- flip mapM stgTBAA $ \(uniq, name, parent) -> do
32+
+ tbaa_metas <- flip mapM stgTBAA $ \(uniq, name, parent) -> do
33+
-- Generate / lookup meta data IDs
34+
tbaaId <- getMetaUniqueId
35+
setUniqMeta uniq tbaaId
36+
@@ -203,9 +203,36 @@ cmmMetaLlvmPrelude = do
37+
-- just a name on its own. Previously `null` was accepted as the
38+
-- name.
39+
Nothing -> [ MetaStr name ]
40+
+
41+
+ platform <- getPlatform
42+
+ cfg <- getConfig
43+
+ let stack_alignment_metas =
44+
+ case platformArch platform of
45+
+ ArchX86_64 | llvmCgAvxEnabled cfg -> [mkStackAlignmentMeta 32]
46+
+ _ -> []
47+
+ module_flags_metas <- mkModuleFlagsMeta stack_alignment_metas
48+
+ let metas = tbaa_metas ++ module_flags_metas
49+
cfg <- getConfig
50+
renderLlvm $ ppLlvmMetas cfg metas
51+
52+
+mkNamedMeta :: LMString -> [MetaExpr] -> LlvmM [MetaDecl]
53+
+mkNamedMeta name exprs = do
54+
+ (ids, decls) <- unzip <$> mapM f exprs
55+
+ return $ decls ++ [MetaNamed name ids]
56+
+ where
57+
+ f expr = do
58+
+ i <- getMetaUniqueId
59+
+ return (i, MetaUnnamed i expr)
60+
+
61+
+mkModuleFlagsMeta :: [ModuleFlag] -> LlvmM [MetaDecl]
62+
+mkModuleFlagsMeta =
63+
+ mkNamedMeta "llvm.module.flags" . map moduleFlagToMetaExpr
64+
+
65+
+mkStackAlignmentMeta :: Integer -> ModuleFlag
66+
+mkStackAlignmentMeta alignment =
67+
+ ModuleFlag MFBError "override-stack-alignment" (MetaLit $ LMIntLit alignment i32)
68+
+
69+
+
70+
-- -----------------------------------------------------------------------------
71+
-- | Marks variables as used where necessary
72+
--
73+
diff --git a/compiler/GHC/CmmToLlvm/Config.hs b/compiler/GHC/CmmToLlvm/Config.hs
74+
index 649a33c2f6..ecab7fdcc1 100644
75+
--- a/compiler/GHC/CmmToLlvm/Config.hs
76+
+++ b/compiler/GHC/CmmToLlvm/Config.hs
77+
@@ -36,6 +36,7 @@ data LlvmCgConfig = LlvmCgConfig
78+
, llvmCgContext :: !SDocContext -- ^ Context for LLVM code generation
79+
, llvmCgFillUndefWithGarbage :: !Bool -- ^ Fill undefined literals with garbage values
80+
, llvmCgSplitSection :: !Bool -- ^ Split sections
81+
+ , llvmCgAvxEnabled :: !Bool
82+
, llvmCgBmiVersion :: Maybe BmiVersion -- ^ (x86) BMI instructions
83+
, llvmCgLlvmVersion :: Maybe LlvmVersion -- ^ version of Llvm we're using
84+
, llvmCgDoWarn :: !Bool -- ^ True ==> warn unsupported Llvm version
85+
diff --git a/compiler/GHC/Driver/Config/CmmToLlvm.hs b/compiler/GHC/Driver/Config/CmmToLlvm.hs
86+
index 8097bbec7e..752ba987ca 100644
87+
--- a/compiler/GHC/Driver/Config/CmmToLlvm.hs
88+
+++ b/compiler/GHC/Driver/Config/CmmToLlvm.hs
89+
@@ -23,6 +23,7 @@ initLlvmCgConfig logger config_cache dflags = do
90+
, llvmCgContext = initSDocContext dflags PprCode
91+
, llvmCgFillUndefWithGarbage = gopt Opt_LlvmFillUndefWithGarbage dflags
92+
, llvmCgSplitSection = gopt Opt_SplitSections dflags
93+
+ , llvmCgAvxEnabled = isAvxEnabled dflags
94+
, llvmCgBmiVersion = case platformArch (targetPlatform dflags) of
95+
ArchX86_64 -> bmiVersion dflags
96+
ArchX86 -> bmiVersion dflags
97+
diff --git a/compiler/GHC/Driver/Pipeline/Execute.hs b/compiler/GHC/Driver/Pipeline/Execute.hs
98+
index fac2a595f2..4fa72be475 100644
99+
--- a/compiler/GHC/Driver/Pipeline/Execute.hs
100+
+++ b/compiler/GHC/Driver/Pipeline/Execute.hs
101+
@@ -992,8 +992,6 @@ llvmOptions llvm_config dflags =
102+
[("-enable-tbaa -tbaa", "-enable-tbaa") | gopt Opt_LlvmTBAA dflags ]
103+
++ [("-relocation-model=" ++ rmodel
104+
,"-relocation-model=" ++ rmodel) | not (null rmodel)]
105+
- ++ [("-stack-alignment=" ++ (show align)
106+
- ,"-stack-alignment=" ++ (show align)) | align > 0 ]
107+
108+
-- Additional llc flags
109+
++ [("", "-mcpu=" ++ mcpu) | not (null mcpu)
110+
@@ -1012,11 +1010,6 @@ llvmOptions llvm_config dflags =
111+
112+
platform = targetPlatform dflags
113+
114+
- align :: Int
115+
- align = case platformArch platform of
116+
- ArchX86_64 | isAvxEnabled dflags -> 32
117+
- _ -> 0
118+
-
119+
attrs :: String
120+
attrs = intercalate "," $ mattr
121+
++ ["+sse42" | isSse4_2Enabled dflags ]
122+
diff --git a/configure.ac b/configure.ac
123+
index 16f2e8b339..0440d5051b 100644
124+
--- a/configure.ac
125+
+++ b/configure.ac
126+
@@ -555,7 +555,7 @@ AC_SUBST(InstallNameToolCmd)
127+
# tools we are looking for. In the past, GHC supported a number of
128+
# versions of LLVM simultaneously, but that stopped working around
129+
# 3.5/3.6 release of LLVM.
130+
-LlvmMinVersion=11 # inclusive
131+
+LlvmMinVersion=13 # inclusive
132+
LlvmMaxVersion=16 # not inclusive
133+
AC_SUBST([LlvmMinVersion])
134+
AC_SUBST([LlvmMaxVersion])
135+
--
136+
2.50.1
137+

0 commit comments

Comments
 (0)