From: Simon Marlow Date: Mon, 12 May 2008 10:38:47 +0000 (+0000) Subject: FIX #1861: floating-point constants for infinity and NaN in via-C X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=dcf739bd7fb7de140be3bafb4ce211e2e5c7bba9;ds=sidebyside FIX #1861: floating-point constants for infinity and NaN in via-C --- diff --git a/compiler/cmm/PprC.hs b/compiler/cmm/PprC.hs index a943575..9a3a3a2 100644 --- a/compiler/cmm/PprC.hs +++ b/compiler/cmm/PprC.hs @@ -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 + -- see #1861 + CmmLabel clbl -> mkW_ <> pprCLabelAddr clbl CmmLabelOff clbl i -> mkW_ <> pprCLabelAddr clbl <> char '+' <> int i CmmLabelDiffOff clbl1 clbl2 i diff --git a/includes/Stg.h b/includes/Stg.h index 7f37783..35f4eda 100644 --- a/includes/Stg.h +++ b/includes/Stg.h @@ -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