1. 23 Aug, 2016 3 commits
  2. 22 Aug, 2016 4 commits
  3. 21 Aug, 2016 8 commits
  4. 19 Aug, 2016 1 commit
  5. 18 Aug, 2016 1 commit
  6. 17 Aug, 2016 4 commits
  7. 16 Aug, 2016 4 commits
  8. 15 Aug, 2016 3 commits
  9. 14 Aug, 2016 4 commits
    • kgardas's avatar
      fix compilation failure on OpenBSD with system supplied GNU C 4.2.1 · ffd4029c
      kgardas authored
      Summary:
      This patch fixes compilation failure on OpenBSD. The OpenBSD's
      GNU C compiler is of 4.2.1 version and problematic __builtin_unreachable
      was added in GNU C 4.5 release. Let's use pure abort() call
      on OpenBSD instead of __builtin_unreachable
      
      Reviewers: bgamari, austin, erikd, simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2453
      ffd4029c
    • Tamar Christina's avatar
      Fix configure detection. · 18f06878
      Tamar Christina authored
      Summary:
      GHC's configure script seems to normalize the values returned from config.guess.
      So for Windows it turns x86_64-pc-mingw64 into x86_64-unknown-mingw32.
      These mangled names are stored in the values $BuildPlatform, $HostPlatform
      and $TargetPlatform.
      
      However further down the file when the comparison is done between the stage0
      compiler and the host the normalized versions are not used.
      So when normalization actually changes the triple this check will fail.
      
      Not sure why it's worked for all this time.. Nor if this is the right fix?
      Does it still work for cross compiling correctly?
      
      Test Plan: ./configure
      
      Reviewers: hvr, austin, thomie, bgamari, erikd
      
      Reviewed By: erikd
      
      Subscribers: erikd, #ghc_windows_task_force
      
      Differential Revision: https://phabricator.haskell.org/D2452
      
      GHC Trac Issues: #12487
      18f06878
    • Gabor Greif's avatar
      Misspellings in comments [skip ci] · 7ad3b491
      Gabor Greif authored
      7ad3b491
    • Gabor Greif's avatar
      Update `nofib` submodule to newest commit · 37a7bcbc
      Gabor Greif authored
      37a7bcbc
  10. 13 Aug, 2016 1 commit
    • Erik de Castro Lopo's avatar
      Fix GHCi perf-llvm build on x86_64 · bd0c3106
      Erik de Castro Lopo authored
      With BuildFlavour set to `perf-llvm`, GHCi would fail as soon as it
      was run with:
      
        ghc-stage2: .../ghc-prim/dist-install/build/HSghc-prim-0.5.0.0.o:
        unknown symbol `__udivti3'
        ghc-stage2: unable to load package `ghc-prim-0.5.0.0'
      
      Fix this by adding `__udivti3` and `__umodti3` to RtsSymbols.c.
      
      Test Plan: Validate
      
      Reviewers: simonmar, austin, bgamari, Phyx, trofi
      
      Reviewed By: Phyx, trofi
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2449
      
      GHC Trac Issues: #11981
      bd0c3106
  11. 12 Aug, 2016 1 commit
  12. 10 Aug, 2016 1 commit
    • Ömer Sinan Ağacan's avatar
      Remove StgRubbishArg and CmmArg · 9684dbb1
      Ömer Sinan Ağacan authored
      The idea behind adding special "rubbish" arguments was in unboxed sum types
      depending on the tag some arguments are not used and we don't want to move some
      special values (like 0 for literals and some special pointer for boxed slots)
      for those arguments (to stack locations or registers). "StgRubbishArg" was an
      indicator to the code generator that the value won't be used. During Stg-to-Cmm
      we were then not generating any move or store instructions at all.
      
      This caused problems in the register allocator because some variables were only
      initialized in some code paths. As an example, suppose we have this STG: (after
      unarise)
      
          Lib.$WT =
              \r [dt_sit]
                  case
                      case dt_sit of {
                        Lib.F dt_siv [Occ=Once] ->
                            (#,,#) [1# dt_siv StgRubbishArg::GHC.Prim.Int#];
                        Lib.I dt_siw [Occ=Once] ->
                            (#,,#) [2# StgRubbishArg::GHC.Types.Any dt_siw];
                      }
                  of
                  dt_six
                  { (#,,#) us_giC us_giD us_giE -> Lib.T [us_giC us_giD us_giE];
                  };
      
      This basically unpacks a sum type to an unboxed sum with 3 fields, and then
      moves the unboxed sum to a constructor (`Lib.T`).
      
      This is the Cmm for the inner case expression (case expression in the scrutinee
      position of the outer case):
      
          ciN:
              ...
              -- look at dt_sit's tag
              if (_ciT::P64 != 1) goto ciS; else goto ciR;
          ciS: -- Tag is 2, i.e. Lib.F
              _siw::I64 = I64[_siu::P64 + 6];
              _giE::I64 = _siw::I64;
              _giD::P64 = stg_RUBBISH_ENTRY_info;
              _giC::I64 = 2;
              goto ciU;
          ciR: -- Tag is 1, i.e. Lib.I
              _siv::P64 = P64[_siu::P64 + 7];
              _giD::P64 = _siv::P64;
              _giC::I64 = 1;
              goto ciU;
      
      Here one of the blocks `ciS` and `ciR` is executed and then the execution
      continues to `ciR`, but only `ciS` initializes `_giE`, in the other branch
      `_giE` is not initialized, because it's "rubbish" in the STG and so we don't
      generate an assignment during code generator. The code generator then panics
      during the register allocations:
      
          ghc-stage1: panic! (the 'impossible' happened)
            (GHC version 8.1.20160722 for x86_64-unknown-linux):
                  LocalReg's live-in to graph ciY {_giE::I64}
      
      (`_giD` is also "rubbish" in `ciS`, but it's still initialized because it's a
      pointer slot, we have to initialize it otherwise garbage collector follows the
      pointer to some random place. So we only remove assignment if the "rubbish" arg
      has unboxed type.)
      
      This patch removes `StgRubbishArg` and `CmmArg`. We now always initialize
      rubbish slots. If the slot is for boxed types we use the existing `absentError`,
      otherwise we initialize the slot with literal 0.
      
      Reviewers: simonpj, erikd, austin, simonmar, bgamari
      
      Reviewed By: erikd
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2446
      9684dbb1
  13. 09 Aug, 2016 1 commit
  14. 08 Aug, 2016 3 commits
  15. 07 Aug, 2016 1 commit