diff options
author | David Terei <davidterei@gmail.com> | 2010-06-21 12:36:06 +0000 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2010-06-21 12:36:06 +0000 |
commit | 4bb4a1cfa8b88fefae3405d101dc6ff0f7adbae3 (patch) | |
tree | 4ad26b3f9267b4a68ffe47e30c5da9981a572820 /compiler/llvmGen/LlvmCodeGen | |
parent | f9686dd4f9ff6cee56659319941e136a30fa659d (diff) | |
download | haskell-4bb4a1cfa8b88fefae3405d101dc6ff0f7adbae3.tar.gz |
Fix negate op not working for -0 in llvm backend
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen/CodeGen.hs | 5 | ||||
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen/Data.hs | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen/CodeGen.hs b/compiler/llvmGen/LlvmCodeGen/CodeGen.hs index 075a73138d..f5c71ab2b9 100644 --- a/compiler/llvmGen/LlvmCodeGen/CodeGen.hs +++ b/compiler/llvmGen/LlvmCodeGen/CodeGen.hs @@ -558,7 +558,7 @@ genMachOp env _ op [x] = case op of in negate (widthToLlvmInt w) all0 LM_MO_Sub MO_F_Neg w -> - let all0 = LMLitVar $ LMFloatLit 0 (widthToLlvmFloat w) + let all0 = LMLitVar $ LMFloatLit (-0) (widthToLlvmFloat w) in negate (widthToLlvmFloat w) all0 LM_MO_Sub MO_SF_Conv _ w -> fiConv (widthToLlvmFloat w) LM_Sitofp @@ -807,7 +807,8 @@ genLit env (CmmInt i w) = return (env, mkIntLit i (LMInt $ widthInBits w), nilOL, []) genLit env (CmmFloat r w) - = return (env, LMLitVar $ LMFloatLit r (widthToLlvmFloat w), nilOL, []) + = return (env, LMLitVar $ LMFloatLit (fromRational r) (widthToLlvmFloat w), + nilOL, []) genLit env cmm@(CmmLabel l) = let label = strCLabel_llvm l diff --git a/compiler/llvmGen/LlvmCodeGen/Data.hs b/compiler/llvmGen/LlvmCodeGen/Data.hs index 69cd0e7c2b..e3d2adc079 100644 --- a/compiler/llvmGen/LlvmCodeGen/Data.hs +++ b/compiler/llvmGen/LlvmCodeGen/Data.hs @@ -168,7 +168,7 @@ genStaticLit (CmmInt i w) = Right $ LMStaticLit (LMIntLit i (LMInt $ widthInBits w)) genStaticLit (CmmFloat r w) - = Right $ LMStaticLit (LMFloatLit r (widthToLlvmFloat w)) + = Right $ LMStaticLit (LMFloatLit (fromRational r) (widthToLlvmFloat w)) -- Leave unresolved, will fix later genStaticLit c@(CmmLabel _ ) = Left $ c |