[Git][ghc/ghc][wip/slowtest] 39 commits: Generate straightline code for inline array allocation
Ben Gamari
gitlab at gitlab.haskell.org
Thu Apr 11 22:16:50 UTC 2019
Ben Gamari pushed to branch wip/slowtest at Glasgow Haskell Compiler / GHC
Commits:
63b7d5fb by Michal Terepeta at 2019-04-08T18:29:34Z
Generate straightline code for inline array allocation
GHC has an optimization for allocating arrays when the size is
statically known -- it'll generate the code allocating and initializing
the array inline (instead of a call to a procedure from
`rts/PrimOps.cmm`).
However, the generated code uses a loop to do the initialization. Since
we already check that the requested size is small (we check against
`maxInlineAllocSize`), we can generate faster straightline code instead.
This brings about 15% improvement for `newSmallArray#` in my testing and
slightly simplifies the code in GHC.
Signed-off-by: Michal Terepeta <michal.terepeta at gmail.com>
- - - - -
2b3f4718 by Phuong Trinh at 2019-04-08T18:35:43Z
Fix #16500: look for interface files in -hidir flag in OneShot mode
We are currently ignoring options set in the hiDir field of hsc_dflags
when looking for interface files while compiling in OneShot mode. This
is inconsistent with the behaviour of other directory redirecting fields
(such as objectDir or hieDir). It is also inconsistent with the
behaviour of compilation in CompManager mode (a.k.a `ghc --make`) which
looks for interface files in the directory set in hidir flag. This
changes Finder.hs so that we use the value of hiDir while looking for
interface in OneShot mode.
- - - - -
97502be8 by Yuriy Syrovetskiy at 2019-04-08T18:41:51Z
Add `-optcxx` option (#16477)
- - - - -
97d3d546 by Ben Gamari at 2019-04-08T18:47:54Z
testsuite: Unmark T16190 as broken
Was broken via #16389 yet strangely it has started passing despite the
fact that the suggested root cause has not changed.
- - - - -
a42d206a by Yuriy Syrovetskiy at 2019-04-08T18:54:02Z
Fix whitespace style
- - - - -
4dda2270 by Matthew Pickering at 2019-04-08T19:00:08Z
Use ./hadrian/ghci.sh in .ghcid
- - - - -
d236d9d0 by Sebastian Graf at 2019-04-08T19:06:15Z
Make `singleConstructor` cope with pattern synonyms
Previously, `singleConstructor` didn't handle singleton `COMPLETE` sets
of a single pattern synonym, resulting in incomplete pattern warnings
in #15753.
This is fixed by making `singleConstructor` (now named
`singleMatchConstructor`) query `allCompleteMatches`, necessarily making
it effectful. As a result, most of this patch is concerned with
threading the side-effect through to `singleMatchConstructor`.
Unfortunately, this is not enough to completely fix the original
reproduction from #15753 and #15884, which are related to function
applications in pattern guards being translated too conservatively.
- - - - -
1085090e by Ömer Sinan Ağacan at 2019-04-08T19:12:22Z
Skip test ArithInt16 and ArithWord16 in GHCi way
These tests use unboxed tuples, which GHCi doesn't support
- - - - -
7287bb9e by Ömer Sinan Ağacan at 2019-04-08T19:18:33Z
testsuite: Show exit code of GHCi tests on failure
- - - - -
f5604d37 by John Ericson at 2019-04-08T19:24:43Z
settings.in: Reformat
We're might be about to switch to generating it in Hadrian/Make. This
reformat makes it easier to programmingmatically generate and end up
with the exact same thing, which is good for diffing to ensure no
regressions.
I had this as part of !712, but given the difficulty of satisfying CI, I
figured I should break things up even further.
- - - - -
cf9e1837 by Ryan Scott at 2019-04-08T19:30:51Z
Bump hpc submodule
Currently, the `hpc` submodule is pinned against the `wip/final-mfp`
branch, not against `master`. This pins it back against `master`.
- - - - -
36d38047 by Ben Gamari at 2019-04-09T14:23:47Z
users-guide: Document how to disable package environments
As noted in #16309 this somehow went undocumented.
- - - - -
af4cea7f by Artem Pyanykh at 2019-04-09T14:30:13Z
codegen: fix memset unroll for small bytearrays, add 64-bit sets
Fixes #16052
When the offset in `setByteArray#` is statically known, we can provide
better alignment guarantees then just 1 byte.
Also, memset can now do 64-bit wide sets.
The current memset intrinsic is not optimal however and can be
improved for the case when we know that we deal with
(baseAddress at known alignment) + offset
For instance, on 64-bit
`setByteArray# s 1# 23# 0#`
given that bytearray is 8 bytes aligned could be unrolled into
`movb, movw, movl, movq, movq`; but currently it is
`movb x23` since alignment of 1 is all we can embed into MO_Memset op.
- - - - -
bd2de4f0 by Artem Pyanykh at 2019-04-09T14:30:13Z
codegen: use newtype for Alignment in BasicTypes
- - - - -
14a78707 by Artem Pyanykh at 2019-04-09T14:30:13Z
docs: add a note about changes in memset unrolling to 8.10.1-notes
- - - - -
fe40ddd9 by Sylvain Henry at 2019-04-09T16:50:15Z
Hadrian: fix library install paths in bindist Makefile (#16498)
GHC now works out-of-the-box (i.e. without any wrapper script) by
assuming that @bin@ and @lib@ directories sit next to each other. In
particular, its RUNPATH uses $ORIGIN-based relative path to find the
libraries.
However, to be good citizens we want to support the case where @bin@ and
@lib@ directories (respectively BINDIR and LIBDIR) don't sit next to
each other or are renamed. To do that the install script simply creates
GHC specific @bin@ and @lib@ siblings directories into:
LIBDIR/ghc-VERSION/{bin,lib}
Then it installs wrapper scripts into BINDIR that call the appropriate
programs into LIBDIR/ghc-VERSION/bin/.
The issue fixed by this patch is that libraries were not installed into
LIBDIR/ghc-VERSION/lib but directly into LIBDIR.
- - - - -
9acdc4c0 by Ben Gamari at 2019-04-09T16:56:38Z
gitlab: Bump cabal-install version used by Windows builds to 2.4
Hopefully fixes Windows Hadrian build.
- - - - -
fc3f421b by Joachim Breitner at 2019-04-10T03:17:37Z
GHC no longer ever defines TABLES_NEXT_TO_CODE on its own
It should be entirely the responsibility of make/Hadrian to ensure that
everything that needs this flag gets it. GHC shouldn't be hardcoded to
assist with bootstrapping since it builds other things besides itself.
Reviewers:
Subscribers: TerrorJack, rwbarton, carter
GHC Trac Issues: #15548 -- progress towards but not fix
Differential Revision: https://phabricator.haskell.org/D5082 -- extract
from that
- - - - -
be0dde8e by Ryan Scott at 2019-04-10T03:23:50Z
Use ghc-prim < 0.7, not <= 0.6.1, as upper version bounds
Using `ghc-prim <= 0.6.1` is somewhat dodgy from a PVP point of view,
as it makes it awkward to support new minor releases of `ghc-prim`.
Let's instead use `< 0.7`, which is the idiomatic way of expressing
PVP-compliant upper version bounds.
- - - - -
42504f4a by Carter Schonwald at 2019-04-11T00:28:41Z
removing x87 register support from native code gen
* simplifies registers to have GPR, Float and Double, by removing the SSE2 and X87 Constructors
* makes -msse2 assumed/default for x86 platforms, fixing a long standing nondeterminism in rounding
behavior in 32bit haskell code
* removes the 80bit floating point representation from the supported float sizes
* theres still 1 tiny bit of x87 support needed,
for handling float and double return values in FFI calls wrt the C ABI on x86_32,
but this one piece does not leak into the rest of NCG.
* Lots of code thats not been touched in a long time got deleted as a
consequence of all of this
all in all, this change paves the way towards a lot of future further
improvements in how GHC handles floating point computations, along with
making the native code gen more accessible to a larger pool of contributors.
- - - - -
71283c8d by Ben Gamari at 2019-04-11T22:16:46Z
gitlab-ci: Test using slowtest in deb9-debug job
- - - - -
e5562623 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark hWaitForInput-accurate-stdin as broken in threaded ways
As noted in #16535.
- - - - -
2d09c033 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Make closureSize less sensitive to optimisation
- - - - -
59a8f3ca by Ben Gamari at 2019-04-11T22:16:46Z
process: Bump submodule
* Skip process005 in ghci way
* Mark process002 as fragile in threaded2
- - - - -
a19d89c8 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark T13167 as fragile in threaded2
As noted in #16536.
- - - - -
e366bbbb by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark T13910 as broken in optasm
Due to #16537.
- - - - -
8f7222db by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark T14272 as broken in optasm
- - - - -
6ddaf9f5 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark T14761c as broken in hpc and optasm ways
As noted in #16540.
- - - - -
28e0001d by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark T16180 as broken in ghci and ext-interp ways
As noted in #16541.
- - - - -
3b89a1a2 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Omit tcrun022 in hpc way
As noted in #16542, the expected rule doesn't fire. However, this
doesn't seem terribly surpring given the circumstances.
- - - - -
f4a8c108 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark Overflow as broken in hpc way
As noted in #16543.
- - - - -
eeef47d2 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark closure_size as broken in threaded2, optasm, dyn ways
As noted in #16531.
- - - - -
f836e11d by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark T2783 as fragile in threaded1
It was previously marked as broken but it passes non-deterministically.
See #2783.
- - - - -
a99b2a3c by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Skip T7919 in ghci way
It times out pretty reliably. It's not clear that much is gained by
running this test in the ghci way anyways.
- - - - -
978d9378 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Fix fragile_for test modifier
- - - - -
837e1c3b by Ben Gamari at 2019-04-11T22:16:46Z
users-guide: Add pretty to package list
- - - - -
1bf4d24d by Ben Gamari at 2019-04-11T22:16:46Z
Bump unix submodule
Marks posix002 as fragile in threaded2 way due to #16550.
- - - - -
2698084f by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Fix omit_ways usage
omit_ways expects a list but this was broken in several cases.
- - - - -
f1024129 by Ben Gamari at 2019-04-11T22:16:46Z
testsuite: Mark threadstatus-T9333 as fragile in ghci way
As noted in #16555.
- - - - -
30 changed files:
- .ghcid
- .gitlab-ci.yml
- .gitlab/win32-init.sh
- compiler/basicTypes/BasicTypes.hs
- compiler/cmm/CmmCallConv.hs
- compiler/cmm/CmmExpr.hs
- compiler/cmm/CmmType.hs
- compiler/codeGen/StgCmmPrim.hs
- compiler/deSugar/Check.hs
- compiler/llvmGen/LlvmCodeGen/Base.hs
- compiler/main/DriverPhases.hs
- compiler/main/DriverPipeline.hs
- compiler/main/DynFlags.hs
- compiler/main/Finder.hs
- compiler/main/HscTypes.hs
- compiler/main/SysTools.hs
- compiler/main/SysTools/ExtraObj.hs
- compiler/main/SysTools/Tasks.hs
- compiler/nativeGen/AsmCodeGen.hs
- compiler/nativeGen/Format.hs
- compiler/nativeGen/NCGMonad.hs
- compiler/nativeGen/PPC/CodeGen.hs
- compiler/nativeGen/PPC/Ppr.hs
- compiler/nativeGen/PPC/Regs.hs
- compiler/nativeGen/Reg.hs
- compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs
- compiler/nativeGen/RegClass.hs
- compiler/nativeGen/SPARC/Instr.hs
- compiler/nativeGen/SPARC/Ppr.hs
- compiler/nativeGen/SPARC/Regs.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/compare/a1927cb0269d1231bd8086d17f812cc38d8330e5...f1024129e7087bf29e03af8e6f686b921ecc7cd0
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/compare/a1927cb0269d1231bd8086d17f812cc38d8330e5...f1024129e7087bf29e03af8e6f686b921ecc7cd0
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20190411/7373c1bd/attachment-0001.html>
More information about the ghc-commits
mailing list