@@ -480,6 +480,11 @@ reduceJS js = reduceLoop [] ([], js)
480funName :: JS -> String
480funName :: JS -> String
481funName (JSAlloc fun _) = fun
481funName (JSAlloc fun _) = fun
483+elimDeadLoop :: [JS] -> [JS]
485+ | ret <- deadEvalApplyCases js
486+ , ret /= js = elimDeadLoop ret
484deadEvalApplyCases :: [JS] -> [JS]
489deadEvalApplyCases :: [JS] -> [JS]
485deadEvalApplyCases js =
490deadEvalApplyCases js =
@@ -942,7 +947,7 @@ codegenJavaScript target definitions filename outputType = do
942 constRemoved = map reduceConstants reduced
947 constRemoved = map reduceConstants reduced
943 constrInit = initConstructors constRemoved
948 constrInit = initConstructors constRemoved
944 removeAlloc = map removeAllocations constrInit
949 removeAlloc = map removeAllocations constrInit
945− deadElim = deadEvalApplyCases removeAlloc
950+ deadElim = elimDeadLoop removeAlloc
946 js = inlineFunctions deadElim in
951 js = inlineFunctions deadElim in
947 map compileJS js
952 map compileJS js