summaryrefslogtreecommitdiff
path: root/compiler/GHC/Driver/Pipeline.hs
diff options
context:
space:
mode:
authorPepe Iborra <pepeiborra@gmail.com>2021-05-17 13:26:28 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-05-26 16:03:52 -0400
commit9faafb0aaff04e86a58b9e108f84618b12f2057c (patch)
tree653bf689feab7942bcfe49dab420a6c6f1fc3280 /compiler/GHC/Driver/Pipeline.hs
parentcdbce8fc22448837e53515946f16e9571e06f412 (diff)
downloadhaskell-9faafb0aaff04e86a58b9e108f84618b12f2057c.tar.gz
Avoid fingerprinting the absolute path to the source file
This change aims to make source files relocatable w.r.t. to the interface files produced by the compiler. This is so that we can download interface files produced by a cloud build system and then reuse them in a local ghcide session catch another case of implicit includes actually use the implicit quote includes add another missing case recomp020 test that .hi files are reused even if .hs files are moved to a new location Added recomp021 to record behaviour with non implicit includes add a note additional pointer to the note Mention #16956 in Note
Diffstat (limited to 'compiler/GHC/Driver/Pipeline.hs')
-rw-r--r--compiler/GHC/Driver/Pipeline.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/compiler/GHC/Driver/Pipeline.hs b/compiler/GHC/Driver/Pipeline.hs
index 54221c4847..307499887d 100644
--- a/compiler/GHC/Driver/Pipeline.hs
+++ b/compiler/GHC/Driver/Pipeline.hs
@@ -291,7 +291,7 @@ compileOne' m_tc_result mHscMessage
= (Interpreter, dflags2 { backend = Interpreter })
| otherwise
= (backend dflags, dflags2)
- dflags = dflags3 { includePaths = addQuoteInclude old_paths [current_dir] }
+ dflags = dflags3 { includePaths = addImplicitQuoteInclude old_paths [current_dir] }
hsc_env = hsc_env0 {hsc_dflags = dflags}
-- -fforce-recomp should also work with --make
@@ -1234,7 +1234,7 @@ runPhase (RealPhase (Hsc src_flavour)) input_fn
-- the .hs files resides) to the include path, since this is
-- what gcc does, and it's probably what you want.
let current_dir = takeDirectory basename
- new_includes = addQuoteInclude paths [current_dir]
+ new_includes = addImplicitQuoteInclude paths [current_dir]
paths = includePaths dflags0
dflags = dflags0 { includePaths = new_includes }
@@ -1525,7 +1525,8 @@ runPhase (RealPhase cc_phase) input_fn
let include_paths_global = foldr (\ x xs -> ("-I" ++ x) : xs) []
(includePathsGlobal cmdline_include_paths ++ pkg_include_dirs)
let include_paths_quote = foldr (\ x xs -> ("-iquote" ++ x) : xs) []
- (includePathsQuote cmdline_include_paths)
+ (includePathsQuote cmdline_include_paths ++
+ includePathsQuoteImplicit cmdline_include_paths)
let include_paths = include_paths_quote ++ include_paths_global
-- pass -D or -optP to preprocessor when compiling foreign C files
@@ -1670,7 +1671,8 @@ runPhase (RealPhase (As with_cpp)) input_fn
let global_includes = [ GHC.SysTools.Option ("-I" ++ p)
| p <- includePathsGlobal cmdline_include_paths ]
let local_includes = [ GHC.SysTools.Option ("-iquote" ++ p)
- | p <- includePathsQuote cmdline_include_paths ]
+ | p <- includePathsQuote cmdline_include_paths ++
+ includePathsQuoteImplicit cmdline_include_paths]
let runAssembler inputFilename outputFilename
= liftIO $
withAtomicRename outputFilename $ \temp_outputFilename ->
@@ -1938,7 +1940,8 @@ doCpp logger tmpfs dflags unit_env raw input_fn output_fn = do
let include_paths_global = foldr (\ x xs -> ("-I" ++ x) : xs) []
(includePathsGlobal cmdline_include_paths ++ pkg_include_dirs)
let include_paths_quote = foldr (\ x xs -> ("-iquote" ++ x) : xs) []
- (includePathsQuote cmdline_include_paths)
+ (includePathsQuote cmdline_include_paths ++
+ includePathsQuoteImplicit cmdline_include_paths)
let include_paths = include_paths_quote ++ include_paths_global
let verbFlags = getVerbFlags dflags