+ static_opts <- buildStaticHscOpts
+ writeIORef v_Static_hsc_opts static_opts
+
+ -- build the default DynFlags (these may be adjusted on a per
+ -- module basis by OPTIONS pragmas and settings in the interpreter).
+
+ core_todo <- buildCoreToDo
+ stg_todo <- buildStgToDo
+
+ -- set the "global" HscLang. The HscLang can be further adjusted on a module
+ -- by module basis, using only the -fvia-C and -fasm flags. If the global
+ -- HscLang is not HscC or HscAsm, -fvia-C and -fasm have no effect.
+ opt_level <- readIORef v_OptLevel
+
+
+ let lang = case mode of
+ StopBefore HCc -> HscC
+ DoInteractive -> HscInterpreted
+ _other | opt_level >= 1 -> HscC -- -O implies -fvia-C
+ | otherwise -> defaultHscLang
+
+ writeIORef v_DynFlags
+ defaultDynFlags{ coreToDo = core_todo,
+ stgToDo = stg_todo,
+ hscLang = lang,
+ -- leave out hscOutName for now
+ hscOutName = panic "Main.main:hscOutName not set",
+
+ verbosity = case mode of
+ DoInteractive -> 1
+ DoMake -> 1
+ _other -> 0,
+ }