summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add link to mfix.github.io/ghc in HACKING.mdwip/gc/unglobalize-gc-statewip/gc/printer-improvementswip/gc/factor-out-bitmap-walkingSiddharth Bhat2019-06-171-0/+11
|
* make: Clean includes/settings fileBen Gamari2019-06-171-0/+1
| | | | | | | Now since this is generated by the build system we should ensure that it is properly cleaned. [skip ci]
* Use TupleSections in CmmParse.y, simplify a few exprsÖmer Sinan Ağacan2019-06-161-26/+28
|
* gitlab-ci: Don't allow failure of deb9-dwarf jobBen Gamari2019-06-161-2/+1
| | | | This #16741 out of the way this should now pass.
* testsuite: Really fix #16741Ben Gamari2019-06-162-4/+4
| | | | | The previous fix, !1095, didn't work as `--show-iface` ignores `-dsuppress-ticks`. Rework the test instead.
* fix runghc's GHC detection logic to cover the "in-tree Hadrian build" scenarioAlp Mestanogullari2019-06-161-1/+6
| | | | | | | | Before this patch, runghc would only run the GHC detection logic on Windows and assume that it was invoked through a wrapper script on all other platforms. This patch lifts this limitation and makes that logic work for the scenario where someone is calling the runghc executable directly, without passing an explicit path to GHC.
* gitlab-ci: Build alpine release bindistsBen Gamari2019-06-161-0/+24
|
* testsuite: Ensure that ffi005 output order is predictableBen Gamari2019-06-164-6/+14
| | | | | The libc output buffer wasn't being flushed, making the order system-depedent.
* testsuite: Flush conc059's printf bufferBen Gamari2019-06-162-1/+2
| | | | | Otherwise it the order out the Haskell and C output will be system-dependent.
* testsuite: Ensure T5423 flushes C output bufferBen Gamari2019-06-164-3/+15
| | | | | | Previously T5423 would fail to flush the printf output buffer. Consequently it was platform-dependent whether the C or Haskell print output would be emitted first.
* testsuite: Fix T8602 on muslBen Gamari2019-06-161-1/+2
| | | | Musl wants hash-bangs on all executables.
* base/Event/Poll: Drop POLLRDHUP enum itemBen Gamari2019-06-161-12/+0
| | | | | | Previously the Event enumeration produced by hsc2hs would sometimes include a currently-unused POLLRDHUP item. This unused binding would result in a build failure. Drop it.
* Remove dead codeKrzysztof Gogolewski2019-06-155-58/+4
|
* Synchronize ClsInst.doTyConApp with TcTypeable validity checks (#15862)Ryan Scott2019-06-157-35/+116
| | | | | | | | | | | | | | | | | Issue #15862 demonstrated examples of type constructors on which `TcTypeable.tyConIsTypeable` would return `False`, but the `Typeable` constraint solver in `ClsInst` (in particular, `doTyConApp`) would try to generate `Typeable` evidence for anyway, resulting in disaster. This incongruity was caused by the fact that `doTyConApp` was using a weaker validity check than `tyConIsTypeable` to determine if a type constructor warrants `Typeable` evidence or not. The solution, perhaps unsurprisingly, is to use `tyConIsTypeable` in `doTyConApp` instead. To avoid import cycles between `ClsInst` and `TcTypeable`, I factored out `tyConIsTypeable` into its own module, `TcTypeableValidity`. Fixes #15862.
* testsuite: Add assertions that way lists are in fact listsBen Gamari2019-06-1512-24/+30
| | | | | | Previously there were a few cases where operations like `omit_ways` were incorrectly passed a single way (e.g. `omit_ways('threaded2')`). This won't work as the author expected.
* Fix typo in error messageAiken Cairncross2019-06-151-1/+1
|
* testsuite: Skip hDuplicateTo001 in concurrent waysBen Gamari2019-06-151-1/+2
| | | | As noted in #16819, this operation is racy under concurrent execution.
* testsuite: Introduce concurrent_ways setBen Gamari2019-06-152-7/+12
| | | | | | Previously we just tested for the threaded2 when determining whether to skip tests which are fragile under concurrent execution. However, this isn't the only way which is concurrent.
* Disable optimisation when building Cabal in development flavoursBen Gamari2019-06-155-3/+20
| | | | | | | | | | This updates the make and Hadrian build flavours targetting developers to disable optimisation when building the Cabal library. Cabal tends to tickle some very bad compiler performance cases (e.g. #16577) so disabling optimisation here makes a sizeable impact on overall build time. See #16817.
* Disable optimisation when building Cabal lib for stage0Ben Gamari2019-06-152-0/+9
| | | | | | | | This disables optimisation when building Cabal for Hadrian and stage0 `ghc-cabal`. Cabal is performance critical in neither case nor will any performance difference here be visible to the end-user. See #16817.
* Bump unix submoduleBen Gamari2019-06-151-0/+0
| | | | Skips `executeFile001` test in `threaded2` way. Fixes #16814.
* Remove duplicates from 'ghc --info' outputAlp Mestanogullari2019-06-141-5/+0
|
* gitlab-ci: Lint the lintersBen Gamari2019-06-142-15/+28
|
* lint: Only apply --interactive lint to testsuite .T filesBen Gamari2019-06-142-7/+18
|
* gitlab-ci: Lint testsuite for framework failuresBen Gamari2019-06-143-2/+15
| | | | | This introduces a new lint job checking for framework failures and listing broken tests.
* PrelRules: Don't break let/app invariant in shiftRuleBen Gamari2019-06-147-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.
* Implement the -XUnliftedNewtypes extension.Andrew Martin2019-06-14113-202/+1522
| | | | | | | | | | | | | | | | | | | | | | | | | | | GHC Proposal: 0013-unlifted-newtypes.rst Discussion: https://github.com/ghc-proposals/ghc-proposals/pull/98 Issues: #15219, #1311, #13595, #15883 Implementation Details: Note [Implementation of UnliftedNewtypes] Note [Unifying data family kinds] Note [Compulsory newtype unfolding] This patch introduces the -XUnliftedNewtypes extension. When this extension is enabled, GHC drops the restriction that the field in a newtype must be of kind (TYPE 'LiftedRep). This allows types like Int# and ByteArray# to be used in a newtype. Additionally, coerce is made levity-polymorphic so that it can be used with newtypes over unlifted types. The bulk of the changes are in TcTyClsDecls.hs. With -XUnliftedNewtypes, getInitialKind is more liberal, introducing a unification variable to return the kind (TYPE r0) rather than just returning (TYPE 'LiftedRep). When kind-checking a data constructor with kcConDecl, we attempt to unify the kind of a newtype with the kind of its field's type. When typechecking a data declaration with tcTyClDecl, we again perform a unification. See the implementation note for more on this. Co-authored-by: Richard Eisenberg <rae@richarde.dev>
* Add Outputable instances for Float, Double.Andreas Klebinger2019-06-131-0/+6
|
* Hadrian: remove superfluous dependencies in Rules.CompileAlp Mestanogullari2019-06-131-2/+0
| | | | | | | | Each package's object files were 'need'ing the library files of all transitive dependencies of the current package, whichi is pointless since the said libraries are not needed until we link those object files together. This fixes #16759.
* Remove unused Unique field from StgFCallOpÖmer Sinan Ağacan2019-06-134-13/+9
| | | | Fixes #16696
* Maintain separate flags for C++ compiler invocationsBen Gamari2019-06-1313-34/+48
| | | | | | | Previously we would pass flags intended for the C compiler to the C++ compiler (see #16738). This would cause, for instance, `-std=gnu99` to be passed to the C++ compiler, causing spurious test failures. Fix this by maintaining a separate set of flags for C++ compilation invocations.
* gitlab-ci: Disable validate-x86_64-linux-deb9 job to reduce loadBen Gamari2019-06-131-2/+6
| | | | Enable artifacts on to ensure we have bindist coverage.
* gitlab-ci: Disable deb9-llvm job, introduce nightly LLVM jobBen Gamari2019-06-131-1/+12
| | | | | This should help alleviate queue times as the LLVM job is one of the longest that we have.
* testsuite: A more portable solution to #9399Ben Gamari2019-06-136-25/+23
| | | | | | | | Previously we used an awful hybrid batch script/Bourne shell script to allow this test to run both on Windows and Linux (fixing #9399). However, this breaks on some libc implementations (e.g. musl). Fix this. Fixes #16798.
* Clean up .circleciBen Gamari2019-06-135-523/+3
| | | | Move prepare-system.sh to .gitlab and remove everything else.
* gitlab-ci: Don't build PDF user's guide on AArch64Ben Gamari2019-06-131-0/+2
| | | | | For reasons I don't understand sphinx seems to fail to produce a .idx file for makeindex.
* users-guide: Fix a few markup issuesBen Gamari2019-06-132-23/+24
| | | | | | | Strangely these were only causing the build to fail in the aarch64-linux job, despite Sphinx throwing errors in all jobs I checked. Also changes some `#ifdef`s to `#if defined` to satisfy the linter.
* Hadrian: Do not allow the Linux jobs to fail anymoreAlp Mestanogullari2019-06-131-1/+0
| | | | | | MR !1151 makes the Hadrian/Linux job pass by fixing the last two test failures, so we can now be stricter and not allow those jobs to fail anymore, easily letting us see when patches introduce test failures.
* Hadrian: Track RTS library symlink targetsDavid Eichmann2019-06-135-48/+53
| | | | | This requires creating RTS library symlinks when registering, outside of the rule for the registered library file.
* PrelRules: Ensure that string unpack/append rule fires with source notesBen Gamari2019-06-131-11/+18
| | | | | | | | | | | | | | | | | | | | Previously the presence of source notes could hide nested applications of `unpackFoldrCString#` from our constant folding logic. For instance, consider the expression: ```haskell unpackFoldrCString# "foo" c (unpackFoldrCString# "baz" c n) ``` Specifically, ticks appearing in two places can defeat the rule: a. Surrounding the inner application of `unpackFoldrCString#` b. Surrounding the fold function, `c` The latter caused the `str_rules` testcase to fail when `base` was built with `-g3`. Fixes #16740.
* Fix #16525: ObjectCode freed wrongly because of lack of info header checkPhuong Trinh2019-06-138-1/+34
| | | | | | | `checkUnload` currently doesn't check the info header of static objects. Thus, it may free an `ObjectCode` struct wrongly even if there's still a live static object whose info header lies in a mapped section of that `ObjectCode`. This fixes the issue by adding an appropriate check.
* Add a few missing llvm-targetsBen Gamari2019-06-132-18/+58
| | | | | | This should finally fix #14261. [skip ci]
* gitlab-ci: Bump Docker imageBen Gamari2019-06-121-1/+1
| | | | Fixes linters.
* testsuite: Don't run tests requiring TH in profasm way when GhcDynamicBen Gamari2019-06-126-5/+15
| | | | | | | | | | Since we can't load profiled objects when GhcDynamic==YES. Affects: * T16737 * T16384 * T16718 * T16619 * T16190
* testsuite: Unbreak galois_raytrace on i386Ben Gamari2019-06-121-5/+0
| | | | | | | galois_raytrace was previously broken on i386 due to use of x87 arithmethic on that platform. However, 42504f4a575395a35eec5c3fd7c9ef6e2b54e68e removes x87 support; this resulted in an unexpected pass. Unmark this test as broken.
* testsuite: Skip cgrun078 in ghci wayBen Gamari2019-06-121-1/+1
| | | | This test requires FFI usage.
* process: Bump submoduleBen Gamari2019-06-121-0/+0
| | | | | * Skip process005 in ghci way * Mark process002 as fragile in threaded2
* Bump unix submoduleBen Gamari2019-06-121-0/+0
| | | | Marks posix002 as fragile in threaded2 way due to #16550.
* Fix uses of #ifdef/#ifndefBen Gamari2019-06-123-14/+14
| | | | | The linter now enforces our preference for `#if defined()` and `#if !defined()`.
* gitlab-ci: Fetch submodules before running submodule linterBen Gamari2019-06-121-0/+2
|