Commit a609df42 authored by simonmar's avatar simonmar
Browse files

[project @ 2005-01-12 16:33:54 by simonmar]

Fix a bug in mk_switch.
parent 1c06c2c1
...@@ -405,11 +405,15 @@ mk_switch tag_expr branches mb_deflt lo_tag hi_tag ...@@ -405,11 +405,15 @@ mk_switch tag_expr branches mb_deflt lo_tag hi_tag
find_branch :: ConTagZ -> Maybe BlockId find_branch :: ConTagZ -> Maybe BlockId
find_branch i = assocDefault mb_deflt tagged_blk_ids i find_branch i = assocDefault mb_deflt tagged_blk_ids i
arms = [ find_branch (i+lo_tag) | i <- [0..n_tags-1]] -- NB. we have eliminated impossible branches at
-- either end of the range (see below), so the first
-- tag of a real branch is real_lo_tag (not lo_tag).
arms = [ find_branch i | i <- [real_lo_tag..real_hi_tag]]
switch_stmt = CmmSwitch (cmmOffset tag_expr (- lo_tag)) arms switch_stmt = CmmSwitch (cmmOffset tag_expr (- real_lo_tag)) arms
; return (oneCgStmt switch_stmt) ; ASSERT(not (all isNothing arms))
return (oneCgStmt switch_stmt)
} }
-- if we can knock off a bunch of default cases with one if, then do so -- if we can knock off a bunch of default cases with one if, then do so
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment