Add an empty let before starting normalization.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Sun, 21 Jun 2009 16:09:20 +0000 (18:09 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Sun, 21 Jun 2009 16:09:20 +0000 (18:09 +0200)
This ensures that every expression will always contain a let at the top
level, since none of the transforms will remove the last let (lets are
only merged when two are nested).

Normalize.hs

index 93e89b615a0b493ef8a64ebdb99d9029f7ec5f15..57af9125b0195c5194065f041e5c3a71dc77b634 100644 (file)
@@ -442,6 +442,10 @@ normalizeBind bndr = do
       expr_maybe <- getGlobalBind bndr
       case expr_maybe of 
         Just expr -> do
+          -- Introduce an empty Let at the top level, so there will always be
+          -- a let in the expression (none of the transformations will remove
+          -- the last let).
+          let expr' = Let (Rec []) expr
           -- Normalize this expression
           trace ("Transforming " ++ (show bndr) ++ "\nBefore:\n\n" ++ showSDoc ( ppr expr ) ++ "\n") $ return ()
           expr' <- dotransforms transforms expr