X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Fc%CE%BBash.git;a=blobdiff_plain;f=clash%2FCLasH%2FNormalize.hs;fp=clash%2FCLasH%2FNormalize.hs;h=2778aa22057250a10ed65f92fb3d818495c5181e;hp=89f21c00ef0ecf83661a8a6248b5ae6b758d69d4;hb=0e1a00f9a5b95f27cc10b3ffaa6533b6f321fd5c;hpb=bc062e2fd11672ccdd4705e5211efba0d8efbd64 diff --git a/clash/CLasH/Normalize.hs b/clash/CLasH/Normalize.hs index 89f21c0..2778aa2 100644 --- a/clash/CLasH/Normalize.hs +++ b/clash/CLasH/Normalize.hs @@ -493,6 +493,8 @@ casesimpl c expr@(Case scrut bndr ty alts) | not bndr_used = do doalt alt@(DEFAULT, [], expr) = do local_var <- Trans.lift $ is_local_var expr repr <- isRepr expr + -- Extract any expressions that is not a local var already and is + -- representable (to prevent loops with inlinenonrep). (exprbinding_maybe, expr') <- if (not local_var) && repr then do id <- Trans.lift $ mkBinderFor expr "caseval"