diff options
author | Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> | 2019-11-25 12:20:18 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-11-28 02:55:33 -0500 |
commit | 6c59cc71dc20f26d5a6650b16a82faeae72f2065 (patch) | |
tree | 737cb6c917a648f92f0ebfbab973317277b9c8ec | |
parent | 3748ba3a01f81078025b86023833784055d1af57 (diff) | |
download | haskell-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.hs | 14 |
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 |