summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* INLINABLE Ord methods (#8354)wip/sjakobi/T8354-inlinable-ordSimon Jakobi2021-06-241-0/+7
|
* There's no "errorWithCallStack", just use "error".Viktor Dukhovni2021-06-241-9/+8
| | | | | | | | There's no `errorWithCallStack`, only `errorWithStackTrace`, but the latter is now deprecated, since `error` now defaults to returning a stack strace. So rather than change this to the intended deprecated function we replace `errorWithCallStack` with `error` instead.
* cabal_test: Make output more like head.hackage outputMatthew Pickering2021-06-241-2/+4
| | | | This helps with the import of the results into the performance database.
* CI: Fix the cabal_test job to compile the Distribution.Simple targetMatthew Pickering2021-06-241-1/+2
| | | | | | The "Cabal test" was previously testing the compilation of the very advanced Setup.hs file. Now we compile the whole library, as the test intended.
* [aarch64-macho] Fix off-by-one error in the linkerMoritz Angermann2021-06-241-1/+11
| | | | | | We need to be careful about the sign bit for BR26 relocation otherwise we end up encoding a large positive number and reading back a large negative number.
* EPA: Bringing over tests and updates from ghc-exactprintAlan Zimmerman2021-06-2432-463/+1269
|
* Fix desugaring with unboxed types (#19883)Krzysztof Gogolewski2021-06-243-1/+21
|
* rts: move xxxHash out of the user namespaceTamar Christina2021-06-244-7/+25
|
* Fix typo in Note [Quick Look for particular Ids]Viktor Dukhovni2021-06-231-1/+1
| | | | Fixes #20029
* [aarch64 NCG] Add better support for sub-word primopsMoritz Angermann2021-06-233-35/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During the intial NCG development, GHC did not have support for anything below Words. As such the NCG didn't support any of this either. AArch64-Darwin however needs support for subword, as arguments in excess of the first eight (8) passed via registers are passed on the stack, and there in a packed fashion. Thus ghc learned about subword sizes. This than lead us to gain subword primops, and these subsequently highlighted deficiencies in the AArch64 NCG. This patch rectifies the ones I found through via the test-suite. I do not claim this to be exhaustive. Fixes: #19993 Metric Increase: T10421 T13035 T13719 T14697 T1969 T9203 T9872a T9872b T9872c T9872d T9961 haddock.Cabal haddock.base parsing001
* Add some tests for sized primopsSylvain Henry2021-06-233-0/+1584
|
* Converts diagnostics for two errors in Ghc.Tc.Module (#19926)Aaron Allen2021-06-239-7/+52
| | | | | | | | This adds constructors to TcRnMessage to replace use of TcRnUnknownMessage in Ghc.Tc.Module. Adds a test case for the UnsafeDueToPlugin warning. Closes #19926
* ci: Don't allow the nightly pipeline to be interrupted.Douglas Wilson2021-06-231-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 58cfcc65 the default for jobs has been "interruptible", this means that when new commits are pushed to a branch which already has a running pipeline then the old pipelines for this branch are cancelled. This includes the master branch, and in particular, new commits merged to the master branch will cancel the nightly job. The semantics of pipeline cancelling are actually a bit more complicated though. The interruptible flag is *per job*, but once a pipeline has run *any* non-interruptible job, then the whole pipeline is considered non-interruptible (ref https://gitlab.com/gitlab-org/gitlab/-/issues/32837). This leads to the hack in this MR where by default all jobs are `interruptible: True`, but for pipelines we definitely want to run, there is a dummy job which happens first, which is `interreuptible: False`. This has the effect of dirtying the whole pipeline and preventing another push to master from cancelling it. For now, this patch solves the immediate problem of making sure nightly jobs are not cancelled. In the future, we may want to enable this job also for the master branch, making that change might mean we need more CI capacity than currently available. [skip ci] Ticket: #19554 Co-authored-by: Matthew Pickering <matthewtpickering@gmail.com>
* [testsuite] mark T3007 broken on darwin.Moritz Angermann2021-06-231-1/+2
| | | | | | Cabal explicitly passes options to set the rpath, which we then also try to set using install_name_tool. Cabal should also pass `-fno-use-rpaths` to suppress the setting of the rpath from within GHC.
* hadrian: Pass correct leading_underscore configuration to testsMatthew Pickering2021-06-231-0/+2
|
* ghci: Correct free variable calculation in StgToByteCodeMatthew Pickering2021-06-235-8/+9
| | | | Fixes #20019
* Enable TcPlugin tests on Windowssheaf2021-06-231-4/+4
|
* testsuite: Don't try to run tests with missing librariesMatthew Pickering2021-06-232-7/+7
| | | | | | | | | | | | | | | | As noticed by sgraf, we were still running reqlib tests, even if the library was not available. The reasons for this were not clear to me as they would never work and it was causing some issues with empty stderr files being generated if you used --test-accept. Now if the required library is not there, the test is just skipped, and a counter increased to mark the fact. Perhaps in the future it would be nicer to explicitly record why certain tests are skipped. Missing libraries causing a skip is a special case at the moment. Fixes #20005
* Optimiser: Correctly deal with strings starting with unicode characters in ↵Matthew Pickering2021-06-234-27/+50
| | | | | | | | | | | | | | | | | | | | exprConApp_maybe For example: "\0" is encoded to "C0 80", then the rule would correct use a decoding function to work out the first character was "C0 80" but then just used BS.tail so the rest of the string was "80". This resulted in "\0" being transformed into '\C0\80' : unpackCStringUTF8# "80" Which is obviously bogus. I rewrote the function to call utf8UnconsByteString directly and avoid the roundtrip through Faststring so now the head/tail is computed by the same call. Fixes #19976
* ci: fix ci.sh by creating build.mk in one placeAdam Sandberg Ericsson2021-06-231-20/+2
| | | | | | | | | | | Previously `prepare_build_mk` created a build.mk that was overwritten right after. This makes the BIGNUM_BACKEND choice take effect, fixing #19953, and causing the metric increase below in the integer-simple job. Metric Increase: space_leak_001
* Fix a typo in pattern synonyms docPotato Hatsue2021-06-221-2/+2
|
* ghc-bignum: trimed ~> trimmedMatthew Pickering2021-06-222-32/+32
| | | | Just a small typo which propagated through ghc-bignum
* Typos, minor comment fixesKrzysztof Gogolewski2021-06-2227-109/+44
| | | | | | | | | | | | | | | | | | | - Remove fstName, sndName, fstIdKey, sndIdKey - no longer used, removed from basicKnownKeyNames - Remove breakpointId, breakpointCondId, opaqueTyCon, unknownTyCon - they were used in the old implementation of the GHCi debugger - Fix typos in comments - Remove outdated comment in Lint.hs - Use 'LitRubbish' instead of 'RubbishLit' for consistency - Remove comment about subkinding - superseded by Note [Kind Constraint and kind Type] - Mention ticket ID in a linear types error message - Fix formatting in using-warnings.rst and linear-types.rst - Remove comment about 'Any' in Dynamic.hs - Dynamic now uses Typeable + existential instead of Any - Remove codeGen/should_compile/T13233.hs This was added by accident, it is not used and T13233 is already in should_fail
* rts: Document --eventlog-flush-interval in RtsFlagsMatthew Pickering2021-06-221-0/+1
| | | | Fixes #19995
* Put tracing functions into their own moduleSylvain Henry2021-06-2260-494/+581
| | | | | | | | Now that Outputable is independent of DynFlags, we can put tracing functions using SDocs into their own module that doesn't transitively depend on any GHC.Driver.* module. A few modules needed to be moved to avoid loops in DEBUG mode.
* CI: Don't set EXTRA_HC_OPTS in head.hackage jobMatthew Pickering2021-06-221-1/+3
| | | | | | | | Upstream environment variables take precedance over downstream variables. It is more consistent (and easier to modify) if the variables are all set in the head.hackage CI file rather than setting this here. [skip ci]
* hadrian/README.md: update bignum optionsFraser Tweedale2021-06-201-2/+1
|
* Linker/darwin: Properly honour -fno-use-rpathsMatthew Pickering2021-06-207-32/+56
| | | | | | | | | | | | | The specification is now simple * On linux, use `-Xlinker -rpath -Xlinker` to set the rpath of the executable * On darwin, never use `-Xlinker -rpath -Xlinker`, always inject the rpath afterwards, see `runInjectRPaths`. * If `-fno-use-rpaths` is passed then *never* inject anything into the rpath. Fixes #20004
* Set min LLVM version to 9 and make version checking use a non-inclusive upperZubin Duggal2021-06-205-17/+20
| | | | | | | bound. We use a non-inclusive upper bound so that setting the upper bound to 13 for example means that all 12.x versions are accepted.
* rts: Pass -Wl,_U,___darwin_check_fd_set_overflow on DarwinMatthew Pickering2021-06-201-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Note [fd_set_overflow] ~~~~~~~~~~~~~~~~~~~~~~ In this note is the very sad tale of __darwin_fd_set_overflow. The 8.10.5 release was broken because it was built in an environment where the libraries were provided by XCode 12.*, these libraries introduced a reference to __darwin_fd_set_overflow via the FD_SET macro which is used in Select.c. Unfortunately, this symbol is not available with XCode 11.* which led to a linker error when trying to link anything. This is almost certainly a bug in XCode but we still have to work around it. Undefined symbols for architecture x86_64: "___darwin_check_fd_set_overflow", referenced from: _awaitEvent in libHSrts.a(Select.o) ld: symbol(s) not found for architecture x86_64 One way to fix this is to upgrade your version of xcode, but this would force the upgrade on users prematurely. Fortunately it also seems safe to pass the linker option "-Wl,-U,___darwin_check_fd_set_overflow" because the usage of the symbol is guarded by a guard to check if it's defined. __header_always_inline int __darwin_check_fd_set(int _a, const void *_b) { if ((uintptr_t)&__darwin_check_fd_set_overflow != (uintptr_t) 0) { return __darwin_check_fd_set_overflow(_a, _b, 1); return __darwin_check_fd_set_overflow(_a, _b, 0); } else { return 1; } Across the internet there are many other reports of this issue See: https://github.com/mono/mono/issues/19393 , https://github.com/sitsofe/fio/commit/b6a1e63a1ff607692a3caf3c2db2c3d575ba2320 The issue was originally reported in #19950 Fixes #19950
* Darwin CI: Don't explicitly pass ncurses/iconv pathsMatthew Pickering2021-06-202-3/+10
| | | | | | | | | | Passing --with-ncurses-libraries means the path which gets backed in progagate into the built binaries. This is incorrect when we want to distribute the binaries because the user might not have the library in that specific place. It's the user's reponsibility to direct the dynamic linker to the right place. Fixes #19968
* Guard Allocate Exec via LIBFFI by LIBFFIMoritz Angermann2021-06-201-1/+1
| | | | | | | | | | | | We now have two darwin flavours. AArch64-Darwin, and x86_64-darwin, the latter one which has proper custom adjustor support, the former though relies on libffi. Mixing both leads to odd crashes, as the closures might not fit the size of the libffi closures. Hence this needs to be guarded by the USE_LBFFI_FOR_ADJUSTORS guard. Original patch by Hamish Mackenzie
* Simplify pprLHsContextRyan Scott2021-06-192-8/+22
| | | | | | | | | This removes an _ad hoc_ special case for empty `LHsContext`s in `pprLHsContext`, fixing #20011. To avoid regressions in pretty-printing data types and classes constructed via TH, we now apply a heuristic where we convert empty datatype contexts and superclasses to a `Nothing` (rather than `Just` an empty context). This will, for instance, avoid pretty-printing every TH-constructed data type as `data () => Blah ...`.
* Do not reassociate lexical negation (#19838)Vladislav Zavialov2021-06-193-8/+26
|
* Fix naturalToFloat/DoubleSylvain Henry2021-06-196-21/+59
| | | | | | | | | | | * move naturalToFloat/Double from ghc-bignum to base:GHC.Float and make them wired-in (as their integerToFloat/Double counterparts) * use the same rounding method as integerToFloat/Double. This is an oversight of 540fa6b2cff3802877ff56a47ab3611e33a9ac86 * add passthrough rules for intToFloat, intToDouble, wordToFloat, wordToDouble.
* Deprecate -Wmissing-monadfail-instances (#17875)Krzysztof Gogolewski2021-06-197-47/+26
| | | | | Also document deprecation of Wnoncanonical-monadfail-instances and -Wimplicit-kind-vars
* Fix type and strictness signature of fork#Simon Peyton Jones2021-06-192-2/+5
| | | | | | | | | | | When working eta-expansion and reduction, I found that fork# had a weaker strictness signature than it should have (#19992). In particular, it didn't record that it applies its argument exactly once. To this I needed to give it a proper type (its first argument is always a function, which in turn entailed a small change to the call in GHC.Conc.Sync This patch fixes it.
* RTS: Fix flag parsing for --eventlog-flush-intervalMatthew Pickering2021-06-193-2/+10
| | | | Fixes #20006
* Perf: fix appendFSSylvain Henry2021-06-191-2/+2
| | | | To append 2 FastString we don't need to convert them into ByteString: use ShortByteString's Semigroup instance instead.
* Correct haddock annotations in GetOptDavid2021-06-191-3/+3
|
* RTS: fix indentation warningSylvain Henry2021-06-191-12/+14
|
* Add comments explaining why #19833 is wrongSimon Peyton Jones2021-06-191-36/+45
| | | | | I realised that the suggestion in #19833 doesn't work, and documented why in Note [Zapping Used Once info in WorkWrap]
* CI: Keep the value of PERF_NOTE_KEY in darwin environmentsMatthew Pickering2021-06-191-0/+1
| | | | This fixes the performance test tracking for all darwin environments.
* Pass -DLIBICONV_PLUG when building base library on FreeBSD.Gleb Popov2021-06-181-0/+6
| | | | | | | | | | | If libiconv is installed from packages on the build machine, there is a high chance that the build system will pick up /usr/local/include/iconv.h instead of base /usr/include/iconv.h This additional preprocessor define makes package's libiconv header compatible with system one, fixing the build. Closes issue #19958
* Improve pretty-printing of coercionsSimon Peyton Jones2021-06-183-6/+28
| | | | | | With -dsuppress-coercions, it's still good to be able to see the type of the coercion. This patch prints the type. Maybe we should have a flag to control this too.
* Improve abstractVars quantification orderingSimon Peyton Jones2021-06-181-5/+11
| | | | | | | | | | | | | | When floating a binding out past some type-variable binders, don't gratuitiously change the order of the binders. This small change gives code that is simpler, has less risk of non-determinism, and does not gratuitiously change type-variable order. See Note [Which type variables to abstract over] in GHC.Core.Opt.Simplify.Utils. This is really just refactoring; no change in behaviour.
* Enhance cast worker/wrapper for INLINABLESimon Peyton Jones2021-06-1812-149/+411
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In #19890 we realised that cast worker/wrapper didn't really work properly for functions with an INLINABLE pragma, and hence a stable unfolding. This patch fixes the problem. Instead of disabling cast w/w when there is a stable unfolding (as we did before), we now tranfer the stable unfolding to the worker. It turned out that it was easier to do that if I moved the cast w/w stuff from prepareBinding to completeBind. No chnages at all in nofib results: -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- Min -0.0% 0.0% -63.8% -78.2% 0.0% Max -0.0% 0.0% +11.8% +11.7% 0.0% Geometric Mean -0.0% -0.0% -26.6% -33.4% -0.0% Small decreases in compile-time allocation for two tests (below) of around 2%. T12545 increased in compile-time alloc by 4%, but it's not reproducible on my machine, and is a known-wobbly test. Metric Increase: T12545 Metric Decrease: T18698a T18698b
* Move validate-x86_64-linux-deb9-hadrian back to quick-buildwip/t20003Matthew Pickering2021-06-171-1/+1
| | | | | | | | | This increases the critical path length but in practice will reduce pressure on runners because less jobs overall will be spawned. See #20003 [skip ci]
* Fix error message for record updates, #19972Krzysztof Gogolewski2021-06-162-7/+5
| | | | Fix found by Adam Gundry.
* PPC NCG: Fix panic in linear register allocatorPeter Trommler2021-06-161-1/+1
|