diff options
-rw-r--r-- | compiler/main/DriverPipeline.hs | 10 | ||||
-rw-r--r-- | compiler/main/DynFlags.hs | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index b378cfe673..9851ce1d75 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -1338,7 +1338,13 @@ runPhase LlvmLlc input_fn dflags | not opt_Static = "dynamic-no-pic" | otherwise = "static" - output_fn <- phaseOutputFilename LlvmMangle + -- hidden debugging flag '-dno-llvm-mangler' to skip mangling + let next_phase = case dopt Opt_NoLlvmMangler dflags of + False -> LlvmMangle + True | dopt Opt_SplitObjs dflags -> Splitter + True -> As + + output_fn <- phaseOutputFilename next_phase io $ SysTools.runLlvmLlc dflags ([ SysTools.Option (llvmOpts !! opt_lvl), @@ -1348,7 +1354,7 @@ runPhase LlvmLlc input_fn dflags ++ map SysTools.Option lc_opts ++ map SysTools.Option fpOpts) - return (LlvmMangle, output_fn) + return (next_phase, output_fn) where -- Bug in LLVM at O3 on OSX. llvmOpts = if platformOS (targetPlatform dflags) == OSDarwin diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index c6f886e0d3..4eb6dc9bcb 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -220,6 +220,7 @@ data DynFlag | Opt_DoStgLinting | Opt_DoCmmLinting | Opt_DoAsmLinting + | Opt_NoLlvmMangler | Opt_WarnIsError -- -Werror; makes warnings fatal @@ -1573,6 +1574,7 @@ dynamic_flags = [ , Flag "dshow-passes" (NoArg (do forceRecompile setVerbosity $ Just 2)) , Flag "dfaststring-stats" (NoArg (setDynFlag Opt_D_faststring_stats)) + , Flag "dno-llvm-mangler" (NoArg (setDynFlag Opt_NoLlvmMangler)) ------ Machine dependant (-m<blah>) stuff --------------------------- |