Adam Gundry pushed to branch wip/amg/castz at Glasgow Haskell Compiler / GHC

Commits:

1 changed file:

Changes:

  • compiler/GHC/HsToCore/Binds.hs
    ... ... @@ -58,6 +58,7 @@ import GHC.Core.Type
    58 58
     import GHC.Core.Coercion
    
    59 59
     import GHC.Core.Rules
    
    60 60
     import GHC.Core.TyCo.Compare( eqType )
    
    61
    +import GHC.Core.TyCo.FVs
    
    61 62
     
    
    62 63
     import GHC.Builtin.Names
    
    63 64
     import GHC.Builtin.Types ( naturalTy, typeSymbolKind, charTy )
    
    ... ... @@ -1666,7 +1667,12 @@ ds_hs_wrapper wrap = go wrap
    1666 1667
         go (WpEvLam ev)      k = k $ Lam ev
    
    1667 1668
         go (WpTyLam tv)      k = k $ Lam tv
    
    1668 1669
         go (WpCast co)       k = assert (coercionRole co == Representational) $
    
    1669
    -                             k $ \e -> mkCastDs e co
    
    1670
    +                              do { zap_casts <- hasZapCasts <$> getDynFlags
    
    1671
    +                                 ; k $ \e ->  -- AMG TODO: clean this up if it helps T5030
    
    1672
    +                                       if zap_casts
    
    1673
    +                                        then (if isReflCo co then e else mkCastZ e (coercionRKind co) (shallowCoVarsOfCo co))
    
    1674
    +                                        else mkCastDs e co
    
    1675
    +                                 }
    
    1670 1676
         go (WpEvApp tm)      k = do { core_tm <- dsEvTerm tm
    
    1671 1677
                                     ; k $ \e -> e `App` core_tm }
    
    1672 1678
         go (WpLet ev_binds)  k = dsTcEvBinds ev_binds $ \bs ->