Don't extra non-representable values in simplres.
[matthijs/master-project/cλash.git] / cλash / CLasH / Normalize.hs
index ec7a66bf991ea5f5ff65fc5b3ac231ec7123ab82..2f74be883ffa601522ae8d4350b40332b2c3896e 100644 (file)
@@ -651,7 +651,10 @@ simplrestop expr@(Lam _ _) = return expr
 simplrestop expr@(Let _ _) = return expr
 simplrestop expr = do
   local_var <- Trans.lift $ is_local_var expr
-  if local_var
+  -- Don't extract values that are not representable, to prevent loops with
+  -- inlinenonrep
+  repr <- isRepr expr
+  if local_var || not repr
     then
       return expr
     else do