-- parsing DynFlags
parseDynamicFlags,
+ allFlags,
-- misc stuff
machdepCCOpts, picCCOpts,
| Opt_D_dump_hi
| Opt_D_dump_hi_diffs
| Opt_D_dump_minimal_imports
+ | Opt_D_faststring_stats
| Opt_DoCoreLinting
| Opt_DoStgLinting
| Opt_DoCmmLinting
| Opt_RecompChecking
| Opt_DryRun
| Opt_DoAsmMangling
+ | Opt_WriteIface
| Opt_ExcessPrecision
| Opt_ReadUserPackageConf
| Opt_NoHsMain
-- a good thing anyway, but it seems fragile.
Opt_DoAsmMangling,
+ Opt_WriteIface,
-- and the default no-optimisation options:
Opt_IgnoreInterfacePragmas,
-- -----------------------------------------------------------------------------
-- DynFlags parser
+allFlags :: [String]
+allFlags = map ('-':) $
+ [ name | (name, optkind) <- dynamic_flags, ok optkind ] ++
+ map ("fno-"++) flags ++
+ map ("f"++) flags
+ where ok (PrefixPred _ _) = False
+ ok _ = True
+ flags = map fst fFlags
+
dynamic_flags :: [(String, OptKind DynP)]
dynamic_flags = [
( "n" , NoArg (setDynFlag Opt_DryRun) )
, ( "stubdir" , HasArg (upd . setStubDir . Just))
------- Keeping temporary files -------------------------------------
- , ( "keep-hc-file" , AnySuffix (\_ -> setDynFlag Opt_KeepHcFiles))
- , ( "keep-s-file" , AnySuffix (\_ -> setDynFlag Opt_KeepSFiles))
+ , ( "keep-hc-file" , AnySuffix (\_ -> do setDynFlag Opt_KeepHcFiles
+ setTarget HscC))
+ , ( "keep-s-file" , AnySuffix (\_ -> do setDynFlag Opt_KeepSFiles
+ setTarget HscAsm))
, ( "keep-raw-s-file", AnySuffix (\_ -> setDynFlag Opt_KeepRawSFiles))
, ( "keep-tmp-files" , AnySuffix (\_ -> setDynFlag Opt_KeepTmpFiles))
, ( "dcmm-lint", NoArg (setDynFlag Opt_DoCmmLinting))
, ( "dshow-passes", NoArg (do unSetDynFlag Opt_RecompChecking
setVerbosity "2") )
+ , ( "dfaststring-stats", NoArg (setDynFlag Opt_D_faststring_stats))
------ Machine dependant (-m<blah>) stuff ---------------------------
------ Compiler flags -----------------------------------------------
- , ( "fno-code", NoArg (setTarget HscNothing))
+ , ( "fno-code", NoArg (do setTarget HscNothing
+ unSetDynFlag Opt_WriteIface))
, ( "fasm", AnySuffix (\_ -> setTarget HscAsm) )
, ( "fvia-c", NoArg (setTarget HscC) )
, ( "fvia-C", NoArg (setTarget HscC) )
( "case-merge", Opt_CaseMerge ),
( "unbox-strict-fields", Opt_UnboxStrictFields ),
( "excess-precision", Opt_ExcessPrecision ),
- ( "asm-mangling", Opt_DoAsmMangling )
+ ( "asm-mangling", Opt_DoAsmMangling ),
+ ( "write-iface", Opt_WriteIface )
]
glasgowExtsFlags = [
-- and get in the way of -split-objs. Another option
-- would be to throw them away in the mangler, but this
-- is easier.
- "-fno-unit-at-a-time"
+ "-fno-unit-at-a-time",
-- unit-at-a-time doesn't do us any good, and screws
-- up -split-objs by moving the split markers around.
-- It's only turned on with -O2, but put it here just
-- in case someone uses -optc-O2.
+ "-fno-builtin"
+ -- calling builtins like strlen() using the FFI can
+ -- cause gcc to run out of regs, so use the external
+ -- version.
] )
#elif mips_TARGET_ARCH