diff --git a/compiler/simplCore/Exitify.hs b/compiler/simplCore/Exitify.hs index 2d3b5aff55b9f5190dea23c40a2c4aa4d22c1872..929592282cdd47d4f18f0b658472545ee7943983 100644 --- a/compiler/simplCore/Exitify.hs +++ b/compiler/simplCore/Exitify.hs @@ -48,6 +48,7 @@ import VarEnv import CoreFVs import FastString import Type +import MkCore ( sortQuantVars ) import Data.Bifunctor import Control.Monad @@ -166,7 +167,14 @@ exitify in_scope pairs = is_interesting = anyVarSet isLocalId (fvs `minusVarSet` mkVarSet captured) -- The possible arguments of this exit join point - args = filter (`elemVarSet` fvs) captured + args = + map zap $ + sortQuantVars $ + filter (`elemVarSet` fvs) captured + + -- cf. SetLevels.abstractVars + zap v | isId v = setIdInfo v vanillaIdInfo + | otherwise = v -- We cannot abstract over join points captures_join_points = any isJoinId args