Commit 999f8cf9 authored by simonmar's avatar simonmar
Browse files

[project @ 2003-04-01 09:35:13 by simonmar]

Don't constant-fold (negateFloat# 0.0#), because the compiler's
internal representation of floating-point literals (Rational) can't
represent -0.0.  This means that

   main = print (-0.0)

now gives the same results with -O as it does without.

Fixes test arith005.
parent f74458a7
......@@ -208,10 +208,12 @@ cmpOp cmp l1 l2
--------------------------
negOp (MachFloat f) = Just (mkFloatVal (-f))
negOp (MachDouble d) = Just (mkDoubleVal (-d))
negOp (MachInt i) = intResult (-i)
negOp l = Nothing
negOp (MachFloat 0.0) = Nothing -- can't represent -0.0 as a Rational
negOp (MachFloat f) = Just (mkFloatVal (-f))
negOp (MachDouble 0.0) = Nothing
negOp (MachDouble d) = Just (mkDoubleVal (-d))
negOp (MachInt i) = intResult (-i)
negOp l = Nothing
--------------------------
intOp2 op (MachInt i1) (MachInt i2) = intResult (i1 `op` i2)
......
Supports Markdown
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