On SmartOS GHC flag warnings show up like this:
/tmp/ghc72341_0/ghc_1.hscpp:7:16: Warning:
-fffi is deprecated: use -XForeignFunctionInterface or pragma {-# LANGUAGE ForeignFunctionInterface #-} instead
It appears that this line in DriverPipeline leads to the correct filename in warnings on Ubuntu, but not on SmartOS:
src_opts <- liftIO $ getOptionsFromFile dflags0 output_fn
How does the intermediate hscpp filename get restored to a correct filename if warnings are generated during a re-read of the pragmas after having preprocessed the file?
Full investigation notes are here (rambling and unedited):
https://gist.github.com/AlainODea/98141991849093285c52