summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* hadrian: Remove RTS -Waggregate-return warningwip/remove-aggregate-warningMatthew Pickering2019-07-191-1/+0
| | | This was removed from make in 077b92fa39839a8e83cd87398435424403cf6486
* testsuite: Mark T4808 as broken in threaded2 wayBen Gamari2019-07-181-1/+1
| | | | As noted in #16909.
* testsuite: Unmark recomp007 as brokenBen Gamari2019-07-181-1/+0
| | | | Fixed in #14759.
* testsuite: Mark test-hole-plugin as req_thBen Gamari2019-07-181-1/+2
| | | | | This requires code loading and therefore can't be run in the profiled ways when GHC is dynamically linked.
* testsuite: Skip forking tests in profiled waysBen Gamari2019-07-182-0/+0
| | | | | | | As noted in #11645 and #8862, forking and profiling don't go well together. Bumps hpc and unix submodules.
* testsuite: Fix some ints used as boolsBen Gamari2019-07-181-10/+10
|
* testsuite: Print output from hp2psBen Gamari2019-07-181-1/+1
|
* testsuite: Mark hWaitForInput-accurate-stdin as broken in all threaded waysBen Gamari2019-07-181-1/+1
| | | | Previously it was not marked as broken in profthreaded
* Fix formatting of --info's "Debug on" fieldBen Gamari2019-07-182-4/+2
| | | | | | As noted in #16914, the value `True` was used instead of `YES` here, in contrast to the other boolean fields emitted by `--info`. This confused the testsuite driver and broke the `ghc_debugged` testsuite predicate.
* testsuite: Fix req_thBen Gamari2019-07-182-1/+4
|
* testsuite: Set -dinitial-unique when reversing uniquesBen Gamari2019-07-183-3/+3
| | | | | Otherwise the unique counter starts at 0, causing us to immediately underflow.
* testsuite: Mark static-plugins as broken in profiled waysBen Gamari2019-07-181-0/+1
| | | | See #16803.
* Add HasDebugCallStack to unionListsBen Gamari2019-07-181-1/+1
| | | | This should help identify a few cases where this is throwing warnings
* testsuite: More type checking fixesBen Gamari2019-07-186-98/+174
|
* gitlab-ci: Run slow validate in -debug jobBen Gamari2019-07-181-0/+2
| | | | | | | | Otherwise we don't compile the stage2 compiler with DEBUG, meaning the testsuite isn't checked with assertions. Metric Increase: haddock.Cabal
* Make GHC-in-GHCi work on WindowsSebastian Graf2019-07-174-6/+12
| | | | | | | | By not building anything in the dynamic way on Windows, where we don't have a working story for DLLs yet. Also the ghcid command needs to call bash on the hadrian/ghci.sh script explicitly as the path gets interpreted differently otherwise.
* Create {Int,Word}32RepJohn Ericson2019-07-1712-45/+81
| | | | | | | This prepares the way for making Int32# and Word32# the actual size they claim to be. Updates binary submodule for (de)serializing the new runtime reps.
* rts: Rename the nondescript initProfiling2 to refreshProfilingCCSsDaniel Gröber2019-07-163-6/+5
|
* rts: Divorce init of Heap profiler from CCS profilerDaniel Gröber2019-07-164-79/+52
| | | | | | | | | Currently initProfiling gets defined by Profiling.c only if PROFILING is defined. Otherwise the ProfHeap.c defines it. This is just needlessly complicated so in this commit I make Profiling and ProfHeap into properly seperate modules and call their respective init functions from RtsStartup.c.
* Revert "Add support for SIMD operations in the NCG"Ben Gamari2019-07-1645-1512/+246
| | | | | | | Unfortunately this will require more work; register allocation is quite broken. This reverts commit acd795583625401c5554f8e04ec7efca18814011.
* Sort out Hadrian colored output flags (fix #16397)Artem Pelenitsyn2019-07-164-38/+20
| | | | | | | | | | Hadrian used to have a separate flag --progress-colour to control colored output during the build. After introduction of a Shake flag with similar purpose Hadrian's flag became redundant. The commit removes --progress-colour and switches to Shake's flag. The only difference between the two is that Hadrian has special default mode when it tries to determine if the terminal support colored output. The user can override it using (Shake's) `--[no-]color`.
* PV is not P (#16611)Vladislav Zavialov2019-07-152-42/+133
|
* Decouple AddAnn from PVladislav Zavialov2019-07-153-14/+13
|
* Add a note in the simplifier about in-scope set as a substitutionArnaud Spiwack2019-07-153-5/+45
| | | | See also the discussion at #16592
* gitlab-ci: Disable submodule linter for nowBen Gamari2019-07-151-1/+2
|
* primops: haddock: Fix typo in referenced function.Niklas Hambüchen2019-07-141-1/+1
| | | Found by @lehins.
* rename type parameter in `instance Applicative ((->) a)`, fixing #16928xplorld2019-07-144-4/+4
|
* Expunge #ifdef and #ifndef from the codebaseJohn Ericson2019-07-1459-108/+108
| | | | | | | | These are unexploded minds as far as the linter is concerned. I don't want to hit in my MRs by mistake! I did this with `sed`, and then rolled back some changes in the docs, config.guess, and the linter itself.
* Make CPP linter skip certain filesJohn Ericson2019-07-141-0/+7
| | | | | | - docs which document the lint and need to contain the unutterable - vendored code which is outside our purview
* Remove LLVM_TARGET platform macrosJohn Ericson2019-07-147-6/+8
| | | | | Instead following @angerman's suggestion put them in the config file. Maybe we could re-key llvm-targets someday, but this is good for now.
* Don't package settings in bindistBen Gamari2019-07-142-3/+3
| | | | | | | | | | | | Since !712 the `settings` file is produced by the build system instead of autoconf. However, this introduced a subtle bug where we would fail to rebuild the `settings` file with what we have learned from the install-time `configure` invocation. Fix this by not packaging `settings` in the bindist tarball. The build system will take care of the rest. Also fix a bug where the value of `UseLibdw` was not being persisted to the install time `configure`.
* hadrian: Build debug rts with -O0 -g3 and disable rts strippingMatthew Pickering2019-07-142-1/+6
| | | | Fixes #16920
* Remove purely external primopsJohn Ericson2019-07-146-37/+149
| | | | | | | | | | | | The compiler doesn't create uses nor compiles the uses that exist specially. These are just plain C-- FFI. These `await*` ones are especially important to so convert because "true" primops are hard to make platform-specific currently. The other exports are part of this commit so this module always exports something, which avoids silly CPP elsewhere. More will be added later once `foreign import prim` is extended.
* Minor refactoring in CmmBuildInfoTablesÖmer Sinan Ağacan2019-07-131-5/+3
| | | | | - Replace `catMaybes (map ...)` with `mapMaybe ...` - Remove a list->set->list conversion
* Make HsInstances and DynFlags compile with -O0 for Stage0 to speed up ↵James Foster2019-07-131-3/+8
| | | | Hadrian builds (fixes #16936)
* Add two CmmSwitch optimizations.Andreas Klebinger2019-07-134-4/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move switch expressions into a local variable when generating switches. This avoids duplicating the expression if we translate the switch to a tree search. This fixes #16933. Further we now check if all branches of a switch have the same destination, replacing the switch with a direct branch if that is the case. Both of these patterns appear in the ENTER macro used by the RTS but are unlikely to occur in intermediate Cmm generated by GHC. Nofib result summary: -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- Min -0.0% -0.0% -15.7% -15.6% 0.0% Max -0.0% 0.0% +5.4% +5.5% 0.0% Geometric Mean -0.0% -0.0% -1.0% -1.0% -0.0% Compiler allocations go up slightly: +0.2% Example output before and after the change taken from RTS code below. All but one of the memory loads `I32[_c3::I64 - 8]` are eliminated. Instead the data is loaded once from memory in block c6. Also the switch in block `ud` in the original code has been eliminated completely. Cmm without this commit: ``` stg_ap_0_fast() { // [R1] { [] } {offset ca: _c1::P64 = R1; // CmmAssign goto c2; // CmmBranch c2: if (_c1::P64 & 7 != 0) goto c4; else goto c6; c6: _c3::I64 = I64[_c1::P64]; if (I32[_c3::I64 - 8] < 26 :: W32) goto ub; else goto ug; ub: if (I32[_c3::I64 - 8] < 15 :: W32) goto uc; else goto ue; uc: if (I32[_c3::I64 - 8] < 8 :: W32) goto c7; else goto ud; ud: switch [8 .. 14] (%MO_SS_Conv_W32_W64(I32[_c3::I64 - 8])) { case 8, 9, 10, 11, 12, 13, 14 : goto c4; } ue: if (I32[_c3::I64 - 8] >= 25 :: W32) goto c4; else goto uf; uf: if (%MO_SS_Conv_W32_W64(I32[_c3::I64 - 8]) != 23) goto c7; else goto c4; c4: R1 = _c1::P64; call (P64[Sp])(R1) args: 8, res: 0, upd: 8; ug: if (I32[_c3::I64 - 8] < 28 :: W32) goto uh; else goto ui; uh: if (I32[_c3::I64 - 8] < 27 :: W32) goto c7; else goto c8; ui: if (I32[_c3::I64 - 8] < 29 :: W32) goto c8; else goto c7; c8: _c1::P64 = P64[_c1::P64 + 8]; goto c2; c7: R1 = _c1::P64; call (_c3::I64)(R1) args: 8, res: 0, upd: 8; } } ``` Cmm with this commit: ``` stg_ap_0_fast() { // [R1] { [] } {offset ca: _c1::P64 = R1; goto c2; c2: if (_c1::P64 & 7 != 0) goto c4; else goto c6; c6: _c3::I64 = I64[_c1::P64]; _ub::I64 = %MO_SS_Conv_W32_W64(I32[_c3::I64 - 8]); if (_ub::I64 < 26) goto uc; else goto uh; uc: if (_ub::I64 < 15) goto ud; else goto uf; ud: if (_ub::I64 < 8) goto c7; else goto c4; uf: if (_ub::I64 >= 25) goto c4; else goto ug; ug: if (_ub::I64 != 23) goto c7; else goto c4; c4: R1 = _c1::P64; call (P64[Sp])(R1) args: 8, res: 0, upd: 8; uh: if (_ub::I64 < 28) goto ui; else goto uj; ui: if (_ub::I64 < 27) goto c7; else goto c8; uj: if (_ub::I64 < 29) goto c8; else goto c7; c8: _c1::P64 = P64[_c1::P64 + 8]; goto c2; c7: R1 = _c1::P64; call (_c3::I64)(R1) args: 8, res: 0, upd: 8; } } ```
* compiler: trace SysTools commands to emit start/stop eventlog markersAlp Mestanogullari2019-07-131-18/+31
| | | | | | | | | | | | | | | | | | | This patch was motivated by some performance characterization work done for #16822, where we suspected that GHC was spending a lot of time waiting on the linker to be done. (That turned out to be true.) The tracing is taken care of by ErrUtils.withTiming, so this patch just defines and uses a little wrapper around that function in all the helpers for calling the various systools (C compiler, linker, unlit, ...). With this patch, assuming a GHC executable linked against an eventlog-capable RTS (RTS ways that contain the debug, profiling or eventlog way units), we can measure how much time is spent in each of the SysTools when building hello.hs by simply doing: ghc hello.hs -ddump-timings +RTS -l The event names are "systool:{cc, linker, as, unlit, ...}".
* base: Data.Fixed: make HasResolution poly-kinded (#10055, #15622)Ashley Yakeley2019-07-132-6/+17
|
* Add shake 0.18.3 to extra depsShayne Fletcher2019-07-121-0/+1
|
* Fix kind-checking for data/newtypesSimon Peyton Jones2019-07-124-31/+83
| | | | | | | | | | | | | | | | | | | | In one spot in kcConDecl we were passing in the return kind signature rether than the return kind. e.g. #16828 newtype instance Foo :: Type -> Type where MkFoo :: a -> Foo a We were giving kcConDecl the kind (Type -> Type), whereas it was expecting the ultimate return kind, namely Type. This "looking past arrows" was being done, independently, in several places, but we'd missed one. This patch moves it all to one place -- the new function kcConDecls (note the plural). I also took the opportunity to rename tcDataFamHeader to tcDataFamInstHeader (The previous name was consistently a source of confusion.)
* head.hackage: Run builds with -dcore-lintBen Gamari2019-07-111-0/+1
|
* head.hackage: Run build on head.hackage's master branchBen Gamari2019-07-111-1/+1
| | | | The GitLab CI infrastructure is now in the master branch.
* Allow reusing temporary object files generated by GHCi by writing to -odir ↵nineonine2019-07-118-5/+60
| | | | in case -fwrite-interface was specified (#16670)
* Don't typecheck too much (or too little) in DerivingVia (#16923)Ryan Scott2019-07-115-138/+191
| | | | | | | | | | | Previously, GHC would typecheck the `via` type once per class in a `deriving` clause, which caused the problems observed in #16923. This patch restructures some of the functionality in `TcDeriv` and `TcHsType` to avoid this problem. We now typecheck the `via` type exactly once per `deriving` clause and *then* typecheck all of the classes in the clause. See `Note [Don't typecheck too much in DerivingVia]` in `TcDeriv` for the full details.
* Special case a few common patterns in unionLists.Andreas Klebinger2019-07-111-1/+10
| | | | | | | In particular we very often pass one empty list and in these cases we want to avoid the overhead of computing `xs ++ []`. This should fix #14759 and #16911.
* Add regression test for old panic on inlining undeclared identifier (#495)Kevin Buhr2019-07-113-0/+15
|
* Fix erroneous float in CoreOptSimon Peyton Jones2019-07-096-7/+100
| | | | | | | | | | | The simple optimiser was making an invalid transformation to join points -- yikes. The fix is easy. I also added some documentation about the fact that GHC uses a slightly more restrictive version of join points than does the paper. Fix #16918
* hadrian/doc: Add some discussion of compilation stagesBen Gamari2019-07-092-0/+1010
| | | | | This documents some of the lore surrounding the nature and naming of GHC's stage numbers.
* T16804: adjust src spansEric Wolf2019-07-093-157/+161
|
* Add testcase T16804 for #16804Eric Wolf2019-07-096-0/+415
| | | | | slightly larger testcase for :type-at and :uses so we can see changes, if #16804 is done.