[commit: ghc] master: DWARF: Use .short to render half-machine-words (904255e)

git at git.haskell.org git at git.haskell.org
Mon Jun 26 21:26:09 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/904255eb9b537103898fb5f6b73df9b53ca7fd93/ghc

>---------------------------------------------------------------

commit 904255eb9b537103898fb5f6b73df9b53ca7fd93
Author: Ben Gamari <bgamari.foss at gmail.com>
Date:   Mon Jun 26 16:27:11 2017 -0400

    DWARF: Use .short to render half-machine-words
    
    The binutils documentation states that .short is a synonym for .word,
    which I assumed to mean "machine word", leading me to believe that we
    needed to use .hword to render half-machine-words. However, Darwin's
    toolchain doesn't understand .hword, so there we instead used .short.
    
    However, as it turns out the binutils documentation confusingly uses
    "word" to refer to a 16-bit word, so .short should work fine. Moreover,
    LLVM's internal assembler also doesn't understand .hword, so using
    .short consistently simplies things remarkably.
    
    Test Plan: Validate using binutils and LLVM internal assembler,
    validate on Darwin
    
    Reviewers: niteria, austin
    
    Reviewed By: niteria
    
    Subscribers: rwbarton, thomie
    
    GHC Trac Issues: #13866
    
    Differential Revision: https://phabricator.haskell.org/D3667


>---------------------------------------------------------------

904255eb9b537103898fb5f6b73df9b53ca7fd93
 compiler/nativeGen/Dwarf/Types.hs | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/compiler/nativeGen/Dwarf/Types.hs b/compiler/nativeGen/Dwarf/Types.hs
index bc278b1..3c4501f 100644
--- a/compiler/nativeGen/Dwarf/Types.hs
+++ b/compiler/nativeGen/Dwarf/Types.hs
@@ -517,14 +517,7 @@ pprByte x = text "\t.byte " <> ppr (fromIntegral x :: Word)
 
 -- | Assembly for a two-byte constant integer
 pprHalf :: Word16 -> SDoc
-pprHalf x = sdocWithPlatform $ \plat ->
-  -- Naturally Darwin doesn't support `.hword` and binutils uses `.short`
-  -- as a synonym for `.word` (but only some of the time!). The madness
-  -- is nearly too much to bear.
-  let dir = case platformOS plat of
-        OSDarwin -> text ".short"
-        _        -> text ".hword"
-  in text "\t" <> dir <+> ppr (fromIntegral x :: Word)
+pprHalf x = text "\t.short" <+> ppr (fromIntegral x :: Word)
 
 -- | Assembly for a constant DWARF flag
 pprFlag :: Bool -> SDoc



More information about the ghc-commits mailing list