Commit dcf739bd authored by Simon Marlow's avatar Simon Marlow

FIX #1861: floating-point constants for infinity and NaN in via-C

parent 89eac892
......@@ -395,7 +395,16 @@ pprMachOpApp' mop args
pprLit :: CmmLit -> SDoc
pprLit lit = case lit of
CmmInt i rep -> pprHexVal i rep
CmmFloat f rep -> parens (machRepCType rep) <> (rational f)
CmmFloat f rep -> parens (machRepCType rep) <> str
where d = fromRational f :: Double
str | isInfinite d && d < 0 = ptext (sLit "-INFINITY")
| isInfinite d = ptext (sLit "INFINITY")
| isNaN d = ptext (sLit "NAN")
| otherwise = text (show d)
-- these constants come from <math.h>
-- see #1861
CmmLabel clbl -> mkW_ <> pprCLabelAddr clbl
CmmLabelOff clbl i -> mkW_ <> pprCLabelAddr clbl <> char '+' <> int i
CmmLabelDiffOff clbl1 clbl2 i
......
......@@ -31,6 +31,9 @@
*/
#ifndef IN_STG_CODE
# define IN_STG_CODE 1
# define _ISOC99_SOURCE
// Turn on C99 for .hc code. This gives us the INFINITY and NAN
// constants from math.h, which we occasionally need to use in .hc (#1861)
#endif
#if IN_STG_CODE == 0
......
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