diff options
author | Curran McConnell <curran@atidot.com> | 2022-08-16 03:10:56 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-10-21 02:58:01 -0400 |
commit | 8cd6f435e60f9dd14ad55a0002ff833536e9ccb2 (patch) | |
tree | 67096c26a87980089ba29908c478dfb8a59d9d76 /compiler/GHC/Cmm/ContFlowOpt.hs | |
parent | 1ebd521f848289a99993f95af4e2021023537ad5 (diff) | |
download | haskell-8cd6f435e60f9dd14ad55a0002ff833536e9ccb2.tar.gz |
remove a no-warn directive from GHC.Cmm.ContFlowOpt
This patch is motivated by the desire to remove the {-# OPTIONS_GHC
-fno-warn-incomplete-patterns #-} directive at the top of
GHC.Cmm.ContFlowOpt. (Based on the text in this coding standards doc, I
understand it's a goal of the project to remove such directives.) I
chose this task because I'm a new contributor to GHC, and it seemed like
a good way to get acquainted with the patching process.
In order to address the warning that arose when I removed the no-warn
directive, I added a case to removeUnreachableBlocksProc to handle the
CmmData constructor. Clearly, since this partial function has not been
erroring out in the wild, its inputs are always in practice wrapped by
the CmmProc constructor. Therefore the CmmData case is handled by a
precise panic (which is an improvement over the partial pattern match
from before).
Diffstat (limited to 'compiler/GHC/Cmm/ContFlowOpt.hs')
-rw-r--r-- | compiler/GHC/Cmm/ContFlowOpt.hs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/compiler/GHC/Cmm/ContFlowOpt.hs b/compiler/GHC/Cmm/ContFlowOpt.hs index a9bb7b673e..59ed1e760b 100644 --- a/compiler/GHC/Cmm/ContFlowOpt.hs +++ b/compiler/GHC/Cmm/ContFlowOpt.hs @@ -1,6 +1,5 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE BangPatterns #-} -{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-} {-# OPTIONS_GHC -Wno-incomplete-record-updates #-} module GHC.Cmm.ContFlowOpt ( cmmCfgOpts @@ -21,8 +20,10 @@ import GHC.Cmm import GHC.Cmm.Utils import GHC.Cmm.Switch (mapSwitchTargets, switchTargetsToList) import GHC.Data.Maybe -import GHC.Utils.Panic +import GHC.Platform import GHC.Utils.Misc +import GHC.Utils.Outputable +import GHC.Utils.Panic import Control.Monad @@ -422,9 +423,9 @@ predMap blocks = foldr add_preds mapEmpty blocks add_preds block env = foldr add env (successors block) where add lbl env = mapInsertWith (+) lbl 1 env --- Removing unreachable blocks -removeUnreachableBlocksProc :: CmmDecl -> CmmDecl -removeUnreachableBlocksProc proc@(CmmProc info lbl live g) +-- Remove unreachable blocks from procs +removeUnreachableBlocksProc :: Platform -> CmmDecl -> CmmDecl +removeUnreachableBlocksProc _ proc@(CmmProc info lbl live g) | used_blocks `lengthLessThan` mapSize (toBlockMap g) = CmmProc info' lbl live g' | otherwise @@ -446,3 +447,5 @@ removeUnreachableBlocksProc proc@(CmmProc info lbl live g) used_lbls :: LabelSet used_lbls = setFromList $ map entryLabel used_blocks +removeUnreachableBlocksProc platform data'@(CmmData _ _) = + pprPanic "removeUnreachableBlocksProc: passed data declaration instead of procedure" (pdoc platform data') |