1. 29 Mar, 2017 1 commit
    • Sergei Trofimovich's avatar
      unique: fix UNIQUE_BITS crosscompilation (Trac #13491) · 01b062ec
      Sergei Trofimovich authored
      The #13491
       manifests best when we try to crosscompile
      from 32-bit (i386-linux) to 64-bit (powerpc64-linux)
          ./configure --target=powerpc64-unknown-linux-gnu
      The build fails at assembly time:
        "inplace/bin/ghc-stage1" ...  -c rts/StgStartup.cmm
          /tmp/ghc19687_0/ghc_4.s: Assembler messages:
          /tmp/ghc19687_0/ghc_4.s:11:0: error:
               Error: unknown pseudo-op: `.l'
          11 | .L<\x00>4:
             | ^
      That happens because UNIQUE_BITS is defined in terms
      of WORD_SIZE_IN_BITS macro:
          #define UNIQUE_BITS (WORD_SIZE_IN_BITS - 8)
      WORD_SIZE_IN_BITS is 64 bits (equals to target value)
      while ghc-stage1 is still running on i386-linux
      The fix is to stop relying on target macros and use
      host's 'sizeof (HsInt)' and 'finiteBitSize' way to
      determine unique layout.
      Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      Test Plan: build i386-to-powerpc64 crosscompiler
      Reviewers: rwbarton, austin, bgamari
      Reviewed By: bgamari
  2. 15 Dec, 2016 1 commit
    • Ben Gamari's avatar
      UniqSupply: Use full range of machine word · 0d213c18
      Ben Gamari authored
      Currently uniques are 32-bits wide. 8 of these bits are for the unique
      class, leaving only 24 for the unique number itself. This seems
      dangerously small for a large project. Let's use the full range of the
      native machine word.
      We also add (now largely unnecessary) overflow check to ensure that the
      unique number doesn't overflow.
      Test Plan: Validate
      Reviewers: simonmar, austin, niteria
      Reviewed By: niteria
      Subscribers: mpickering, thomie
      Differential Revision: https://phabricator.haskell.org/D2844
      GHC Trac Issues: #12944