[Git][ghc/ghc][wip/misc-cleanup4] Misc cleanup

Krzysztof Gogolewski (@monoidal) gitlab at gitlab.haskell.org
Mon Jan 9 23:32:49 UTC 2023



Krzysztof Gogolewski pushed to branch wip/misc-cleanup4 at Glasgow Haskell Compiler / GHC


Commits:
585d3ef6 by Krzysztof Gogolewski at 2023-01-10T00:13:02+01:00
Misc cleanup

- Use typeTypeOrConstraint - more symmetric and asserts that
  that the type is Type or Constraint
- Use text "foo" in JS, to make sure the rule fires
- Fix escape sequences in Python; they raise a deprecation warning
  with -Wdefault

- - - - -


13 changed files:

- compiler/GHC/CmmToAsm/Reg/Linear/JoinToTargets.hs
- compiler/GHC/Core/Make.hs
- compiler/GHC/Core/Opt/WorkWrap.hs
- compiler/GHC/Core/Type.hs
- compiler/GHC/HsToCore/Utils.hs
- compiler/GHC/JS/Ppr.hs
- compiler/GHC/Tc/Validity.hs
- testsuite/driver/runtests.py
- testsuite/tests/cabal/all.T
- testsuite/tests/cmm/should_compile/all.T
- testsuite/tests/codeGen/should_compile/all.T
- testsuite/tests/simplStg/should_compile/all.T
- testsuite/tests/stranal/sigs/all.T


Changes:

=====================================
compiler/GHC/CmmToAsm/Reg/Linear/JoinToTargets.hs
=====================================
@@ -199,8 +199,7 @@ joinToTargets_again
                         (return ())
                 -}
                 delta           <- getDeltaR
-                fixUpInstrs_    <- mapM (handleComponent delta instr) sccs
-                let fixUpInstrs = concat fixUpInstrs_
+                fixUpInstrs     <- concatMapM (handleComponent delta instr) sccs
 
                 -- make a new basic block containing the fixup code.
                 --      A the end of the current block we will jump to the fixup one,


=====================================
compiler/GHC/Core/Make.hs
=====================================
@@ -6,7 +6,7 @@ module GHC.Core.Make (
         mkCoreLet, mkCoreLets,
         mkCoreApp, mkCoreApps, mkCoreConApps,
         mkCoreLams, mkWildCase, mkIfThenElse,
-        mkWildValBinder, mkWildEvBinder,
+        mkWildValBinder,
         mkSingleAltCase,
         sortQuantVars, castBottomExpr,
 
@@ -54,7 +54,7 @@ import GHC.Prelude
 import GHC.Platform
 
 import GHC.Types.Id
-import GHC.Types.Var  ( EvVar, setTyVarUnique, visArgConstraintLike )
+import GHC.Types.Var  ( setTyVarUnique, visArgConstraintLike )
 import GHC.Types.TyThing
 import GHC.Types.Id.Info
 import GHC.Types.Cpr
@@ -173,9 +173,6 @@ mkCoreAppTyped d (fun, fun_ty) arg
 *                                                                      *
 ********************************************************************* -}
 
-mkWildEvBinder :: PredType -> EvVar
-mkWildEvBinder pred = mkWildValBinder ManyTy pred
-
 -- | Make a /wildcard binder/. This is typically used when you need a binder
 -- that you expect to use only at a *binding* site.  Do not use it at
 -- occurrence sites because it has a single, fixed unique, and it's very
@@ -1082,8 +1079,9 @@ mkImpossibleExpr :: Type -> String -> CoreExpr
 mkImpossibleExpr res_ty str
   = mkRuntimeErrorApp err_id res_ty str
   where    -- See Note [Type vs Constraint for error ids]
-    err_id | isConstraintLikeKind (typeKind res_ty) = iMPOSSIBLE_CONSTRAINT_ERROR_ID
-           | otherwise                              = iMPOSSIBLE_ERROR_ID
+    err_id = case typeTypeOrConstraint res_ty of
+               TypeLike       -> iMPOSSIBLE_ERROR_ID
+               ConstraintLike -> iMPOSSIBLE_CONSTRAINT_ERROR_ID
 
 {- Note [Type vs Constraint for error ids]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1207,8 +1205,9 @@ mkAbsentErrorApp :: Type         -- The type to instantiate 'a'
 mkAbsentErrorApp res_ty err_msg
   = mkApps (Var err_id) [ Type res_ty, err_string ]
   where
-    err_id | isConstraintLikeKind (typeKind res_ty) = aBSENT_CONSTRAINT_ERROR_ID
-           | otherwise                              = aBSENT_ERROR_ID
+    err_id = case typeTypeOrConstraint res_ty of
+               TypeLike       -> aBSENT_ERROR_ID
+               ConstraintLike -> aBSENT_CONSTRAINT_ERROR_ID
     err_string = Lit (mkLitString err_msg)
 
 absentErrorName, absentConstraintErrorName :: Name


=====================================
compiler/GHC/Core/Opt/WorkWrap.hs
=====================================
@@ -68,9 +68,7 @@ info for exported values).
 wwTopBinds :: WwOpts -> UniqSupply -> CoreProgram -> CoreProgram
 
 wwTopBinds ww_opts us top_binds
-  = initUs_ us $ do
-    top_binds' <- mapM (wwBind ww_opts) top_binds
-    return (concat top_binds')
+  = initUs_ us $ concatMapM (wwBind ww_opts) top_binds
 
 {-
 ************************************************************************


=====================================
compiler/GHC/Core/Type.hs
=====================================
@@ -770,7 +770,7 @@ isBoxedRuntimeRep rep = isJust (isBoxedRuntimeRep_maybe rep)
 -- expands to `Boxed lev` and returns `Nothing` otherwise.
 --
 -- Types with this runtime rep are represented by pointers on the GC'd heap.
-isBoxedRuntimeRep_maybe :: RuntimeRepType -> Maybe Type
+isBoxedRuntimeRep_maybe :: RuntimeRepType -> Maybe LevityType
 isBoxedRuntimeRep_maybe rep
   | Just (rr_tc, args) <- splitRuntimeRep_maybe rep
   , rr_tc `hasKey` boxedRepDataConKey


=====================================
compiler/GHC/HsToCore/Utils.hs
=====================================
@@ -81,7 +81,6 @@ import GHC.Types.Tickish
 import GHC.Utils.Misc
 import GHC.Driver.Session
 import GHC.Driver.Ppr
-import GHC.Data.FastString
 import qualified GHC.LanguageExtensions as LangExt
 
 import GHC.Tc.Types.Evidence
@@ -995,19 +994,10 @@ mkOptTickBox = flip (foldr Tick)
 
 mkBinaryTickBox :: Int -> Int -> CoreExpr -> DsM CoreExpr
 mkBinaryTickBox ixT ixF e = do
-       uq <- newUnique
        this_mod <- getModule
-       let bndr1 = mkSysLocal (fsLit "t1") uq OneTy boolTy
-         -- It's always sufficient to pattern-match on a boolean with
-         -- multiplicity 'One'.
-       let
+       let trueBox  = Tick (HpcTick this_mod ixT) (Var trueDataConId)
            falseBox = Tick (HpcTick this_mod ixF) (Var falseDataConId)
-           trueBox  = Tick (HpcTick this_mod ixT) (Var trueDataConId)
-       --
-       return $ Case e bndr1 boolTy
-                       [ Alt (DataAlt falseDataCon) [] falseBox
-                       , Alt (DataAlt trueDataCon)  [] trueBox
-                       ]
+       return $ mkIfThenElse e trueBox falseBox
 
 
 


=====================================
compiler/GHC/JS/Ppr.hs
=====================================
@@ -152,9 +152,9 @@ defRenderJsS r = \case
     ValExpr (JFunc is b) -> sep [jsToDocR r i <+> text "= function" <> parens (hsep . punctuate comma . map (jsToDocR r) $ is) <> char '{', nest 2 (jsToDocR r b), text "}"]
     _                    -> jsToDocR r i <+> char '=' <+> jsToDocR r x
   UOpStat op x
-    | isPre op && isAlphaOp op -> ftext (uOpText op) <+> optParens r x
-    | isPre op                 -> ftext (uOpText op) <> optParens r x
-    | otherwise                -> optParens r x <> ftext (uOpText op)
+    | isPre op && isAlphaOp op -> uOpText op <+> optParens r x
+    | isPre op                 -> uOpText op <> optParens r x
+    | otherwise                -> optParens r x <> uOpText op
   BlockStat xs -> jsToDocR r (flattenBlocks xs)
 
 flattenBlocks :: [JStat] -> [JStat]
@@ -174,11 +174,11 @@ defRenderJsE r = \case
   SelExpr x y       -> jsToDocR r x <> char '.' <> jsToDocR r y
   IdxExpr x y       -> jsToDocR r x <> brackets (jsToDocR r y)
   IfExpr x y z      -> parens (jsToDocR r x <+> char '?' <+> jsToDocR r y <+> char ':' <+> jsToDocR r z)
-  InfixExpr op x y  -> parens $ hsep [jsToDocR r x, ftext (opText op), jsToDocR r y]
+  InfixExpr op x y  -> parens $ hsep [jsToDocR r x, opText op, jsToDocR r y]
   UOpExpr op x
-    | isPre op && isAlphaOp op -> ftext (uOpText op) <+> optParens r x
-    | isPre op                 -> ftext (uOpText op) <> optParens r x
-    | otherwise                -> optParens r x <> ftext (uOpText op)
+    | isPre op && isAlphaOp op -> uOpText op <+> optParens r x
+    | isPre op                 -> uOpText op <> optParens r x
+    | otherwise                -> optParens r x <> uOpText op
   ApplExpr je xs -> jsToDocR r je <> (parens . hsep . punctuate comma $ map (jsToDocR r) xs)
   UnsatExpr e    -> jsToDocR r $ pseudoSaturate e
 
@@ -235,47 +235,47 @@ encodeJsonChar = \case
             let h = showHex cp ""
             in  text (prefix ++ replicate (pad - length h) '0' ++ h)
 
-uOpText :: JUOp -> FastString
+uOpText :: JUOp -> Doc
 uOpText = \case
-  NotOp     -> "!"
-  BNotOp    -> "~"
-  NegOp     -> "-"
-  PlusOp    -> "+"
-  NewOp     -> "new"
-  TypeofOp  -> "typeof"
-  DeleteOp  -> "delete"
-  YieldOp   -> "yield"
-  VoidOp    -> "void"
-  PreIncOp  -> "++"
-  PostIncOp -> "++"
-  PreDecOp  -> "--"
-  PostDecOp -> "--"
-
-opText :: JOp -> FastString
+  NotOp     -> text "!"
+  BNotOp    -> text "~"
+  NegOp     -> text "-"
+  PlusOp    -> text "+"
+  NewOp     -> text "new"
+  TypeofOp  -> text "typeof"
+  DeleteOp  -> text "delete"
+  YieldOp   -> text "yield"
+  VoidOp    -> text "void"
+  PreIncOp  -> text "++"
+  PostIncOp -> text "++"
+  PreDecOp  -> text "--"
+  PostDecOp -> text "--"
+
+opText :: JOp -> Doc
 opText = \case
-  EqOp          -> "=="
-  StrictEqOp    -> "==="
-  NeqOp         -> "!="
-  StrictNeqOp   -> "!=="
-  GtOp          -> ">"
-  GeOp          -> ">="
-  LtOp          -> "<"
-  LeOp          -> "<="
-  AddOp         -> "+"
-  SubOp         -> "-"
-  MulOp         -> "*"
-  DivOp         -> "/"
-  ModOp         -> "%"
-  LeftShiftOp   -> "<<"
-  RightShiftOp  -> ">>"
-  ZRightShiftOp -> ">>>"
-  BAndOp        -> "&"
-  BOrOp         -> "|"
-  BXorOp        -> "^"
-  LAndOp        -> "&&"
-  LOrOp         -> "||"
-  InstanceofOp  -> "instanceof"
-  InOp          -> "in"
+  EqOp          -> text "=="
+  StrictEqOp    -> text "==="
+  NeqOp         -> text "!="
+  StrictNeqOp   -> text "!=="
+  GtOp          -> text ">"
+  GeOp          -> text ">="
+  LtOp          -> text "<"
+  LeOp          -> text "<="
+  AddOp         -> text "+"
+  SubOp         -> text "-"
+  MulOp         -> text "*"
+  DivOp         -> text "/"
+  ModOp         -> text "%"
+  LeftShiftOp   -> text "<<"
+  RightShiftOp  -> text ">>"
+  ZRightShiftOp -> text ">>>"
+  BAndOp        -> text "&"
+  BOrOp         -> text "|"
+  BXorOp        -> text "^"
+  LAndOp        -> text "&&"
+  LOrOp         -> text "||"
+  InstanceofOp  -> text "instanceof"
+  InOp          -> text "in"
 
 
 isPre :: JUOp -> Bool


=====================================
compiler/GHC/Tc/Validity.hs
=====================================
@@ -774,7 +774,8 @@ check_type (ve at ValidityEnv{ ve_tidy_env = env, ve_ctxt = ctxt
   where
     (arg_rank, res_rank) = funArgResRank rank
 
-check_type _ ty = pprPanic "check_type" (ppr ty)
+check_type _ ty@(ForAllTy {}) = pprPanic "check_type" (ppr ty)
+check_type _ ty@(CoercionTy {}) = pprPanic "check_type" (ppr ty)
 
 ----------------------------------------
 check_syn_tc_app :: ValidityEnv


=====================================
testsuite/driver/runtests.py
=====================================
@@ -224,7 +224,7 @@ else:
         h.close()
         if v != '':
             # If it does then use the first utf8 locale that is available
-            h = os.popen('locale -a | grep -i "utf8\|utf-8" 2>/dev/null', 'r')
+            h = os.popen('locale -a | grep -i "utf8\\|utf-8" 2>/dev/null', 'r')
             v = h.readline().strip()
             h.close()
             if v != '':


=====================================
testsuite/tests/cabal/all.T
=====================================
@@ -1,5 +1,5 @@
 def normaliseDynlibNames(str):
-    return re.sub('-ghc[0-9.]+\.', '-ghc<VERSION>.', str)
+    return re.sub('-ghc[0-9.]+\\.', '-ghc<VERSION>.', str)
 
 def ignore_warnings(str):
     return re.sub(r'Warning:.*\n', '', str)


=====================================
testsuite/tests/cmm/should_compile/all.T
=====================================
@@ -3,7 +3,7 @@ setTestOpts(
   ])
 
 test('selfloop', [cmm_src], compile, ['-no-hs-main'])
-test('cmm_sink_sp', [ only_ways(['optasm']), grep_errmsg('(\[Sp.*\]).*(=).*(\[.*R1.*\]).*;',[1,2,3]), cmm_src], compile, ['-no-hs-main -ddump-cmm -dsuppress-uniques -O'])
+test('cmm_sink_sp', [ only_ways(['optasm']), grep_errmsg('(\\[Sp.*\\]).*(=).*(\\[.*R1.*\\]).*;',[1,2,3]), cmm_src], compile, ['-no-hs-main -ddump-cmm -dsuppress-uniques -O'])
 
 test('T16930', normal, makefile_test, ['T16930'])
 test('T17442', normal, compile, [''])


=====================================
testsuite/tests/codeGen/should_compile/all.T
=====================================
@@ -75,9 +75,9 @@ test('T14373',
       [ js_skip # JS backend doesn't produce Cmm
       ],
      multimod_compile_filter, ['T14373', '-fasm -O2 -c -ddump-cmm-from-stg',
-     'grep -e "const T14373\.._closure+.;"'])
+     'grep -e "const T14373\\.._closure+.;"'])
 
-switch_skeleton_only = 'grep -e "switch \[" -e "case " -e "default: " | sed -e "s|\] .*|\]|g" -e "s|goto .*|goto |g"'
+switch_skeleton_only = 'grep -e "switch \\[" -e "case " -e "default: " | sed -e "s|\\] .*|\\]|g" -e "s|goto .*|goto |g"'
 
 test('T14373a',
       [ js_skip # JS backend doesn't produce Cmm
@@ -95,8 +95,8 @@ test('T14373c',
      multimod_compile_filter, ['T14373c', '-fasm -O2 -c -ddump-cmm-from-stg',
      switch_skeleton_only])
 
-switch_skeleton_and_entries_only = ('grep -e "switch \[" -e "case " -e "default: " -e "Default_entry(" -e "R1 = .*_closure+2;"'
-                                    '| sed -e "s|\] .*|\]|g" -e "s|goto .*|goto |g" -e "s|R1 = .*_closure+2;.*|R1 = XYZ_closure+2;|g" -e "s|//.*|//|g"')
+switch_skeleton_and_entries_only = ('grep -e "switch \\[" -e "case " -e "default: " -e "Default_entry(" -e "R1 = .*_closure+2;"'
+                                    '| sed -e "s|\\] .*|\\]|g" -e "s|goto .*|goto |g" -e "s|R1 = .*_closure+2;.*|R1 = XYZ_closure+2;|g" -e "s|//.*|//|g"')
 
 test('T14373d',
       [ js_skip # JS backend doesn't produce Cmm


=====================================
testsuite/tests/simplStg/should_compile/all.T
=====================================
@@ -11,6 +11,6 @@ setTestOpts(f)
 
 test('T13588', [ grep_errmsg('case') ] , compile, ['-dverbose-stg2stg -fno-worker-wrapper'])
 test('T19717', normal, compile, ['-ddump-stg-final -dsuppress-uniques -dno-typeable-binds'])
-test('inferTags002', [ only_ways(['optasm']), grep_errmsg('(call stg\_ap\_0)', [1])], compile, ['-ddump-cmm -dsuppress-uniques -dno-typeable-binds -O'])
+test('inferTags002', [ only_ways(['optasm']), grep_errmsg('(call stg\\_ap\\_0)', [1])], compile, ['-ddump-cmm -dsuppress-uniques -dno-typeable-binds -O'])
 
 test('T22212', normal, compile, ['-O'])


=====================================
testsuite/tests/stranal/sigs/all.T
=====================================
@@ -23,7 +23,7 @@ test('T13380c', expect_broken('!3014'), compile, [''])
 test('T13380f', normal, compile, [''])
 test('T18086', normal, compile, ['-package ghc'])
 test('T18957', normal, compile, [''])
-test('T16197b', [grep_errmsg('\$wf')], compile, ['-ddump-simpl -dsuppress-uniques -dsuppress-all'])
+test('T16197b', [grep_errmsg('\\$wf')], compile, ['-ddump-simpl -dsuppress-uniques -dsuppress-all'])
 test('T19407', normal, compile, [''])
 test('T19871', normal, compile, [''])
 test('T16859', normal, compile, ['-package ghc'])



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/585d3ef6c7f48c4c53d2f1ff9632fde1225ade4b

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/585d3ef6c7f48c4c53d2f1ff9632fde1225ade4b
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230109/d5519260/attachment-0001.html>


More information about the ghc-commits mailing list