From: simonpj Date: Wed, 28 May 2003 08:22:22 +0000 (+0000) Subject: [project @ 2003-05-28 08:22:22 by simonpj] X-Git-Tag: Approx_11550_changesets_converted~852 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=8ea6ae884aa28d770dd4ca5575e5757e2115883d;p=ghc-hetmet.git [project @ 2003-05-28 08:22:22 by simonpj] Remove duplicate #includes arising from foreign import decls --- diff --git a/ghc/compiler/main/CodeOutput.lhs b/ghc/compiler/main/CodeOutput.lhs index 7260f6e..14fbb0b 100644 --- a/ghc/compiler/main/CodeOutput.lhs +++ b/ghc/compiler/main/CodeOutput.lhs @@ -35,6 +35,7 @@ import ErrUtils ( dumpIfSet_dyn, showPass ) import Outputable import Pretty ( Mode(..), printDoc ) import Module ( Module ) +import ListSetOps ( removeDupsEq ) import Monad ( when ) import IO @@ -117,14 +118,16 @@ outputC dflags filenm flat_absC c_includes <- getPackageCIncludes pkg_configs let cmdline_includes = cmdlineHcIncludes dflags -- -#include options - ffi_decl_headers = case foreign_stubs of - NoStubs -> [] - ForeignStubs _ _ fdhs _ -> fdhs + ffi_decl_headers + = case foreign_stubs of + NoStubs -> [] + ForeignStubs _ _ fdhs _ -> map unpackFS (fst (removeDupsEq fdhs)) + -- Remove duplicates, because distinct foreign import decls + -- may cite the same #include. Order doesn't matter. all_headers = c_includes ++ reverse cmdline_includes - ++ reverse (map unpackFS ffi_decl_headers) - -- reverse correct? + ++ ffi_decl_headers let cc_injects = unlines (map mk_include all_headers) mk_include h_file =