summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* PrelRules: Don't break let/app invariant in shiftRulewip/backport-T16742Ben Gamari2019-06-157-5/+53
| | | | | | | | | | | | | | | | | | | | | Previously shiftRule would rewrite as invalid shift like ``` let x = I# (uncheckedIShiftL# n 80) in ... ``` to ``` let x = I# (error "invalid shift") in ... ``` However, this breaks the let/app invariant as `error` is not okay-for-speculation. There isn't an easy way to avoid this so let's not try. Instead we just take advantage of the undefined nature of invalid shifts and return zero. Fixes #16742. (cherry picked from commit 0bd3b9dd0428855b6f72f757c1214b5253aa7753)
* users-guide: More release notesBen Gamari2019-06-151-3/+6
|
* Fix typo in 8.8.1 notes related to traceBinaryEventiustin2019-06-151-2/+3
| | | | | | | - fixes double mention of `traceBinaryEvent#` (the second one should be `traceEvent#`, I think) - fixes note about `traceEvent#` taking a `String` - the docs say it takes a zero-terminated ByteString. (cherry picked from commit 63150b9e5583c5fc3252f242981b0d26f11348b2)
* Add dwarf flavour definitionghc-8.8.1-alpha2Ben Gamari2019-06-131-0/+14
|
*-------. Merge branches 'wip/backport-MR1137', 'wip/backport-MR1139', ↵Ben Gamari2019-06-1315-41/+391
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | 'wip/backport-MR1160', 'wip/backport-MR706' and 'wip/backport-MR769' into wip/ghc-8.8-merges
| | | | | * Add `-haddock` to prepare-system.sh and .gitlab-ci.ymlwip/backport-MR769Takenobu Tani2019-06-123-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To cover ci conditions from ghc8.6 to 8.9, I add `-haddock` option to `.circleci/prepare-system.sh` and .gitlab-ci.yml. after including `mk/flavours/*`. (cherry picked from commit c4f94320a7048a7f263d8d952d4e12cc0227cf72)
| | | | | * Add `-haddock` to perf.mk rather than prepare-system.shTakenobu Tani2019-06-122-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To cover ci conditions from ghc8.6 to 8.9, I add `-haddock` option to `mk/flavours/perf.mk` rather than `.circleci/prepare-system.sh`. Because in windows condition of ghc-8.9, `mk/flavours/*` is included after `prepare-system.sh`. In addition, in linux condition of ghc-8.6, `mk/flavors/perf.mk` is used. (cherry picked from commit 43a39c3c2195d5b4400efc845a54f153184b1d7f)
| | | | | * Add `-haddock` option under ci condition to fix #16415Takenobu Tani2019-06-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to use the `:doc` command in ghci, it is necessary to compile for core libraries with `-haddock` option. Especially, the `-haddock` option is essential for release building. Note: * The `-haddock` option may affect compile time and binary size. * But hadrian has already set `-haddock` as the default. * This patch affects the make-based building. This patch has been split from !532. (cherry picked from commit 33e37d0619a9d1d0b8088a109f7eeb4c6fd21027)
| | | | * | Use binary search to speedup checkUnloadwip/backport-MR706Phuong Trinh2019-06-129-32/+370
| | | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are iterating through all object code for each heap objects when checking whether object code can be unloaded. For large projects in GHCi, this can be very expensive due to the large number of object code that needs to be loaded/unloaded. To speed it up, this arrangess all mapped sections of unloaded object code in a sorted array and use binary search to check if an address location fall on them. (cherry picked from commit f81f3964b718eab21f0cfe65067c195f2f2a84bd)
| | | * | llvm-targets: Add armv7l-unknown-linux-gnueabiwip/backport-MR1160Ben Gamari2019-06-122-0/+2
| | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #15208. [skip ci] (cherry picked from commit 9b4ff57d71eebf6dd71a5d81d0f9c9c2aef80e65)
| | * | rts/linker: Use mmapForLinker to map PLTwip/backport-MR1139Ben Gamari2019-06-121-6/+2
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | The PLT needs to be located within a close distance of the code calling it under the small memory model. Fixes #16784. (cherry picked from commit 0b7f81f560c602f32cfc90fd3fb5f1c52f06ad49)
| * | rts/linker: Only mprotect GOT after it is filledwip/backport-MR1137Ben Gamari2019-06-121-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a regression, introduced by 67c422ca, where we mprotect'd the global offset table (GOT) region to PROT_READ before we had finished filling it, resulting in a linker crash. Fixes #16779. (cherry picked from commit 217e6db4af6752b13c586d4e8925a4a9a2f47245)
| * | rts/linker: Make elf_got.c a bit more legibleBen Gamari2019-06-121-1/+10
| |/ | | | | | | (cherry picked from commit bbc752c50f3adcb659cd8447635828e137a0a314)
* | Bump process submodule to 1.6.5.1Ben Gamari2019-06-131-0/+0
|/
* testsuite: Mark threadstatus-T9333 as fragile in ghci waywip/backport-fragileBen Gamari2019-06-111-1/+1
| | | | | | As noted in #16555. (cherry picked from commit 64b1684da09ddb3dc480bd0370adc7b002657a39)
* testsuite: Fix fragile_for test modifierBen Gamari2019-06-111-3/+3
| | | | (cherry picked from commit 658199cce0aabeed77f3bbbbde6abc0c5c3cc83d)
* testsuite: Mark T13167 as fragile in threaded2Ben Gamari2019-06-111-1/+1
| | | | | | As noted in #16536. (cherry picked from commit b351004702c1a595bcedfa3ffeb4f816d5fd8503)
* base: Mark CPUTime001 as fragileBen Gamari2019-06-111-1/+1
| | | | | | | | As noted in #16224, CPUTime001 has been quite problematic, reporting non-monotonic timestamps in CI. Unfortunately I've been unable to reproduce this locally. (cherry picked from commit 1a3420cabdcf6d7d90c154681230f1150604c097)
* testsuite: Mark heapprof001 as fragile on all platformsBen Gamari2019-06-111-1/+1
| | | | | | See #15382. (cherry picked from commit 23fc615679072a6fa433460a92f597af2ae388b2)
* testsuite: Mark heapprof001 as fragile on i386Ben Gamari2019-06-111-1/+1
| | | | (cherry picked from commit 910185a3eb5fd2148e42d39f6374ab03d098b682)
* testsuite: Introduce fragile modifierBen Gamari2019-06-111-0/+24
| | | | | | | | | | | | Now since we have been a bit more stringent in testsuite cleanliness we have been marking a lot of tests as fragile using the `skip` modifier. However, this unfortunately means that we lose the association with the ticket number documenting the fragility. Here we introduce `fragile` and `fragile_for` to retain this information. (cherry picked from commit 4ca271d1880a6f4c5f49869de7f1920a2073adb6)
* Bump binary to 0.8.7.0Ben Gamari2019-06-091-0/+0
|
* Bump Cabal submoduleBen Gamari2019-06-099-14/+42
|
* Bump time submodule to 1.9.3Ben Gamari2019-06-041-0/+0
|
* Bump terminfo to 0.4.1.4Ben Gamari2019-06-041-0/+0
|
* Haddock for hiefile-headerBen Gamari2019-06-041-0/+0
|
* Fix ghc-in-ghciBen Gamari2019-06-041-6/+6
|
* Merge branch '8.8-haddock-release' of gitlab.haskell.org:harpocrates/ghc ↵Ben Gamari2019-06-041-0/+0
|\ | | | | | | into wip/ghc-8.8-merges
| * Bump Haddock submodule to 2.23 releaseAlec Theriault2019-06-031-0/+0
| | | | | | | | | | This commit of Haddock is (hopefully) going to be the one corresponding to a Hackage release of Haddock 2.23.
* | Add missing importBen Gamari2019-06-041-0/+1
| | | | | | | | Missing from f8d24178f30b7837b35a9ea328bc6f520092ff08.
* | Merge branch 'hiefile-header-8.8' of https://gitlab.haskell.org/wz1000/ghc ↵Ben Gamari2019-06-045-28/+134
|\ \ | | | | | | | | | into wip/ghc-8.8-merges
| * | Make header human readableZubin Duggal2019-06-031-21/+77
| | |
| * | Fix and enforce validation of header for .hie filesZubin Duggal2019-06-035-29/+79
| |/ | | | | | | | | | | Implements #16686 automatically generate hieVersion from ghc version
* | Merge branch 'wip/8-8-ghci' of gitlab.haskell.org:ghc/ghc into ↵Ben Gamari2019-06-0430-188/+387
|\ \ | | | | | | | | | wip/ghc-8.8-merges
| * | Use datatype for unboxed returns when loading ghc into ghciwip/8-8-ghciMichael Sloan2019-06-033-58/+110
| | | | | | | | | | | | | | | | | | See #13101 and #15454 (cherry picked from commit 64959e51bf17a9f991cc345476a40515e7b32d81)
| * | Extract out use of UnboxedTuples from GHCi.LeakMichael Sloan2019-06-033-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | See #13101 + #15454 for motivation. This change reduces the number of modules that need to be compiled to object code when loading GHC into GHCi. (cherry picked from commit c01d5af31c8feb634fc3dffc84e6e7ece61ba190)
| * | Remove unnecessary uses of UnboxedTuples pragma (see #13101 / #15454)Michael Sloan2019-06-036-6/+5
| | | | | | | | | | | | | | | | | | Also removes a couple unnecessary MagicHash pragmas (cherry picked from commit 061276ea5d265eb3c23a3698f0a10f6a764ff4b4)
| * | Add PlainPanic for throwing exceptions without depending on pprintMichael Sloan2019-06-0311-96/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit splits out a subset of GhcException which do not depend on pretty printing (SDoc), as a new datatype called PlainGhcException. These exceptions can be caught as GhcException, because 'fromException' will convert them. The motivation for this change is that that the Panic module transitively depends on many modules, primarily due to pretty printing code. It's on the order of about 130 modules. This large set of dependencies has a few implications: 1. To avoid cycles / use of boot files, these dependencies cannot throw GhcException. 2. There are some utility modules that use UnboxedTuples and also use `panic`. This means that when loading GHC into GHCi, about 130 additional modules would need to be compiled instead of interpreted. Splitting the non-pprint exception throwing into a new module resolves this issue. See #13101 (cherry picked from commit fe9034e9b4820214a8c703bd8a3146ce6eed37b8)
| * | Have GHCi use object code for UnboxedTuples modules #15454Michael Sloan2019-06-039-21/+71
| |/ | | | | | | | | | | | | | | | | | | | | | | The idea is to automatically enable -fobject-code for modules that use UnboxedTuples, along with all the modules they depend on. When looking into how to solve this, I was pleased to find that there was already highly similar logic for enabling code generation when -fno-code is specified but TemplateHaskell is used. The state before this patch was that if you used unboxed tuples then you had to enable `-fobject-code` globally rather than on a per module basis.
* | Merge branch 'cherry-pick-e172a6d1' of gitlab.haskell.org:ghc/ghc into ↵Ben Gamari2019-06-041-2/+9
|\ \ | | | | | | | | | wip/ghc-8.8-merges
| * | Enable external interpreter when TH is requested but no internal interpreter ↵cherry-pick-e172a6d1Alp Mestanogullari2019-06-031-2/+9
| |/ | | | | | | | | is available (cherry picked from commit e172a6d127a65b945b31306ff7b6c43320debfb4)
* | Merge branch 'wip/backport-ecc9366a0e0db107c286935130837b2222e2dd82' of ↵Ben Gamari2019-06-041-2/+2
|\ \ | | | | | | | | | https://gitlab.haskell.org/RyanGlScott/ghc into wip/ghc-8.8-merges
| * | RTS: Fix restrictive castAlec Theriault2019-06-031-2/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | Commit e75a9afd2989e0460f9b49fa07c1667299d93ee9 added an `unsigned` cast to account for OSes that have signed `rlim_t` signed. Unfortunately, the `unsigned` cast has the unintended effect of narrowing `rlim_t` to only 4 bytes. This leads to some spurious out of memory crashes (in particular: Haddock crashes with OOM whenn building docs of `ghc`-the-library). In this case, `W_` is a better type to cast to: we know it will be unsigned too and it has the same type as `*len` (so we don't suffer from accidental narrowing).
* | Merge branch 'hie-backports-8.8' of https://gitlab.haskell.org/DanielG/ghc ↵Ben Gamari2019-06-0417-230/+792
|\ \ | | | | | | | | | into wip/ghc-8.8-merges
| * | Improve targetContents code docsDaniel Gröber2019-06-033-6/+9
| | |
| * | Add depanalPartial to make getting a partial modgraph easierDaniel Gröber2019-06-031-10/+32
| | | | | | | | | | | | | | | | | | As per @mpickering's suggestion on IRC this is to make the partial module-graph more easily accessible for API clients which don't intend to re-implementing depanal.
| * | PartialDownsweep: Add test for import errorsDaniel Gröber2019-06-032-0/+14
| | |
| * | Catch preprocessor errors in downsweepDaniel Gröber2019-06-037-27/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the way preprocessor failures are presented to the user. Previously the user would simply get an unlocated message on stderr such as: `gcc' failed in phase `C pre-processor'. (Exit code: 1) Now at the problematic source file is mentioned: A.hs:1:1: error: `gcc' failed in phase `C pre-processor'. (Exit code: 1) This also makes live easier for GHC API clients as the preprocessor error is now thrown as a SourceError exception.
| * | Make downsweep return all errors per-module instead of throwing someDaniel Gröber2019-06-035-31/+27
| | | | | | | | | | | | | | | | | | | | | | | | This enables API clients to handle such errors instead of immideately crashing in the face of some kinds of user errors, which is arguably quite bad UX. Fixes #10887
| * | Refactor summarise{File,Module} to extract checkSummaryTimestampDaniel Gröber2019-06-034-47/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces a slight change of behaviour in the interrest of keeping the code simple: Previously summariseModule would not call addHomeModuleToFinder for summaries that are being re-used but now we do. We're forced to to do this in summariseFile because the file being summarised might not even be on the regular search path! So if GHC is to find it at all we have to pre-populate the cache with its location. For modules however the finder cache is really just a cache so we don't have to pre-populate it with the module's location. As straightforward as that seems I did almost manage to introduce a bug (or so I thought) because the call to addHomeModuleToFinder I copied from summariseFile used to use `ms_location old_summary` instead of the `location` argument to checkSummaryTimestamp. If this call were to overwrite the existing entry in the cache that would have resulted in us using the old location of any module even if it was, say, moved to a different directory between calls to 'depanal'. However it turns out the cache just ignores the location if the module is already in the cache. Since summariseModule has to search for the module, which has the side effect of populating the cache, everything would have been fine either way. Well I'm adding a test for this anyways: tests/depanal/OldModLocation.hs.