diff options
-rw-r--r-- | hadrian/src/Settings/Builders/RunTest.hs | 3 | ||||
-rw-r--r-- | testsuite/config/ghc | 15 | ||||
-rw-r--r-- | testsuite/driver/testglobals.py | 3 | ||||
-rw-r--r-- | testsuite/mk/test.mk | 12 |
4 files changed, 14 insertions, 19 deletions
diff --git a/hadrian/src/Settings/Builders/RunTest.hs b/hadrian/src/Settings/Builders/RunTest.hs index 78e07b99ef..f1b3be9a25 100644 --- a/hadrian/src/Settings/Builders/RunTest.hs +++ b/hadrian/src/Settings/Builders/RunTest.hs @@ -70,7 +70,6 @@ runTestBuilderArgs = builder RunTest ? do withSMP <- getBooleanSetting TestGhcWithSMP debugged <- getBooleanSetting TestGhcDebugged keepFiles <- expr (testKeepFiles <$> userSetting defaultTestArgs) - withLlvm <- expr (not . null <$> settingsFileSetting SettingsFileSetting_LlcCommand) accept <- expr (testAccept <$> userSetting defaultTestArgs) (acceptPlatform, acceptOS) <- expr . liftIO $ @@ -126,8 +125,6 @@ runTestBuilderArgs = builder RunTest ? do , arg "-e", arg $ asBool "config.have_profiling=" (hasLibWay profiling) , arg "-e", arg $ asBool "config.have_fast_bignum=" (bignumBackend /= "native" && not bignumCheck) , arg "-e", arg $ asBool "ghc_with_smp=" withSMP - , arg "-e", arg $ asBool "ghc_with_llvm=" withLlvm - , arg "-e", arg $ "config.ghc_dynamic_by_default=" ++ show hasDynamicByDefault , arg "-e", arg $ "config.ghc_dynamic=" ++ show hasDynamic diff --git a/testsuite/config/ghc b/testsuite/config/ghc index 4f053eb50f..c54ac6b385 100644 --- a/testsuite/config/ghc +++ b/testsuite/config/ghc @@ -64,10 +64,6 @@ else: if (config.have_profiling and ghc_with_threaded_rts): config.run_ways.append('profthreaded') -if (ghc_with_llvm and not config.unregisterised): - config.compile_ways.append('optllvm') - config.run_ways.append('optllvm') - # WinIO I/O manager for Windows if windows: winio_ways = ['winio', 'winio_threaded'] @@ -195,6 +191,17 @@ def get_compiler_info(): config.have_ncg = compilerInfoDict.get("Have native code generator", "NO") == "YES" + # Detect whether an LLVM toolhain is available + llc_path = compilerInfoDict.get("LLVM llc command") + config.have_llvm = shutil.which(llc_path) is not None + if config.unregisterised: + print("Unregisterised build; skipping LLVM ways...") + elif config.have_llvm: + config.compile_ways.append('optllvm') + config.run_ways.append('optllvm') + else: + print("Failed to find `llc` command; skipping LLVM ways...") + # Whether GHC itself was built using the LLVM backend. We need to know this # since some tests in ext-interp fail when stage2 ghc is built using # LLVM. See #16087. diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py index 3210000711..adbcf89c6c 100644 --- a/testsuite/driver/testglobals.py +++ b/testsuite/driver/testglobals.py @@ -115,6 +115,9 @@ class TestConfig: self.way_flags = {} # type: Dict[WayName, List[str]] self.way_rts_flags = {} # type: Dict[WayName, List[str]] + # Do we have a functional LLVM toolchain? + self.have_llvm = False + # Do we have vanilla libraries? self.have_vanilla = False diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk index b1d17a3094..480c31c840 100644 --- a/testsuite/mk/test.mk +++ b/testsuite/mk/test.mk @@ -188,18 +188,6 @@ else RUNTEST_OPTS += -e ghc_with_smp=False endif -# Does the LLVM backend work? -ifeq "$(LLC)" "" -RUNTEST_OPTS += -e ghc_with_llvm=False -else ifeq "$(TargetARCH_CPP)" "powerpc" -RUNTEST_OPTS += -e ghc_with_llvm=False -else ifneq "$(LLC)" "llc" -# If we have a real detected value for LLVM, then it really ought to work -RUNTEST_OPTS += -e ghc_with_llvm=True -else -RUNTEST_OPTS += -e ghc_with_llvm=False -endif - ifeq "$(WINDOWS)" "YES" RUNTEST_OPTS += -e windows=True else |