Skip to content

Commit

Permalink
[project @ 1999-01-23 17:38:52 by sof]
Browse files Browse the repository at this point in the history
do_if_stmt: insert extra (I_) to avoid minInt blues.
  • Loading branch information
sof committed Jan 23, 1999
1 parent fd2d74d commit dddefa4
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions ghc/compiler/absCSyn/PprAbsC.lhs
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ pprAbsC (CSwitch discrim [(tag,alt_code)] deflt) c -- only one alt
Just dc -> -- make it an "if"
do_if_stmt discrim tag alt_code dc c
-- What problem is the re-ordering trying to solve ?
pprAbsC (CSwitch discrim [(tag1@(MachInt i1 _), alt_code1),
(tag2@(MachInt i2 _), alt_code2)] deflt) c
| empty_deflt && ((i1 == 0 && i2 == 1) || (i1 == 1 && i2 == 0))
Expand Down Expand Up @@ -625,9 +626,23 @@ do_if_stmt discrim tag alt_code deflt c
deflt alt_code
(addrModeCosts discrim Rhs) c
other -> let
cond = hcat [ pprAmode discrim,
ptext SLIT(" == "),
pprAmode (CLit tag) ]
cond = hcat [ pprAmode discrim
, ptext SLIT(" == ")
, tcast
, pprAmode (CLit tag)
]
-- to be absolutely sure that none of the
-- conversion rules hit, e.g.,
--
-- minInt is different to (int)minInt
--
-- in C (when minInt is a number not a constant
-- expression which evaluates to it.)
--
tcast =
case other of
MachInt _ signed | signed -> ptext SLIT("(I_)")
_ -> empty
in
ppr_if_stmt cond
alt_code deflt
Expand Down

0 comments on commit dddefa4

Please sign in to comment.