| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This reverts commit be8556ff4ce8039a6cad59db9fe37ac971d6a31e which was
accidentally pushed.
|
|\ |
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This equality-floating stuff is horribly delicate! Trac #9316 showed
up yet another corner case.
The main changes are
* include CTyVarEqs when "growing" the skolem set
* do not include the kind argument to (~) when growing the skolem set
I added a lot more comments as well
(cherry picked from commit 4b3df0bb705c9287046c07bbc6c038960fbf8d53)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary: --show-options will now include the package flags.
Test Plan: Pass --show-options to ghc, it should include -package-id.
Reviewers: austin, jstolarek
Subscribers: carter, thomie
Differential Revision: https://phabricator.haskell.org/D554
GHC Trac Issues: #9860
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
(cherry picked from commit 946cbcefab9bc02e12b741e5b070d7521b37ba1a)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
LLVM llc and opt commands should be set on all platforms, including
Windows. If they're not, GHC tries to execute an unnamed executable,
resulting in error messages such as:
Error (figuring out LLVM version): : runInteractiveProcess: invalid argument (Invalid argument)
<no location info>:
Warning: Couldn't figure out LLVM version!
Make sure you have installed LLVM
This regression was introduced in e6bfc596.
Test Plan: Build GHC and test if --info shows sensible values of "LLVM llc command" and "LLVM opt command"
Reviewers: austin, #ghc
Reviewed By: austin, #ghc
Subscribers: austin
Projects: #ghc
Differential Revision: https://phabricator.haskell.org/D190
GHC Trac Issues: #7143
(cherry picked from commit 918719b936b878ab660f20ceef8afc9e3a898c5a)
|
| |
| |
| |
| | |
(cherry picked from commit 2990e97f008c9703eb4b47e24a29d052d5735f00)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is actually the bug that triggered Trac #9390. We had
an unboxed tuple (# writeArray# ..., () #), and that writeArray#
argument isn't ok-for-speculation, so disobeys the invariant.
The desugaring of unboxed tuples was to blame; the fix is easy.
(cherry picked from commit 1fc60ea1f1fd89b90c2992d060aecb5b5a65f8c0)
|
| |
| |
| |
| | |
(cherry picked from commit a09508b792eed24fc4d8a363df2635026bfa2de6)
|
| |
| |
| |
| |
| |
| |
| | |
This was very simple: lists of different lengths are
*maybe* apart, not *surely* apart.
(cherry picked from commit f29bdfbcedda6cb33ab05d884c151f2b31f4e4e0)
|
| |
| |
| |
| | |
(cherry picked from commit 1a3e19d061c1e5a1db9789572eca3a0ade450954)
|
| |
| |
| |
| |
| |
| |
| |
| | |
Abort typechecking when we detect a superclass cycle error, as
ambiguity checking in the presence of superclass cycle errors can
cause a loop.
(cherry picked from commit 1b1388697e687154c2bf1943639e75f3ccf5bc59)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
when GHCI is not defined
Summary:
This patch fixes inconsistency in exported functions from TcSplice.lhs and TcSplice.lhs-boot
files. It looks like only GHC HEAD is sensitive to it and complains about it while bootstraping
another HEAD. At least this is what happening on Solaris/AMD64 builder machine where GHC 7.9.20140620
is used as a boostrap compiler. The failure does not happen on another builders.
Test Plan: validate
Reviewers: austin
Reviewed By: austin
Subscribers: phaskell, simonmar, relrod, carter
Differential Revision: https://phabricator.haskell.org/D74
(cherry picked from commit d996a1bb4db84727fbf1a8e9461a032e04e544e7)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To reproduce build failure it's enough to try
to build GHC on amd64 with the following setup:
$ cat mk/build.mk
# for #9552
GhcWithInterpreter = NO
It gives:
Reachable modules from DynFlags out of date
Please fix compiler/ghc.mk, or building DLLs on Windows may break (#7780)
Redundant modules: Bitmap BlockId ... <list of 42 modules>
<make error>
dll-split among other things makes sure
all mentioned modules are used by DynFlags.
'#ifdef GHCI' keeps is from happening.
Patch moves those 42 modules under
'GhcWithInterpreter' guard.
Fixes Issue #9552
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit 2a8ea4745d6ff79d6ce17961a64d9013243fc3c6)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously the linker was called without any commandline parameters to
detect whether bfd or gold is used. However the -fuse-ld parameter can
be used to switch between gold and bfd and should be taken into account
here.
Trac #9336
Signed-off-by: Austin Seipp <austin@well-typed.com>
(cherry picked from commit e7b414a3cc0e27049f2608f5e0a00c47146cc46d)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On some systems (depending on gcc multilib configuration) libffi
would install into libffi/build/inst/lib64 even though we configure
it with --libdir=libffi/build/inst/lib. There appears to be no way
to get libffi to install to a predictable directory "out of the box",
so we apply a small patch to Makefile.in. This is the same fix used
in Gentoo's ebuild (https://bugs.gentoo.org/show_bug.cgi?id=462814).
(cherry picked from commit 835d874df1973b7e1c602a747b42b77095592a9c)
|
| |
| |
| |
| |
| |
| | |
This sentence contains the word 'submodule' because it is a requirement.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
When we call runHandlers, we must pass it a ForeignPtr. To ensure that
this happens, we introduce a wrapper that receives a plain Ptr and
converts it into a ForeignPtr. Then we adjust startSignalHandlers in
rts/posix/Signals.c to call the wrapper instead of calling runHandlers
directly.
Reviewers: hvr, austin, rwbarton, simonmar
Reviewed By: austin, simonmar
Subscribers: simonmar, thomie, carter
Differential Revision: https://phabricator.haskell.org/D515
GHC Trac Issues: #9817
(cherry picked from commit 7ca5bb090ff78141fbe275b058a9e35ee496bd58)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
For compatibility with ARM machines from pre v6, the RTS provides
implementations of certain atomic operations. Previously, these
were only included in the threaded RTS.
But ghc (the library) contains the code in compiler/cbits/genSym.c, which
uses these operations if there is more than one capability. But there is only
one libHSghc, so the linker wants to resolve these symbols in every case.
By providing these operations in all RTSs, the linker is happy. The only
downside is a small amount of dead code in the non-threaded RTS on old ARM
machines.
Test Plan: It helped here.
Reviewers: bgamari, austin
Reviewed By: bgamari, austin
Subscribers: carter, thomie
Differential Revision: https://phabricator.haskell.org/D564
GHC Trac Issues: #8951
(cherry picked from commit df1307f079ae69dcd735e0973de987b141d509da)
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
the revert."
This reverts commit 55d2522bd0c48e4c5dac1526cdf53459270baf96.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| |
| |
| |
| | |
This breaks the build because I am a nincompoop and TyOpPrec doesn't
exit here.
This reverts commit d71f316ef4acb6a967a1f07bc4c1144e553a3ac9.
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
This reverts commit 4748f5936fe72d96edfa17b153dbfd84f2c4c053. The fix for #9423
was reverted because this commit introduced a C function setIOManagerControlFd()
(defined in Schedule.c) defined for all OS types, while the prototype
(in includes/rts/IOManager.h) was only included when mingw32_HOST_OS is
not defined. This broke Windows builds.
This commit reverts the original commit and resolves the problem by only defining
setIOManagerControlFd() when mingw32_HOST_OS is defined. Hence the missing prototype
error should not occur on Windows.
In addition, since the io_manager_control_wr_fd field of the Capability struct is only
usd by the setIOManagerControlFd, this commit includes the io_manager_control_wr_fd
field in the Capability struct only when mingw32_HOST_OS is not defined.
Test Plan: Try to compile successfully on all platforms.
Reviewers: austin
Reviewed By: austin
Subscribers: simonmar, ezyang, carter
Differential Revision: https://phabricator.haskell.org/D174
(commit cherry picked from 7e658bc14e2dd6baf208deebbdab9e1285ce4c72)
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch corrects an egregious error introduced by:
commit 022f8750edf6f413fba31293435dcc62600eab77
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date: Thu May 15 16:07:04 2014 +0100
Refactoring around TyCon.isSynTyCon
* Document isSynTyCon better
* Add isTypeSyonymTyCon for regular H98 type synonyms
* Use isTypeSynonymTyCon rather than isSynTyCon where
the former is really intended
At this particular spot in TcValidity we really do mean
isSynTyCon and not isTypeSynonymTyCon.
Fixes Trac #9433
(cherry picked from commit ee4501bbad6480509e8a60b5ff89c0b0b228b66d)
Conflicts:
testsuite/tests/indexed-types/should_fail/all.T
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Un-saturated type-family and type-synonym applications are
detected in the front end, but for some reason Lint wasn't
looking for them.
I came across this when wondering why Trac #9433 didn't give
a Core Lint error
(cherry picked from commit 8ff4671422090acf9146e3a90dd38e2c6f72aebb)
|
| |
| |
| |
| | |
(cherry picked from commit 3c5648afff13e9f6e94dea4094cc3a3fb97baeea)
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
| |
| |
| | |
(cherry picked from commit e5ba36080d08791f44e3bed37721f702e242af96)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This long-standing and egregious bug meant that call information was
being gratuitously copied, leading to an exponential blowup in the
number of calls to be examined when function definitions are deeply
nested. That is what has been causing the blowup in SpecConstr's
running time, not (as I had previously supposed) generating very large code.
See Note [spec_usg includes rhs_usg]
(cherry picked from commit af4bc31c50c873344a2426d4be842f92edf17019)
|
| |
| |
| |
| |
| |
| |
| | |
This is just a small refactoring that makes the code a bit clearer,
using a data type instead of a triple. We get better pretty-printing too.
(cherry picked from commit c0fe1d9e7a9f23d050319c77f3a38264f3aa22f8)
|
| |
| |
| |
| | |
(cherry picked from commit 675c5478793ac8cede5daca4f70cd09846879837)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes Trac #9658
(cherry picked from commit 48089ccf4f1f239b3268b2cb52b8aa0f7356485b)
Conflicts:
compiler/types/TypeRep.lhs
testsuite/tests/ghci/scripts/all.T
testsuite/tests/perf/compiler/T5837.stderr
testsuite/tests/typecheck/should_fail/ContextStack2.stderr
testsuite/tests/typecheck/should_fail/T8392a.stderr
|
| |
| |
| |
| |
| | |
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit 2fcb36e41f46f80f75e2f245a1a45457f0f7d6d2)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
UNREG
Haskell's 'foreign import' declaraion does not have a way
to extress exact C prototypes (it ignores 'const' modifiers, exact pointer
types, etc.) which leads to warnings when C backend generates calls to such
functions:
/tmp/ghc32698_0/ghc32698_10.hc:52:5:
warning: conflicting types for built-in function ‘strlen’ [enabled by default]
EF_(strlen);
^
Patch disables builtin functions for UNREG build
to workaround test failures due to stderr mismatch.
Fixes the following test failures:
TEST="safePkg01 T5423 T7574 T3736"
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit fcdd58d2ddcfd8d420adbcb3f20c1d666bc834e6)
|
| |
| |
| |
| |
| | |
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit ff9f4ad38521e54c5284f9bf4599c3baaefeb228)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
The 'popcnt r16, r/m16' instruction only writes the low 16 bits of
the destination register, so we have to zero-extend the result to
a full word as popCnt16# is supposed to return a Word#.
For popCnt8# we could instead zero-extend the input to 32 bits
and then do a 32-bit popcnt, and not have to zero-extend the result.
LLVM produces the 16-bit popcnt sequence with two zero extensions,
though, and who am I to argue?
Test Plan:
- ran "make TEST=cgrun071 EXTRA_HC_OPTS=-msse42"
- then ran again adding "WAY=optasm", and verified that
the popcnt sequences we generate match the ones produced
by LLVM for its @llvm.ctpop.* intrinsics
Reviewers: austin, hvr, tibbe
Reviewed By: austin, hvr, tibbe
Subscribers: phaskell, hvr, simonmar, relrod, ezyang, carter
Differential Revision: https://phabricator.haskell.org/D147
GHC Trac Issues: #9435
(cherry picked from commit 64151913f1ed32ecfe17fcc40f7adc6cbfbb0bc1)
|
| |
| |
| |
| |
| |
| | |
even for simplified/boot ModDetails (fixes #9417)
(cherry picked from commit f0db1857b053597e9ac43d9ce578e5f5fa0545cb)
|
| |
| |
| |
| |
| |
| |
| |
| | |
In the rather gnarly filterImports code, someone had forgotten
the AvailTC invariant: in AvailTC n [n,s1,s2], the 'n' is itself
included in the list of names.
(cherry picked from commit f964cd9c5c411f8a2383cf2b080581a5c3349661)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
ghc runs 'gcc -v' to check if we run under vanilla gcc
or disaguised clang by checking for string
"gcc version <something>"
But this check does not always work as gcc has that string
localized via gettext mechanism:
(some gcc's locale strings)
be.po-msgstr "версія gcc %s\n"
da.po-msgstr "GCC version %s\n"
de.po-msgstr "gcc-Version %s %s\n"
el.po-msgstr "έκδοση gcc %s\n"
...
To ping gcc to English locale we now override environment
variable with 'LANGUAGE=en' value.
Fixes Issue #8825
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Test Plan: validate
Reviewers: austin
Reviewed By: austin
Subscribers: simonmar, ezyang, carter
Differential Revision: https://phabricator.haskell.org/D185
GHC Trac Issues: #8825
(cherry picked from commit 4d4d07704ee78221607a18b8118294b0aea1bac4)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When there's a conflict between two threads evacuating the same TSO,
in some cases we would update the incall->tso pointer to point to the
wrong copy of the TSO. This would get fixed during the next GC, but
if the thread completed in the meantime, it would likely crash. We're
seeing this about once per day on a heavily loaded machine (it varies
a lot though).
(cherry picked from commit a11f71eff15ba2706cbb2ee29aaf7350909e0d2f)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
The commit fixes incorrect code generation of
integer-gmp package on ia64 due to C prototypes mismatch.
Before the patch prototypes for "foreign import prim" were:
StgWord poizh[];
After the patch they became:
StgFunPtr poizh();
Long story:
Consider the following simple example:
{-# LANGUAGE MagicHash, GHCForeignImportPrim, UnliftedFFITypes #-}
module M where
import GHC.Prim -- Int#
foreign import prim "poizh" poi# :: Int# -> Int#
Before the patch unregisterised build generated the
following 'poizh' reference:
EI_(poizh); /* StgWord poizh[]; */
FN_(M_poizh_entry) {
// ...
JMP_((W_)&poizh);
}
After the patch it looks this way:
EF_(poizh); /* StgFunPtr poizh(); */
FN_(M_poizh_entry) {
// ...
JMP_((W_)&poizh);
}
On ia64 it leads to different relocation types being generated:
incorrect one:
addl r14 = @ltoffx(poizh#)
ld8.mov r14 = [r14], poizh# ; r14 = address-of 'poizh#'
correct one:
addl r14 = @ltoff(@fptr(poizh#)), gp ; r14 = address-of-thunk 'poizh#'
ld8 r14 = [r14]
'@fptr(poizh#)' basically instructs assembler to creates
another obect consisting of real address to 'poizh' instructions
and module address. That '@fptr' object is used as a function "address"
This object is different for every module referencing 'poizh' symbol.
All indirect function calls expect '@fptr' object. That way
call site reads real destination address and set destination
module address in 'gp' register from '@fptr'.
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit e18525fae273f4c1ad8d6cbe1dea4fc074cac721)
|