Remove vectored returns.
[ghc-hetmet.git] / compiler / codeGen / CgExpr.lhs
index 8834078..e58fda7 100644 (file)
@@ -121,11 +121,8 @@ cgExpr (StgOpApp (StgFCallOp fcall _) stg_args res_ty) = do
                    | (stg_arg, (rep,expr)) <- stg_args `zip` reps_n_amodes, 
                      nonVoidArg rep]
 
-    -- in
     arg_tmps <- mapM assignTemp arg_exprs
-    let
-       arg_hints = zip arg_tmps (map (typeHint.stgArgType) stg_args)
-    -- in
+    let        arg_hints = zip arg_tmps (map (typeHint.stgArgType) stg_args)
     {-
        Now, allocate some result regs.
     -}
@@ -144,7 +141,7 @@ cgExpr (StgOpApp (StgPrimOp TagToEnumOp) [arg] res_ty)
                                        -- so save in a temp if non-trivial
        ; this_pkg <- getThisPackage
        ; stmtC (CmmAssign nodeReg (tagToClosure this_pkg tycon amode'))
-       ; performReturn (emitAlgReturnCode tycon amode') }
+       ; performReturn emitReturnInstr }
    where
          -- If you're reading this code in the attempt to figure
          -- out why the compiler panic'ed here, it is probably because
@@ -160,12 +157,12 @@ cgExpr x@(StgOpApp op@(StgPrimOp primop) args res_ty)
 
   | ReturnsPrim VoidRep <- result_info
        = do cgPrimOp [] primop args emptyVarSet
-            performReturn emitDirectReturnInstr
+            performReturn emitReturnInstr
 
   | ReturnsPrim rep <- result_info
        = do cgPrimOp [dataReturnConvPrim (primRepToCgRep rep)] 
                        primop args emptyVarSet
-            performReturn emitDirectReturnInstr
+            performReturn emitReturnInstr
 
   | ReturnsAlg tycon <- result_info, isUnboxedTupleTyCon tycon
        = do (reps, regs, _hints) <- newUnboxedTupleRegs res_ty
@@ -178,7 +175,7 @@ cgExpr x@(StgOpApp op@(StgPrimOp primop) args res_ty)
             this_pkg <- getThisPackage
             cgPrimOp [tag_reg] primop args emptyVarSet
             stmtC (CmmAssign nodeReg (tagToClosure this_pkg tycon (CmmReg tag_reg)))
-            performReturn (emitAlgReturnCode tycon (CmmReg tag_reg))
+            performReturn emitReturnInstr
   where
        result_info = getPrimOpResultInfo primop
 \end{code}