Skip to content
  • Sylvain Henry's avatar
    Refactor -dynamic-too handling · c85f4928
    Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
    1) Don't modify DynFlags (too much) for -dynamic-too: now when we
       generate dynamic outputs for "-dynamic-too", we only set "dynamicNow"
       boolean field in DynFlags instead of modifying several other fields.
       These fields now have accessors that take dynamicNow into account.
    
    2) Use DynamicTooState ADT to represent -dynamic-too state. It's much
       clearer than the undocumented "DynamicTooConditional" that was used
       before.
    
    As a result, we can finally remove the hscs_iface_dflags field in
    HscRecomp. There was a comment on this field saying:
    
       "FIXME (osa): I don't understand why this is necessary, but I spent
       almost two days trying to figure this out and I couldn't .. perhaps
       someone who understands this code better will remove this later."
    
    I don't fully understand the details, but it was needed because of the
    changes made to the DynFlags for -dynamic-too.
    
    There is still something very dubious in GHC.Iface.Recomp: we have to
    disable the "dynamicNow" flag at some point for some Backpack's "heinous
    hack" to continue to work. It may be because interfaces for indefinite
    units are always non-dynamic, or because we mix and match dynamic and
    non-dynamic interfaces (#9176), or something else, who knows?
    c85f4928