From 53ed21c5d142961848f4b24fa8d5f45d500b9494 Mon Sep 17 00:00:00 2001
From: Rodrigo Mesquita <rodrigo.m.mesquita@gmail.com>
Date: Tue, 4 Jul 2023 19:07:02 +0100
Subject: [PATCH] configure: Drop Clang command from settings

Due to 01542cb7227614a93508b97ecad5b16dddeb6486 we no longer use the
`runClang` function, and no longer need to configure into settings the
Clang command. We used to determine options at runtime to pass clang when
it was used as an assembler, but now that we configure at configure time
we no longer need to.
---
 compiler/GHC/Driver/Session.hs      | 10 ++--------
 compiler/GHC/Settings.hs            | 10 ----------
 compiler/GHC/Settings/IO.hs         |  3 ---
 compiler/GHC/SysTools/Tasks.hs      | 23 -----------------------
 configure.ac                        |  8 --------
 hadrian/bindist/Makefile            |  1 -
 hadrian/bindist/config.mk.in        |  1 -
 hadrian/cfg/system.config.in        |  1 -
 hadrian/src/Oracles/Setting.hs      |  2 --
 hadrian/src/Oracles/TestSettings.hs |  2 --
 hadrian/src/Rules/Generate.hs       |  1 -
 m4/fp_settings.m4                   |  7 -------
 testsuite/ghc-config/ghc-config.hs  |  1 -
 13 files changed, 2 insertions(+), 68 deletions(-)

diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs
index 174d902e3887..7286f30d5885 100644
--- a/compiler/GHC/Driver/Session.hs
+++ b/compiler/GHC/Driver/Session.hs
@@ -108,7 +108,6 @@ module GHC.Driver.Session (
         sPgm_ranlib,
         sPgm_lo,
         sPgm_lc,
-        sPgm_lcc,
         sPgm_i,
         sOpt_L,
         sOpt_P,
@@ -122,7 +121,6 @@ module GHC.Driver.Session (
         sOpt_windres,
         sOpt_lo,
         sOpt_lc,
-        sOpt_lcc,
         sOpt_i,
         sExtraGccViaCFlags,
         sTargetPlatformString,
@@ -138,10 +136,10 @@ module GHC.Driver.Session (
         extraGccViaCFlags, globalPackageDatabasePath,
         pgm_L, pgm_P, pgm_F, pgm_c, pgm_cxx, pgm_cpp, pgm_a, pgm_l, pgm_lm,
         pgm_dll, pgm_T, pgm_windres, pgm_ar,
-        pgm_ranlib, pgm_lo, pgm_lc, pgm_lcc, pgm_i,
+        pgm_ranlib, pgm_lo, pgm_lc, pgm_i,
         opt_L, opt_P, opt_F, opt_c, opt_cxx, opt_a, opt_l, opt_lm, opt_i,
         opt_P_signature,
-        opt_windres, opt_lo, opt_lc, opt_lcc,
+        opt_windres, opt_lo, opt_lc,
         updatePlatformConstants,
 
         -- ** Manipulating DynFlags
@@ -411,8 +409,6 @@ pgm_T                 :: DynFlags -> String
 pgm_T dflags = toolSettings_pgm_T $ toolSettings dflags
 pgm_windres           :: DynFlags -> String
 pgm_windres dflags = toolSettings_pgm_windres $ toolSettings dflags
-pgm_lcc               :: DynFlags -> (String,[Option])
-pgm_lcc dflags = toolSettings_pgm_lcc $ toolSettings dflags
 pgm_ar                :: DynFlags -> String
 pgm_ar dflags = toolSettings_pgm_ar $ toolSettings dflags
 pgm_ranlib            :: DynFlags -> String
@@ -453,8 +449,6 @@ opt_lm                :: DynFlags -> [String]
 opt_lm dflags= toolSettings_opt_lm $ toolSettings dflags
 opt_windres           :: DynFlags -> [String]
 opt_windres dflags= toolSettings_opt_windres $ toolSettings dflags
-opt_lcc                :: DynFlags -> [String]
-opt_lcc dflags= toolSettings_opt_lcc $ toolSettings dflags
 opt_lo                :: DynFlags -> [String]
 opt_lo dflags= toolSettings_opt_lo $ toolSettings dflags
 opt_lc                :: DynFlags -> [String]
diff --git a/compiler/GHC/Settings.hs b/compiler/GHC/Settings.hs
index 5d194a7a30b2..b619b0b88189 100644
--- a/compiler/GHC/Settings.hs
+++ b/compiler/GHC/Settings.hs
@@ -42,7 +42,6 @@ module GHC.Settings
   , sPgm_ranlib
   , sPgm_lo
   , sPgm_lc
-  , sPgm_lcc
   , sPgm_i
   , sOpt_L
   , sOpt_P
@@ -56,7 +55,6 @@ module GHC.Settings
   , sOpt_windres
   , sOpt_lo
   , sOpt_lc
-  , sOpt_lcc
   , sOpt_i
   , sExtraGccViaCFlags
   , sTargetPlatformString
@@ -121,8 +119,6 @@ data ToolSettings = ToolSettings
     toolSettings_pgm_lo      :: (String, [Option])
   , -- | LLVM: llc static compiler
     toolSettings_pgm_lc      :: (String, [Option])
-  , -- | LLVM: c compiler
-    toolSettings_pgm_lcc     :: (String, [Option])
   , toolSettings_pgm_i       :: String
 
   -- options for particular phases
@@ -142,8 +138,6 @@ data ToolSettings = ToolSettings
     toolSettings_opt_lo            :: [String]
   , -- | LLVM: llc static compiler
     toolSettings_opt_lc            :: [String]
-  , -- | LLVM: c compiler
-    toolSettings_opt_lcc           :: [String]
   , -- | iserv options
     toolSettings_opt_i             :: [String]
 
@@ -242,8 +236,6 @@ sPgm_lo :: Settings -> (String, [Option])
 sPgm_lo = toolSettings_pgm_lo . sToolSettings
 sPgm_lc :: Settings -> (String, [Option])
 sPgm_lc = toolSettings_pgm_lc . sToolSettings
-sPgm_lcc :: Settings -> (String, [Option])
-sPgm_lcc = toolSettings_pgm_lcc . sToolSettings
 sPgm_i :: Settings -> String
 sPgm_i = toolSettings_pgm_i . sToolSettings
 sOpt_L :: Settings -> [String]
@@ -270,8 +262,6 @@ sOpt_lo :: Settings -> [String]
 sOpt_lo = toolSettings_opt_lo . sToolSettings
 sOpt_lc :: Settings -> [String]
 sOpt_lc = toolSettings_opt_lc . sToolSettings
-sOpt_lcc :: Settings -> [String]
-sOpt_lcc = toolSettings_opt_lcc . sToolSettings
 sOpt_i :: Settings -> [String]
 sOpt_i = toolSettings_opt_i . sToolSettings
 
diff --git a/compiler/GHC/Settings/IO.hs b/compiler/GHC/Settings/IO.hs
index 4a9c8558353f..1a70535f1c15 100644
--- a/compiler/GHC/Settings/IO.hs
+++ b/compiler/GHC/Settings/IO.hs
@@ -151,7 +151,6 @@ initSettings top_dir = do
   -- We just assume on command line
   lc_prog <- getSetting "LLVM llc command"
   lo_prog <- getSetting "LLVM opt command"
-  lcc_prog <- getSetting "LLVM clang command"
 
   let iserv_prog = libexec "ghc-iserv"
 
@@ -199,7 +198,6 @@ initSettings top_dir = do
       , toolSettings_pgm_ranlib = ranlib_path
       , toolSettings_pgm_lo  = (lo_prog,[])
       , toolSettings_pgm_lc  = (lc_prog,[])
-      , toolSettings_pgm_lcc = (lcc_prog,[])
       , toolSettings_pgm_i   = iserv_prog
       , toolSettings_opt_L       = []
       , toolSettings_opt_P       = []
@@ -211,7 +209,6 @@ initSettings top_dir = do
       , toolSettings_opt_l       = []
       , toolSettings_opt_lm      = []
       , toolSettings_opt_windres = []
-      , toolSettings_opt_lcc     = []
       , toolSettings_opt_lo      = []
       , toolSettings_opt_lc      = []
       , toolSettings_opt_i       = []
diff --git a/compiler/GHC/SysTools/Tasks.hs b/compiler/GHC/SysTools/Tasks.hs
index dac66778f1c7..d69a52875bfb 100644
--- a/compiler/GHC/SysTools/Tasks.hs
+++ b/compiler/GHC/SysTools/Tasks.hs
@@ -12,7 +12,6 @@ module GHC.SysTools.Tasks where
 import GHC.Prelude
 import GHC.Platform
 import GHC.ForeignSrcLang
-import GHC.IO (catchException)
 
 import GHC.CmmToLlvm.Config (LlvmVersion, llvmVersionStr, supportedLlvmVersionUpperBound, parseLlvmVersion, supportedLlvmVersionLowerBound)
 
@@ -217,28 +216,6 @@ runLlvmLlc logger dflags args = traceSystoolCommand logger "llc" $ do
       args1 = map Option (getOpts dflags opt_lc)
   runSomething logger "LLVM Compiler" p (args0 ++ args1 ++ args)
 
--- | Run the clang compiler (used as an assembler for the LLVM
--- backend on OS X as LLVM doesn't support the OS X system
--- assembler)
-runClang :: Logger -> DynFlags -> [Option] -> IO ()
-runClang logger dflags args = traceSystoolCommand logger "clang" $ do
-  let (clang,_) = pgm_lcc dflags
-      -- be careful what options we call clang with
-      -- see #5903 and #7617 for bugs caused by this.
-      (_,args0) = pgm_a dflags
-      args1 = map Option (getOpts dflags opt_a)
-      args2 = args0 ++ args1 ++ args
-  mb_env <- getGccEnv args2
-  catchException
-    (runSomethingFiltered logger id "Clang (Assembler)" clang args2 Nothing mb_env)
-    (\(err :: SomeException) -> do
-        errorMsg logger $
-            text ("Error running clang! you need clang installed to use the" ++
-                  " LLVM backend") $+$
-            text "(or GHC tried to execute clang incorrectly)"
-        throwIO err
-    )
-
 runEmscripten :: Logger -> DynFlags -> [Option] -> IO ()
 runEmscripten logger dflags args = traceSystoolCommand logger "emcc" $ do
   let (p,args0) = pgm_a dflags
diff --git a/configure.ac b/configure.ac
index f935f9cb01ac..1f345ac09259 100644
--- a/configure.ac
+++ b/configure.ac
@@ -528,13 +528,6 @@ sUPPORTED_LLVM_VERSION_MAX=$(echo \($LlvmMaxVersion\) | sed 's/\./,/')
 AC_DEFINE_UNQUOTED([sUPPORTED_LLVM_VERSION_MIN], ${sUPPORTED_LLVM_VERSION_MIN}, [The minimum supported LLVM version number])
 AC_DEFINE_UNQUOTED([sUPPORTED_LLVM_VERSION_MAX], ${sUPPORTED_LLVM_VERSION_MAX}, [The maximum supported LLVM version number])
 
-dnl ** Which LLVM clang to use?
-dnl --------------------------------------------------------------
-AC_ARG_VAR(CLANG,[Use as the path to clang [default=autodetect]])
-AC_CHECK_TARGET_TOOL([CLANG], [clang])
-ClangCmd="$CLANG"
-AC_SUBST([ClangCmd])
-
 dnl ** Which LLVM llc to use?
 dnl --------------------------------------------------------------
 AC_ARG_VAR(LLC,[Use as the path to LLVM's llc [default=autodetect]])
@@ -1269,7 +1262,6 @@ echo "\
       libdw   : $USING_LIBDW
 
    Using LLVM tools
-      clang : $ClangCmd
       llc   : $LlcCmd
       opt   : $OptCmd"
 
diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile
index 87ab54491db4..5574670dbc1e 100644
--- a/hadrian/bindist/Makefile
+++ b/hadrian/bindist/Makefile
@@ -120,7 +120,6 @@ lib/settings : config.mk
 	@echo ',("LLVM target", "$(LLVMTarget_CPP)")' >> $@
 	@echo ',("LLVM llc command", "$(SettingsLlcCommand)")' >> $@
 	@echo ',("LLVM opt command", "$(SettingsOptCommand)")' >> $@
-	@echo ',("LLVM clang command", "$(SettingsClangCommand)")' >> $@
 	@echo ',("Use inplace MinGW toolchain", "$(SettingsUseDistroMINGW)")' >> $@
 	@echo
 	@echo ',("Use interpreter", "$(GhcWithInterpreter)")' >> $@
diff --git a/hadrian/bindist/config.mk.in b/hadrian/bindist/config.mk.in
index 64b40c96efe5..79c5ee50d81e 100644
--- a/hadrian/bindist/config.mk.in
+++ b/hadrian/bindist/config.mk.in
@@ -275,7 +275,6 @@ SettingsDllWrapCommand = @SettingsDllWrapCommand@
 SettingsWindresCommand = @SettingsWindresCommand@
 SettingsLibtoolCommand = @SettingsLibtoolCommand@
 SettingsTouchCommand = @SettingsTouchCommand@
-SettingsClangCommand = @SettingsClangCommand@
 SettingsLlcCommand = @SettingsLlcCommand@
 SettingsOptCommand = @SettingsOptCommand@
 SettingsUseDistroMINGW = @SettingsUseDistroMINGW@
diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in
index 48a51494916b..8b1bc0621464 100644
--- a/hadrian/cfg/system.config.in
+++ b/hadrian/cfg/system.config.in
@@ -158,7 +158,6 @@ settings-install_name_tool-command = @SettingsInstallNameToolCommand@
 settings-dll-wrap-command = @SettingsDllWrapCommand@
 settings-windres-command = @SettingsWindresCommand@
 settings-touch-command = @SettingsTouchCommand@
-settings-clang-command = @SettingsClangCommand@
 settings-llc-command = @SettingsLlcCommand@
 settings-opt-command = @SettingsOptCommand@
 settings-use-distro-mingw = @SettingsUseDistroMINGW@
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
index 6fbf2fd1fe6b..b9e5d312074d 100644
--- a/hadrian/src/Oracles/Setting.hs
+++ b/hadrian/src/Oracles/Setting.hs
@@ -126,7 +126,6 @@ data SettingsFileSetting
     | SettingsFileSetting_DllWrapCommand
     | SettingsFileSetting_WindresCommand
     | SettingsFileSetting_TouchCommand
-    | SettingsFileSetting_ClangCommand
     | SettingsFileSetting_LlcCommand
     | SettingsFileSetting_OptCommand
     | SettingsFileSetting_DistroMinGW
@@ -224,7 +223,6 @@ settingsFileSetting key = lookupSystemConfig $ case key of
     SettingsFileSetting_DllWrapCommand -> "settings-dll-wrap-command"
     SettingsFileSetting_WindresCommand -> "settings-windres-command"
     SettingsFileSetting_TouchCommand -> "settings-touch-command"
-    SettingsFileSetting_ClangCommand -> "settings-clang-command"
     SettingsFileSetting_LlcCommand -> "settings-llc-command"
     SettingsFileSetting_OptCommand -> "settings-opt-command"
     SettingsFileSetting_DistroMinGW -> "settings-use-distro-mingw"
diff --git a/hadrian/src/Oracles/TestSettings.hs b/hadrian/src/Oracles/TestSettings.hs
index 6abcb88dafd6..dca96c559468 100644
--- a/hadrian/src/Oracles/TestSettings.hs
+++ b/hadrian/src/Oracles/TestSettings.hs
@@ -37,7 +37,6 @@ data TestSetting = TestHostOS
                  | TestGhcDynamic
                  | TestGhcProfiled
                  | TestAR
-                 | TestCLANG
                  | TestLLC
                  | TestTEST_CC
                  | TestTEST_CC_OPTS
@@ -69,7 +68,6 @@ testSetting key = do
         TestGhcDynamic            -> "GhcDynamic"
         TestGhcProfiled           -> "GhcProfiled"
         TestAR                    -> "AR"
-        TestCLANG                 -> "CLANG"
         TestLLC                   -> "LLC"
         TestTEST_CC               -> "TEST_CC"
         TestTEST_CC_OPTS          -> "TEST_CC_OPTS"
diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs
index 1822e2380eb1..afce562ab6fa 100644
--- a/hadrian/src/Rules/Generate.hs
+++ b/hadrian/src/Rules/Generate.hs
@@ -479,7 +479,6 @@ generateSettings = do
         , ("LLVM target", getSetting LlvmTarget)
         , ("LLVM llc command", expr $ settingsFileSetting SettingsFileSetting_LlcCommand)
         , ("LLVM opt command", expr $ settingsFileSetting SettingsFileSetting_OptCommand)
-        , ("LLVM clang command", expr $ settingsFileSetting SettingsFileSetting_ClangCommand)
         , ("Use inplace MinGW toolchain", expr $ settingsFileSetting SettingsFileSetting_DistroMinGW)
 
         , ("Use interpreter", expr $ yesNo <$> ghcWithInterpreter)
diff --git a/m4/fp_settings.m4 b/m4/fp_settings.m4
index b1eaad274f7a..1c1f3e95402a 100644
--- a/m4/fp_settings.m4
+++ b/m4/fp_settings.m4
@@ -75,12 +75,6 @@ AC_DEFUN([FP_SETTINGS],
         fi
     fi
 
-    # Platform-agnostic tools
-    if test -z "$ClangCmd"; then
-        ClangCmd="clang"
-    fi
-    SettingsClangCommand="$ClangCmd"
-
     # LLVM backend tools
     if test -z "$LlcCmd"; then
         LlcCmd="llc"
@@ -124,7 +118,6 @@ AC_DEFUN([FP_SETTINGS],
     AC_SUBST(SettingsDllWrapCommand)
     AC_SUBST(SettingsWindresCommand)
     AC_SUBST(SettingsTouchCommand)
-    AC_SUBST(SettingsClangCommand)
     AC_SUBST(SettingsLlcCommand)
     AC_SUBST(SettingsOptCommand)
     AC_SUBST(SettingsUseDistroMINGW)
diff --git a/testsuite/ghc-config/ghc-config.hs b/testsuite/ghc-config/ghc-config.hs
index b792643dbb5b..0829991225a5 100644
--- a/testsuite/ghc-config/ghc-config.hs
+++ b/testsuite/ghc-config/ghc-config.hs
@@ -33,7 +33,6 @@ main = do
   getGhcFieldOrDefault fields "LeadingUnderscore" "Leading underscore" "NO"
   getGhcFieldOrDefault fields "GhcTablesNextToCode" "Tables next to code" "NO"
   getGhcFieldProgWithDefault fields "AR" "ar command" "ar"
-  getGhcFieldProgWithDefault fields "CLANG" "LLVM clang command" "clang"
   getGhcFieldProgWithDefault fields "LLC" "LLVM llc command" "llc"
   getGhcFieldProgWithDefault fields "TEST_CC" "C compiler command" "gcc"
   getGhcFieldProgWithDefault fields "TEST_CC_OPTS" "C compiler flags" ""
-- 
GitLab