Kill redundant patterns
authorBen Gamari <ben@smart-cactus.org>
Thu, 3 Dec 2015 18:43:39 +0000 (13:43 -0500)
committerBen Gamari <ben@smart-cactus.org>
Thu, 3 Dec 2015 22:00:16 +0000 (23:00 +0100)
George's new exhaustiveness checker now realizes these are impossible.
Yay!

compiler/cmm/Hoopl/Dataflow.hs
compiler/nativeGen/RegAlloc/Graph/Main.hs
compiler/nativeGen/RegAlloc/Liveness.hs

index 29c7afe..beaf6bc 100644 (file)
@@ -163,7 +163,6 @@ arfGraph pass@FwdPass { fp_lattice = lattice,
                 -> Fact e f -> UniqSM (DG f n e C, Fact C f)
              c NothingC (JustO entry)   f = (block entry `cat` body (successors entry) bdy) f
              c (JustC entries) NothingO f = body entries bdy f
-             c _ _ _ = error "bogus GADT pattern match failure"
 
     -- Lift from nodes to blocks
     block BNil            f = return (dgnil, f)
@@ -253,7 +252,6 @@ analyzeFwd FwdPass { fp_lattice = lattice,
       = case (entries, entry) of
          (NothingC, JustO entry)   -> block entry `cat` body (successors entry)
          (JustC entries, NothingO) -> body entries
-         _ -> error "bogus GADT pattern match failure"
      where
        body  :: [Label] -> Fact C f -> Fact C f
        body entries f
@@ -296,7 +294,6 @@ analyzeFwdBlocks FwdPass { fp_lattice = lattice,
       = case (entries, entry) of
          (NothingC, JustO entry)   -> block entry `cat` body (successors entry)
          (JustC entries, NothingO) -> body entries
-         _ -> error "bogus GADT pattern match failure"
      where
        body  :: [Label] -> Fact C f -> Fact C f
        body entries f
@@ -339,7 +336,6 @@ analyzeBwd BwdPass { bp_lattice = lattice,
       = case (entries, entry) of
          (NothingC, JustO entry)   -> body (successors entry)
          (JustC entries, NothingO) -> body entries
-         _ -> error "bogus GADT pattern match failure"
      where
        body  :: [Label] -> Fact C f -> Fact C f
        body entries f
@@ -429,7 +425,6 @@ arbGraph pass@BwdPass { bp_lattice  = lattice,
                 -> Fact C f -> UniqSM (DG f n e C, Fact e f)
              c NothingC (JustO entry)   f = (block entry `cat` body (successors entry) bdy) f
              c (JustC entries) NothingO f = body entries bdy f
-             c _ _ _ = error "bogus GADT pattern match failure"
 
     -- Lift from nodes to blocks
     block BNil            f = return (dgnil, f)
index 05db68d..8d5a4db 100644 (file)
@@ -355,9 +355,6 @@ graphAddCoalesce (r1, r2) graph
         , RegReal _             <- r2
         = graph
 
-graphAddCoalesce _ _
-        = panic "graphAddCoalesce: bogus"
-
 
 -- | Patch registers in code using the reg -> reg mapping in this graph.
 patchRegsFromGraph
index 167197d..c1c2e3c 100644 (file)
@@ -909,8 +909,6 @@ livenessForward platform rsLiveEntry (li@(LiveInstr instr mLive) : lis)
         in LiveInstr instr (Just live { liveBorn = rsBorn })
                 : livenessForward platform rsLiveNext lis
 
-livenessForward _ _ _             = panic "RegLiveness.livenessForward: no match"
-
 
 -- | Calculate liveness going backwards,
 --   filling in when regs die, and what regs are live across each instruction