summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Travis experiment: Not “quickest” flavorwip/travisJoachim Breitner2017-03-051-4/+4
|
* Travis experiments to speed up the buildJoachim Breitner2017-03-041-5/+13
| | | | | | | | * language: generic * trusty environment * bump boot GHC * “quickest” build flavor * without split sections
* Update dangling Note referenceJoachim Breitner2017-03-041-1/+1
|
* testsuite: Fix double test of +InfinityBen Gamari2017-03-032-4/+4
| | | | The second set was supposed to be a NaN.
* Fix a tiny typoIngo Blechschmidt2017-03-031-1/+1
|
* testsuite: Add a NaN case to numrun015Ben Gamari2017-03-032-0/+2
|
* testsuite: Bump down allocations of T4029Ben Gamari2017-03-031-0/+4
|
* Add test to ensure that SPEC rules are named deterministicallyBen Gamari2017-03-034-0/+20
| | | | | | | | | | | | Test Plan: Validate Reviewers: niteria, austin, dfeuer Reviewed By: dfeuer Subscribers: simonpj, thomie Differential Revision: https://phabricator.haskell.org/D3220
* Allow iOS to load archives through the linkerMoritz Angermann2017-03-031-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This basically just adds ios where darwin already was, and is just one of the pieces for the rts linker support for ios (aarch64-macho) --- The following diagram and legend tries to explain the dependencies a bit: ``` .- This v D3255 <- D3252 <- D3251 <- D3239 ^ '- D3238 ``` - In D3238 we started allowing preloading object code with mmap in iOS, where we can't have r+w+x. - In D3239 we introduced a richer extension of the object code data type to make working with mach-o files easier. - In D3240 we set the stage to allow loading archives (.a) on iOS - In D3251 we added init and deinit functions to populate and depopulate the enriched object code data structure for mach-o files. - In D3252 we refactored most of the MachO.c file to use the new types and data structure. - in D3255 we finally introduce the aarch64-mach-o linker. Reviewers: bgamari, austin, erikd, simonmar Reviewed By: bgamari Subscribers: thomie, ryantrinkle Differential Revision: https://phabricator.haskell.org/D3240
* Comments only, in CSE (#13340)Reid Barton2017-03-031-3/+9
| | | | | | | | | | Reviewers: simonpj, austin, bgamari, dfeuer Reviewed By: dfeuer Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3268
* Deserialize IfaceId more lazilyReid Barton2017-03-031-6/+2
| | | | | | | | | | | | | | | | | | | This change sped up the total validate --build-only time by 0.8% on my test system; hopefully a representative result. I didn't bother making the other constructors lazy because for IfaceData and IfaceClass we need to pull on some of the fields in loadDecl, and all the others seem much more rare than IfaceId. Test Plan: validate, perf Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3269
* testsuite: Add test for floating-point abs (numrun015)Ben Gamari2017-03-033-0/+31
| | | | | | | | | | Test Plan: Validate Reviewers: idontgetoutmuch, austin Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3273
* Produce KindReps for common kinds in GHC.TypesBen Gamari2017-03-0314-174/+210
| | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately this comes with a fair bit of implementation cost. Perhaps some refactoring would help, but in the interest of getting 8.2 out the door I'm pushing as-is. While this doesn't have nearly the effect on compiler allocations that D3166 has, it's still nothing to sneeze at. nofib shows, ``` ------------------------------------------------------------------------ Program master D3166 D3219 ------------------------------------------------------------------------ -1 s.d. ----- -3.555% -4.081% +1 s.d. ----- +1.937% +1.593% Average ----- -0.847% -1.285% ``` Test Plan: Validate Reviewers: austin Subscribers: thomie, simonmar Differential Revision: https://phabricator.haskell.org/D3219
* TcTypeable: Try to reuse KindRepsBen Gamari2017-03-0315-506/+414
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here we rework the TcTypeable implementation to reuse KindRep bindings when possible. This is an attempt at minimizing the impact of Typeable binding generation by reducing the number of bindings that we produce. It turns out that this produces some pretty reasonable compiler allocations improvements. It seems to erase most of the increases initially introduced by TTypeable in the testsuite. Moreover, nofib shows, ``` -1 s.d. ----- -3.555% +1 s.d. ----- +1.937% Average ----- -0.847% ``` Here are a few of the high-scorers (ignore last column, which is for D3219), ``` veritas Types 88800920 -18.945% -21.480% veritas Tactics 540766744 -27.256% -27.338% sched Main 567013384 -4.947% -5.358% listcompr Main 532300000 -4.273% -4.572% listcopy Main 537785392 -4.382% -4.635% anna BaseDefs 1984225032 -10.639% -10.832% ``` as expected, these tend to be modules with either very many or very large types. Test Plan: Validate Reviewers: austin, dfeuer Subscribers: simonmar, dfeuer, thomie Differential Revision: https://phabricator.haskell.org/D3166
* testsuite: Add comment clarifying intention of completesig04Ben Gamari2017-03-032-1/+2
|
* testsuite: Bump down allocations for T12707Ben Gamari2017-03-031-1/+2
|
* Update test completesig04Reid Barton2017-03-032-6/+6
| | | | | | | | | | | | It relied on an orphan COMPLETE pragma, so was broken by commit fce3d37c3. Test Plan: validate Reviewers: austin, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3266
* Revert "Read COMPLETE sets from external packages"Ben Gamari2017-03-0316-192/+66
| | | | This reverts commit 0d2f733050ff656b827351108d988e09abc363fc.
* testsuite: Fix output due to recent COMPLETE changesBen Gamari2017-03-033-9/+5
| | | | | It's unclear why this didn't show up in my initial local validation. Oh well.
* Read COMPLETE sets from external packagesRyan Scott2017-03-0216-66/+192
| | | | | | | | | | | | | | | | | | | | Currently, `COMPLETE` pragmas are not read from external packages at all, which quite limits their usefulness. This extends `ExternalPackageState` to include `COMPLETE` sets from other packages, and plumbs around the appropriate values to make it work the way you'd expect it to. Fixes #13350. Test Plan: make test TEST=T13350 Reviewers: rwbarton, mpickering, austin, simonpj, bgamari Reviewed By: simonpj Subscribers: simonpj, thomie Differential Revision: https://phabricator.haskell.org/D3257
* Show: Add ShowS for ", "Ben Gamari2017-03-023-3/+7
| | | | | This is produced often enough in derived Show instances that it is likely worthwhile defining it once.
* testsuite: Move echoing commands in make invocations to VERBOSE=5Reid Barton2017-03-023-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | D2894 added a new verbosity level VERBOSE=4 to strip -s/--silent flags from make invocations in test commands. This will probably cause the test to fail of course, but is useful for seeing what a test that's already failing is doing. However there was already an undocumented meaning of VERBOSE=4, added in commit cfeededf, that causes the results of performance tests to be printed unconditionally (even when they are within the expected range). nomeata's ghc builder uses these figures to collect historical data on performance test figures. The new meaning of VERBOSE=4 added in D2894 means that any test that uses make now fails on the builder. This commit moves the new behavior of D2894 to the level VERBOSE=5 so that nomeata's ghc builder again produces useful results on failing tests. It also adds documentation for both settings. Test Plan: did some manual testing Reviewers: austin, bgamari, Phyx, nomeata Reviewed By: bgamari, Phyx Subscribers: nomeata, thomie, Phyx Differential Revision: https://phabricator.haskell.org/D3141
* Changed parser message for RankNTypes (#12811)Rupert Horlick2017-03-024-5/+30
| | | | | | | | | | | | | Added a check for whether RankNTypes is enabled and changed error message accordingly Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie, mpickering Differential Revision: https://phabricator.haskell.org/D3262
* Add suggestion for PatternSynonyms parse error (fixes #12429)Rupert Horlick2017-03-024-0/+15
| | | | | | | | | | Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3261
* Don't float out expressions that are okay for speculationReid Barton2017-03-021-12/+12
| | | | | | | | | | | | | | | | It turned out not to be worth the overhead according to nofib (+11.62% on fannkuch-redux, +4.3% on k-nucleotide, and some other smaller losses, with no significant gains). Test Plan: validate Reviewers: simonpj, austin, bgamari Reviewed By: simonpj Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3250
* Fix up test results.David Feuer2017-03-022-6/+4
| | | | | | | | | | | | | Set up test results and Makefile as SPJ intended (I believe). Previous changes accidentally did something a bit different. Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3248
* Don't allow orphan COMPLETE pragmas (#13349)Reid Barton2017-03-027-6/+64
| | | | | | | | | | | | | | | We might support them properly in the future, but for now it's simpler to disallow them. Test Plan: validate Reviewers: mpickering, austin, bgamari, simonpj Reviewed By: mpickering, simonpj Subscribers: simonpj, thomie Differential Revision: https://phabricator.haskell.org/D3243
* Print out sub-libraries of packages more nicely.Edward Z. Yang2017-03-025-6/+37
| | | | | | | | | | | | | | | | | | Previously, we would print out the munged package name which looked like z-bkpcabal01-z-p-0.1.0.0. Now it looks like: bkpcabal01-0.1.0.0:p. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: simonpj, bgamari, austin Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3235
* Add -fwhole-archive-hs-libsSimon Marlow2017-03-0210-6/+146
| | | | | | | | | | | | | | | | | | We're building a demo to show how to hot-swap Haskell code in a running process, and unfortunately it wasn't possible to convince GHC to generate the correct linker command line without this extra knob. Test Plan: Tested it on a hot-swapping demo (which is not released yet, but will be shortly) Reviewers: niteria, austin, erikd, JonCoens, bgamari Reviewed By: bgamari Subscribers: Phyx, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3136
* Fix T12234 stat mistakesDavid Feuer2017-03-021-3/+2
| | | | | | | | | | | | | I goofed up updating the expected and recent historical results here. They should be right now. Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3264
* Typofix.Edward Z. Yang2017-03-021-1/+1
| | | | Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
* Prevent users from defining instances for abstract classes.Edward Z. Yang2017-03-028-0/+31
| | | | | | | | | | | | | | | Summary: Fixes #13068. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: simonpj, austin, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3254
* Fix roles merging to apply only to non-rep-injective types.Edward Z. Yang2017-03-027-2/+111
| | | | | | | | Test Plan: validate Reviewers: simonpj Subscribers:
* Properly represent abstract classes in Class and IfaceDeclEdward Z. Yang2017-03-0214-129/+315
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Previously, abstract classes looked very much like normal classes, except that they happened to have no methods, superclasses or ATs, and they came from boot files. This patch gives abstract classes a proper representation in Class and IfaceDecl, by moving the things which are never defined for abstract classes into ClassBody/IfaceClassBody. Because Class is abstract, this change had ~no disruption to any of the code in GHC; if you ask about the methods of an abstract class, we'll just give you an empty list. This also fixes a bug where abstract type classes were incorrectly treated as representationally injective (they're not!) Fixes #13347, and a TODO in the code. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: simonpj, bgamari, austin Subscribers: goldfire, thomie Differential Revision: https://phabricator.haskell.org/D3236
* Injective type families imply nominal injectivity, but NOT rep injEdward Z. Yang2017-03-021-1/+1
| | | | | | | | | | Test Plan: validate Reviewers: simonpj, austin, jstolarek, bgamari, goldfire Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3223
* Disallow non-nullary constraint synonyms on class.Edward Z. Yang2017-03-025-75/+112
| | | | | | | | | | Test Plan: validate Reviewers: simonpj, bgamari, austin Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3230
* More comments on role subtyping, unsoundness fix.Edward Z. Yang2017-03-026-1/+134
| | | | | | | | | | | | | | | | | | Summary: - We incorrectly allowed subroling on injective data in some cases. There is now a test to check for this case, and a Note. - More commentary on how the subtyping with roles works. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: goldfire, austin, simonpj, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3222
* Extend Windows runtime loader libsearchTamar Christina2017-03-022-5/+11
| | | | | | | | | | | | | | | | | | | | | | This adds `.obj` extension to the list of valid object file (we really shouldn't be using extensions but instead trying to read the file and see if the header makes sense.). Microsoft compilers use .obj instead of .o for object files. This also adds support to finding static archives when the "lib" prefix is already in the filename. e.g. `-llibfoo` to find `libfoo.a`. This is inline with binutils. Test Plan: ./validate Reviewers: simonmar, erikd, bgamari, hvr, austin Reviewed By: bgamari Subscribers: RyanGlScott, thomie, #ghc_windows_task_force Differential Revision: https://phabricator.haskell.org/D3082
* Prohibit RULES changing constructorsDavid Feuer2017-03-029-37/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, `RULES` like ``` {-# RULES "JustNothing" forall x . Just x = Nothing #-} ``` were allowed. Simon Peyton Jones say this seems to have been a mistake, that such rules have never been supported intentionally, and that he doesn't know if they can break in horrible ways. Furthermore, Ben Gamari and Reid Barton are considering trying to detect the presence of "static data" that the simplifier doesn't need to traverse at all. Such rules do not play well with that. So for now, we ban them altogether. In most cases, it's possible to work around the ban using hand-written wrapper functions. Reviewers: austin, simonpj, bgamari Reviewed By: simonpj, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3169
* Eliminate ListSetOps from imp_trust_pkgsDavid Feuer2017-03-029-53/+58
| | | | | | | | | | | | | | Eliminate ListSetOps from imp_trust_pkgs and imp_dep_pkgs Replace Map with NameEnv in TmOracle Reviewers: austin, dfeuer, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3113
* User manual: Fix GADT paper linkÖmer Sinan Ağacan2017-03-021-1/+1
|
* testsuite: Mark T13340 as fixedBen Gamari2017-03-021-1/+1
| | | | It was fixed by 55efc9718b520ef354e32c15c4b49cdfecce412f
* Properly acquire locks on not yet existing package databasesAndrzej Rybczak2017-03-022-10/+42
| | | | | | | | | | Reviewers: austin, bgamari, angerman Reviewed By: bgamari, angerman Subscribers: angerman, thomie Differential Revision: https://phabricator.haskell.org/D3259
* SymbolExtras: A bit of spring cleaningBen Gamari2017-03-022-11/+9
| | | | Const-hygiene and use bool when possible.
* Typeable: Rename KindRep bindings to $krep...Ben Gamari2017-03-0213-180/+180
|
* Bump bytes allocated for T12234David Feuer2017-03-021-0/+1
| | | | | | | | Reviewers: austin, bgamari Subscribers: mpickering, thomie Differential Revision: https://phabricator.haskell.org/D3258
* Fix expected result from T13143David Feuer2017-03-021-27/+25
| | | | | | | | Reviewers: austin, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3260
* Document interaction between ApplicativeDo and existentials (#13242)Simon Marlow2017-03-021-0/+36
| | | | | | | | | | Test Plan: validate Reviewers: austin, bgamari, erikd Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3256
* Upgrade UniqSet to a newtypeDavid Feuer2017-03-0147-230/+321
| | | | | | | | | | | | | | | | | | | | | The fundamental problem with `type UniqSet = UniqFM` is that `UniqSet` has a key invariant `UniqFM` does not. For example, `fmap` over `UniqSet` will generally produce nonsense. * Upgrade `UniqSet` from a type synonym to a newtype. * Remove unused and shady `extendVarSet_C` and `addOneToUniqSet_C`. * Use cached unique in `tyConsOfType` by replacing `unitNameEnv (tyConName tc) tc` with `unitUniqSet tc`. Reviewers: austin, hvr, goldfire, simonmar, niteria, bgamari Reviewed By: niteria Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3146
* Change catch# demand signatureDavid Feuer2017-03-0110-70/+102
| | | | | | | | | | | | | | | | | | * Give `catch#` a lazy demand signature, to make it more honest. * Make `catchException` and `catchAny` force their arguments so they actually behave as advertised. * Use `catch` rather than `catchException` in `forkIO`, `forkOn`, and `forkOS` to avoid losing exceptions. Fixes #13330 Reviewers: rwbarton, simonpj, simonmar, bgamari, hvr, austin Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3244