[add case-omittable and case-trailing optimizations
John Meacham <john@repetae.net>**20060426043755] hunk ./E/SSimplify.hs 573
+    doCase e _ TVr { tvrIdent = 0 } [] (Just d) inb | isOmittable inb e = do
+        mtick "E.Simplify.case-omittable"
+        f d inb
hunk ./E/SSimplify.hs 580
+    doCase e _ b [] (Just (EVar v')) inb | b == v' = do
+        mtick "E.Simplify.case-trailing"
+        return e
hunk ./E/SSimplify.hs 622
+    isOmittable _ ELit {} = True
+    isOmittable _ EPi {} = True
+    isOmittable _ ELam {} = True
+    isOmittable _ (EPrim (APrim p _) _ _) = primIsConstant p
+    isOmittable inb (EVar v) = case mlookup (tvrIdent v) (envInScope inb) of
+        Just IsBoundTo { bindingE = e } | not (isEVar e) -> isOmittable inb e
+        Just (NotAmong _) -> True
+        _ -> False
+    isOmittable _ _ = False
+