diff options
author | Zejun Wu <watashi@fb.com> | 2019-06-28 15:04:40 -0700 |
---|---|---|
committer | Ray Shih <rayshih@fb.com> | 2020-08-10 15:19:14 -0700 |
commit | 7422b505e11fb2fd2c0aa55e54f7e697501c2763 (patch) | |
tree | 8827c14a8240db1e9a06d591ed2c0f358e43f0f0 | |
parent | 27f654aa6e36e95f86f75f76af58d187cb1182ff (diff) | |
download | haskell-7422b505e11fb2fd2c0aa55e54f7e697501c2763.tar.gz |
Revert "[tp2/ghc] Backport "Add `-optcxx` option (#16477)""
This reverts commit 6917f4cf1ae272b463438732eb7fa14639d6c914.
The reason for revert:
It doesn't work well without cabal support (cxx-options need be passed
as -optcxx now). Let's just wait a bit.
Reviewed By: lolotp
-rw-r--r-- | compiler/main/DriverPhases.hs | 1 | ||||
-rw-r--r-- | compiler/main/DriverPipeline.hs | 15 | ||||
-rw-r--r-- | compiler/main/DynFlags.hs | 11 | ||||
-rw-r--r-- | compiler/main/HscTypes.hs | 12 | ||||
-rw-r--r-- | compiler/main/SysTools.hs | 1 | ||||
-rw-r--r-- | compiler/main/SysTools/ExtraObj.hs | 2 | ||||
-rw-r--r-- | compiler/main/SysTools/Tasks.hs | 29 | ||||
-rw-r--r-- | docs/users_guide/phases.rst | 7 | ||||
-rw-r--r-- | testsuite/tests/driver/T16737.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/ffi/should_compile/all.T | 9 | ||||
-rw-r--r-- | testsuite/tests/ffi/should_compile/cc017.hs | 19 | ||||
-rw-r--r-- | testsuite/tests/th/T13366.hs | 2 |
12 files changed, 22 insertions, 88 deletions
diff --git a/compiler/main/DriverPhases.hs b/compiler/main/DriverPhases.hs index 01224e19b1..d923262987 100644 --- a/compiler/main/DriverPhases.hs +++ b/compiler/main/DriverPhases.hs @@ -378,3 +378,4 @@ isHaskellSigFilename f = isHaskellSigSuffix (drop 1 $ takeExtension f) isObjectFilename, isDynLibFilename :: Platform -> FilePath -> Bool isObjectFilename platform f = isObjectSuffix platform (drop 1 $ takeExtension f) isDynLibFilename platform f = isDynLibSuffix platform (drop 1 $ takeExtension f) + diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index 08b7c5b7e9..bf79ea5d02 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -1272,8 +1272,17 @@ runPhase (RealPhase cc_phase) input_fn dflags ghcVersionH <- liftIO $ getGhcVersionPathName dflags - liftIO $ SysTools.runCc (phaseForeignLanguage cc_phase) dflags ( - [ SysTools.FileOption "" input_fn + let gcc_lang_opt | cc_phase `eqPhase` Ccxx = "c++" + | cc_phase `eqPhase` Cobjc = "objective-c" + | cc_phase `eqPhase` Cobjcxx = "objective-c++" + | otherwise = "c" + liftIO $ SysTools.runCc dflags ( + -- force the C compiler to interpret this file as C when + -- compiling .hc files, by adding the -x c option. + -- Also useful for plain .c files, just in case GHC saw a + -- -x c option. + [ SysTools.Option "-x", SysTools.Option gcc_lang_opt + , SysTools.FileOption "" input_fn , SysTools.Option "-o" , SysTools.FileOption "" output_fn ] @@ -2084,7 +2093,7 @@ doCpp dflags raw input_fn output_fn = do let verbFlags = getVerbFlags dflags let cpp_prog args | raw = SysTools.runCpp dflags args - | otherwise = SysTools.runCc Nothing dflags (SysTools.Option "-E" : args) + | otherwise = SysTools.runCc dflags (SysTools.Option "-E" : args) let target_defs = [ "-D" ++ HOST_OS ++ "_BUILD_OS", diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 20f1ba0293..b67d657e69 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -94,8 +94,7 @@ module DynFlags ( extraGccViaCFlags, systemPackageConfig, pgm_L, pgm_P, pgm_F, pgm_c, pgm_s, pgm_a, pgm_l, pgm_dll, pgm_T, pgm_windres, pgm_libtool, pgm_ar, pgm_ranlib, pgm_lo, pgm_lc, - pgm_lcc, pgm_i, - opt_L, opt_P, opt_F, opt_c, opt_cxx, opt_a, opt_l, opt_i, + pgm_lcc, pgm_i, opt_L, opt_P, opt_F, opt_c, opt_a, opt_l, opt_i, opt_P_signature, opt_windres, opt_lo, opt_lc, opt_lcc, @@ -1349,7 +1348,6 @@ data Settings = Settings { -- See Note [Repeated -optP hashing] sOpt_F :: [String], sOpt_c :: [String], - sOpt_cxx :: [String], sOpt_a :: [String], sOpt_l :: [String], sOpt_windres :: [String], @@ -1435,8 +1433,6 @@ opt_F dflags = sOpt_F (settings dflags) opt_c :: DynFlags -> [String] opt_c dflags = concatMap (wayOptc (targetPlatform dflags)) (ways dflags) ++ sOpt_c (settings dflags) -opt_cxx :: DynFlags -> [String] -opt_cxx dflags = sOpt_cxx (settings dflags) opt_a :: DynFlags -> [String] opt_a dflags = sOpt_a (settings dflags) opt_l :: DynFlags -> [String] @@ -2545,7 +2541,7 @@ setObjectDir, setHiDir, setHieDir, setStubDir, setDumpDir, setOutputDir, setDynObjectSuf, setDynHiSuf, setDylibInstallName, setObjectSuf, setHiSuf, setHieSuf, setHcSuf, parseDynLibLoaderMode, - setPgmP, addOptl, addOptc, addOptcxx, addOptP, + setPgmP, addOptl, addOptc, addOptP, addCmdlineFramework, addHaddockOpts, addGhciScript, setInteractivePrint :: String -> DynFlags -> DynFlags @@ -2661,7 +2657,6 @@ setDumpPrefixForce f d = d { dumpPrefixForce = f} setPgmP f = let (pgm:args) = words f in alterSettings (\s -> s { sPgm_P = (pgm, map Option args)}) addOptl f = alterSettings (\s -> s { sOpt_l = f : sOpt_l s}) addOptc f = alterSettings (\s -> s { sOpt_c = f : sOpt_c s}) -addOptcxx f = alterSettings (\s -> s { sOpt_cxx = f : sOpt_cxx s}) addOptP f = alterSettings (\s -> s { sOpt_P = f : sOpt_P s , sOpt_P_fingerprint = fingerprintStrings (f : sOpt_P s) }) @@ -3066,8 +3061,6 @@ dynamic_flags_deps = [ (hasArg (\f -> alterSettings (\s -> s { sOpt_F = f : sOpt_F s}))) , make_ord_flag defFlag "optc" (hasArg addOptc) - , make_ord_flag defFlag "optcxx" - (hasArg addOptcxx) , make_ord_flag defFlag "opta" (hasArg (\f -> alterSettings (\s -> s { sOpt_a = f : sOpt_a s}))) , make_ord_flag defFlag "optl" diff --git a/compiler/main/HscTypes.hs b/compiler/main/HscTypes.hs index b70fb8ac95..e46574ba05 100644 --- a/compiler/main/HscTypes.hs +++ b/compiler/main/HscTypes.hs @@ -30,7 +30,6 @@ module HscTypes ( ModGuts(..), CgGuts(..), ForeignStubs(..), appendStubC, ImportedMods, ImportedBy(..), importedByUser, ImportedModsVal(..), SptEntry(..), ForeignSrcLang(..), - phaseForeignLanguage, ModSummary(..), ms_imps, ms_installed_mod, ms_mod_name, ms_home_imps, home_imps, ms_home_allimps, ms_home_srcimps, showModMsg, isBootSummary, @@ -186,7 +185,6 @@ import CmdLineParser import DynFlags import DriverPhases ( Phase, HscSource(..), hscSourceString , isHsBootOrSig, isHsigFile ) -import qualified DriverPhases as Phase import BasicTypes import IfaceSyn import Maybes @@ -3203,13 +3201,3 @@ moduleRetainsAllBindings hsc_env mod case thisModSummary of Just summary -> Just fp == (ml_hs_file . ms_location) summary Nothing -> False - --- | Foreign language of the phase if the phase deals with a foreign code -phaseForeignLanguage :: Phase -> Maybe ForeignSrcLang -phaseForeignLanguage phase = case phase of - Phase.Cc -> Just LangC - Phase.Ccxx -> Just LangCxx - Phase.Cobjc -> Just LangObjc - Phase.Cobjcxx -> Just LangObjcxx - Phase.HCc -> Just LangC - _ -> Nothing diff --git a/compiler/main/SysTools.hs b/compiler/main/SysTools.hs index 6d14fd1229..9bbce19602 100644 --- a/compiler/main/SysTools.hs +++ b/compiler/main/SysTools.hs @@ -315,7 +315,6 @@ initSysTools top_dir sOpt_P_fingerprint = fingerprint0, sOpt_F = [], sOpt_c = [], - sOpt_cxx = [], sOpt_a = [], sOpt_l = [], sOpt_windres = [], diff --git a/compiler/main/SysTools/ExtraObj.hs b/compiler/main/SysTools/ExtraObj.hs index 149d3a678a..774884a0d7 100644 --- a/compiler/main/SysTools/ExtraObj.hs +++ b/compiler/main/SysTools/ExtraObj.hs @@ -40,7 +40,7 @@ mkExtraObj dflags extn xs oFile <- newTempName dflags TFL_GhcSession "o" writeFile cFile xs ccInfo <- liftIO $ getCompilerInfo dflags - runCc Nothing dflags + runCc dflags ([Option "-c", FileOption "" cFile, Option "-o", diff --git a/compiler/main/SysTools/Tasks.hs b/compiler/main/SysTools/Tasks.hs index 72f01f63bc..ce71ccb170 100644 --- a/compiler/main/SysTools/Tasks.hs +++ b/compiler/main/SysTools/Tasks.hs @@ -10,7 +10,6 @@ module SysTools.Tasks where import Exception import ErrUtils -import HscTypes import DynFlags import Outputable import Platform @@ -59,18 +58,13 @@ runPp dflags args = do runSomething dflags "Haskell pre-processor" prog (args ++ opts) -- | Run compiler of C-like languages and raw objects (such as gcc or clang). -runCc :: Maybe ForeignSrcLang -> DynFlags -> [Option] -> IO () -runCc mLanguage dflags args = do +runCc :: DynFlags -> [Option] -> IO () +runCc dflags args = do let (p, args0) = pgm_c dflags - filteredArgs0 = - if mLanguage == Just LangCxx - then filter (/= Option "-std=gnu99") args0 -- it's default for C++ - else args0 - args1 = map Option userOpts - args2 = filteredArgs0 ++ languageOptions ++ args ++ args1 - -- We take care to pass -optc flags in args1 last to ensure that the -- user can override flags passed by GHC. See #14452. + args1 = map Option (getOpts dflags opt_c) + args2 = args0 ++ args ++ args1 mb_env <- getGccEnv args2 runSomethingResponseFile dflags cc_filter "C Compiler" p args2 mb_env where @@ -124,21 +118,6 @@ runCc mLanguage dflags args = do | "warning: call-clobbered register used" `isContainedIn` w = False | otherwise = True - -- force the C compiler to interpret this file as C when - -- compiling .hc files, by adding the -x c option. - -- Also useful for plain .c files, just in case GHC saw a - -- -x c option. - (languageOptions, userOpts) = case mLanguage of - Nothing -> ([], userOpts_c) - Just language -> ([Option "-x", Option languageName], opts) where - (languageName, opts) = case language of - LangCxx -> ("c++", userOpts_cxx) - LangObjc -> ("objective-c", userOpts_c) - LangObjcxx -> ("objective-c++", userOpts_cxx) - _ -> ("c", userOpts_c) - userOpts_c = getOpts dflags opt_c - userOpts_cxx = getOpts dflags opt_cxx - isContainedIn :: String -> String -> Bool xs `isContainedIn` ys = any (xs `isPrefixOf`) (tails ys) diff --git a/docs/users_guide/phases.rst b/docs/users_guide/phases.rst index 2a17edbba7..f5f735b81b 100644 --- a/docs/users_guide/phases.rst +++ b/docs/users_guide/phases.rst @@ -154,13 +154,6 @@ the following flags: Pass ⟨option⟩ to the C compiler. -.. ghc-flag:: -optcxx ⟨option⟩ - :shortdesc: pass ⟨option⟩ to the C++ compiler - :type: dynamic - :category: phase-options - - Pass ⟨option⟩ to the C++ compiler. - .. ghc-flag:: -optlo ⟨option⟩ :shortdesc: pass ⟨option⟩ to the LLVM optimiser :type: dynamic diff --git a/testsuite/tests/driver/T16737.hs b/testsuite/tests/driver/T16737.hs index facc15cb43..0abe5457b0 100644 --- a/testsuite/tests/driver/T16737.hs +++ b/testsuite/tests/driver/T16737.hs @@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -DFOO=2 -optP=-DBAR=3 -optc=-DBAZ=5 -optcxx=-DBAZ=5 #-} +{-# OPTIONS_GHC -DFOO=2 -optP=-DBAR=3 -optc=-DBAZ=5 #-} import Language.Haskell.TH.Syntax diff --git a/testsuite/tests/ffi/should_compile/all.T b/testsuite/tests/ffi/should_compile/all.T index 1aa32c87d5..0f2f3901c4 100644 --- a/testsuite/tests/ffi/should_compile/all.T +++ b/testsuite/tests/ffi/should_compile/all.T @@ -32,12 +32,3 @@ test('cc016', normal, compile, ['']) test('T10460', normal, compile, ['']) test('T11983', [omit_ways(['ghci'])], compile, ['T11983.c']) test('T14125', normal, compile, ['']) -test( - 'cc017', - normal, - compile, - [ - '-optc=-DC -optcxx=-DCXX -optcxx=-std=c++11' - + (' -optcxx=-stdlib=libc++' if opsys('darwin') else '') - ], -) diff --git a/testsuite/tests/ffi/should_compile/cc017.hs b/testsuite/tests/ffi/should_compile/cc017.hs deleted file mode 100644 index a0ff8163db..0000000000 --- a/testsuite/tests/ffi/should_compile/cc017.hs +++ /dev/null @@ -1,19 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -import Language.Haskell.TH.Syntax - --- Check -optc and -optcxx options passing. --- This file must be compiled with -optc=-DC -optcxx=-DCXX - -do addForeignSource LangC - "int CXX = 0; // -DCXX must not be passed to C \n\ - \_Static_assert(C, \"name C must come from -DC\"); " - - addForeignSource LangCxx - "int C = 0; // -DC must not be passed to C++ \n\ - \static_assert(CXX, \"name CXX must come from -DCXX\"); " - - pure [] - -main :: IO () -main = pure () diff --git a/testsuite/tests/th/T13366.hs b/testsuite/tests/th/T13366.hs index 7d998f2ae8..6a3bda3d09 100644 --- a/testsuite/tests/th/T13366.hs +++ b/testsuite/tests/th/T13366.hs @@ -1,6 +1,6 @@ {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -optc-DA_MACRO=1 -optcxx-DA_MACRO=1 #-} +{-# OPTIONS_GHC -optc-DA_MACRO=1 #-} import Language.Haskell.TH.Syntax import System.IO (hFlush, stdout) |