summaryrefslogtreecommitdiff
path: root/compiler/codeGen
diff options
context:
space:
mode:
authordias@cs.tufts.edu <unknown>2009-11-05 15:15:32 +0000
committerdias@cs.tufts.edu <unknown>2009-11-05 15:15:32 +0000
commitc55eee3add067dd0372ed8eede64b84791f7a9b9 (patch)
tree82ab0d831a732587f86da0693bab0b5c70fa9de0 /compiler/codeGen
parentc6206fd81612e51e257a650390646421c7c1d1cb (diff)
downloadhaskell-c55eee3add067dd0372ed8eede64b84791f7a9b9.tar.gz
Loop problems in native back ends, update to T3286 fix
The native back ends had difficulties with loops; in particular the code for branch-chain elimination could run in infinite loops or drop basic blocks. The old codeGen didn't expose these problems. Also, my fix for T3286 in the new codegen was getting applied to too many (some wrong) cases; a better pattern match fixed that.
Diffstat (limited to 'compiler/codeGen')
-rw-r--r--compiler/codeGen/StgCmmExpr.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/codeGen/StgCmmExpr.hs b/compiler/codeGen/StgCmmExpr.hs
index 002e1b2c9b..0c958b3805 100644
--- a/compiler/codeGen/StgCmmExpr.hs
+++ b/compiler/codeGen/StgCmmExpr.hs
@@ -292,7 +292,7 @@ cgCase (OpApp ) bndr srt AlgAlt [(DataAlt flase, a2]
-- The Sequel is a type-correct assignment, albeit bogus.
-- The (dead) continuation loops; it would be better to invoke some kind
-- of panic function here.
-cgCase scrut@(StgApp v []) bndr _ _ _
+cgCase scrut@(StgApp v []) bndr _ (PrimAlt _) _
| not (isUnLiftedType (idType v)) && reps_incompatible
=
do { mb_cc <- maybeSaveCostCentre True