summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Schulze Frielinghaus <stefansf@linux.ibm.com>2019-11-25 12:20:18 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-11-28 02:55:33 -0500
commit6c59cc71dc20f26d5a6650b16a82faeae72f2065 (patch)
tree737cb6c917a648f92f0ebfbab973317277b9c8ec
parent3748ba3a01f81078025b86023833784055d1af57 (diff)
downloadhaskell-6c59cc71dc20f26d5a6650b16a82faeae72f2065.tar.gz
Fix endian handling of LLVM backend
Get rid of CPP macro WORDS_BIGENDIAN which is not defined anymore, and replace it by DynFlag. This fixes partially #17337.
-rw-r--r--compiler/llvmGen/Llvm/Types.hs14
1 files changed, 4 insertions, 10 deletions
diff --git a/compiler/llvmGen/Llvm/Types.hs b/compiler/llvmGen/Llvm/Types.hs
index 6e349d813f..f477aa64ed 100644
--- a/compiler/llvmGen/Llvm/Types.hs
+++ b/compiler/llvmGen/Llvm/Types.hs
@@ -843,8 +843,10 @@ ppDouble d
[x,y] -> [x,y]
_ -> error "dToStr: too many hex digits for float"
- str = map toUpper $ concat $ fixEndian $ map hex bs
- in text "0x" <> text str
+ in sdocWithDynFlags (\dflags ->
+ let fixEndian = if wORDS_BIGENDIAN dflags then id else reverse
+ str = map toUpper $ concat $ fixEndian $ map hex bs
+ in text "0x" <> text str)
-- Note [LLVM Float Types]
-- ~~~~~~~~~~~~~~~~~~~~~~~
@@ -874,14 +876,6 @@ widenFp = float2Double
ppFloat :: Float -> SDoc
ppFloat = ppDouble . widenFp
--- | Reverse or leave byte data alone to fix endianness on this target.
-fixEndian :: [a] -> [a]
-#if defined(WORDS_BIGENDIAN)
-fixEndian = id
-#else
-fixEndian = reverse
-#endif
-
--------------------------------------------------------------------------------
-- * Misc functions