From 6c59cc71dc20f26d5a6650b16a82faeae72f2065 Mon Sep 17 00:00:00 2001 From: Stefan Schulze Frielinghaus Date: Mon, 25 Nov 2019 12:20:18 +0100 Subject: 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. --- compiler/llvmGen/Llvm/Types.hs | 14 ++++---------- 1 file 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 -- cgit v1.2.1