ghc.git
3 years agoconfigure.ac: Allow disabling of large-address-space
Erik de Castro Lopo [Tue, 25 Aug 2015 01:33:32 +0000 (11:33 +1000)] 
configure.ac: Allow disabling of large-address-space

Recent changes (commit 0d1a8d09f4) for 64 bit platforms allowed GHC
to mmap one huge (currently 1 terrabyte) memory region from which to
do its own allocations. This is enabled by default, but it would be
nice (even just from the point of view of testing) to be able to
disable this at configure time.

Test Plan: configure and grep mk/config.h for USE_LARGE_ADDRESS_SPACE

Reviewers: austin, ezyang, bgamari, rwbarton

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1170

GHC Trac Issues: #10791

3 years agofix 64bit two-stage allocator on Solaris/AMD64 platform (#10790)
Karel Gardas [Tue, 25 Aug 2015 12:06:29 +0000 (14:06 +0200)] 
fix 64bit two-stage allocator on Solaris/AMD64 platform (#10790)

Test Plan: tested on Solaris 11/AMD64 when previous build failed

Reviewers: bgamari, austin, simonmar, gcampax, ezyang

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1169

3 years agoDelete ExtsCompat46 (#8330)
Thomas Miedema [Tue, 21 Jul 2015 12:59:55 +0000 (14:59 +0200)] 
Delete ExtsCompat46 (#8330)

We require ghc-7.8 to build HEAD (ghc-7.11).

Differential Revision: https://phabricator.haskell.org/D1165

3 years agoCheck options before warning about source imports.
Alex Rozenshteyn [Fri, 21 Aug 2015 19:42:16 +0000 (21:42 +0200)] 
Check options before warning about source imports.

Summary: Fixes T10637

Reviewers: austin, bgamari, thomie

Subscribers: dfordivam, simonpj, thomie

Differential Revision: https://phabricator.haskell.org/D1157

GHC Trac Issues: #10637

3 years agoBuild system: delete unused distrib/Makefile
Thomas Miedema [Sat, 15 Aug 2015 17:07:52 +0000 (19:07 +0200)] 
Build system: delete unused distrib/Makefile

3 years agoBuild system: simplify install.mk.in
Thomas Miedema [Sat, 15 Aug 2015 12:18:07 +0000 (14:18 +0200)] 
Build system: simplify install.mk.in

This will allow fixing #1851 more easily
("make install-strip" should work).

This reverts 57e2a81c589103b50da80a9e378b1a11285bd521:
  "On Cygwin, use a Cygwin-style path for /bin/install's destination"

Update submodule haddock and hsc2hs.

3 years agoRefactor: delete most of the module FastTypes
Thomas Miedema [Fri, 21 Aug 2015 08:44:54 +0000 (10:44 +0200)] 
Refactor: delete most of the module FastTypes

This reverses some of the work done in #1405, and goes back to the
assumption that the bootstrap compiler understands GHC-haskell.

In particular:
  * use MagicHash instead of _ILIT and _CLIT
  * pattern matching on I# if possible, instead of using iUnbox
    unnecessarily
  * use Int#/Char#/Addr# instead of the following type synonyms:
    - type FastInt   = Int#
    - type FastChar  = Char#
    - type FastPtr a = Addr#
  * inline the following functions:
    - iBox           = I#
    - cBox           = C#
    - fastChr        = chr#
    - fastOrd        = ord#
    - eqFastChar     = eqChar#
    - shiftLFastInt  = uncheckedIShiftL#
    - shiftR_FastInt = uncheckedIShiftRL#
    - shiftRLFastInt = uncheckedIShiftRL#
  * delete the following unused functions:
    - minFastInt
    - maxFastInt
    - uncheckedIShiftRA#
    - castFastPtr
    - panicDocFastInt and pprPanicFastInt
  * rename panicFastInt back to panic#

These functions remain, since they actually do something:
  * iUnbox
  * bitAndFastInt
  * bitOrFastInt

Test Plan: validate

Reviewers: austin, bgamari

Subscribers: rwbarton

Differential Revision: https://phabricator.haskell.org/D1141

GHC Trac Issues: #1405

3 years agoDelete FastBool
Thomas Miedema [Fri, 21 Aug 2015 08:38:06 +0000 (10:38 +0200)] 
Delete FastBool

This reverses some of the work done in Trac #1405, and assumes GHC is
smart enough to do its own unboxing of booleans now.

I would like to do some more performance measurements, but the code
changes can be reviewed already.

Test Plan:
With a perf build:
./inplace/bin/ghc-stage2 nofib/spectral/simple/Main.hs -fforce-recomp
+RTS -t --machine-readable

before:
```
  [("bytes allocated", "1300744864")
  ,("num_GCs", "302")
  ,("average_bytes_used", "8811118")
  ,("max_bytes_used", "24477464")
  ,("num_byte_usage_samples", "9")
  ,("peak_megabytes_allocated", "64")
  ,("init_cpu_seconds", "0.001")
  ,("init_wall_seconds", "0.001")
  ,("mutator_cpu_seconds", "2.833")
  ,("mutator_wall_seconds", "4.283")
  ,("GC_cpu_seconds", "0.960")
  ,("GC_wall_seconds", "0.961")
  ]
```

after:
```
  [("bytes allocated", "1301088064")
  ,("num_GCs", "310")
  ,("average_bytes_used", "8820253")
  ,("max_bytes_used", "24539904")
  ,("num_byte_usage_samples", "9")
  ,("peak_megabytes_allocated", "64")
  ,("init_cpu_seconds", "0.001")
  ,("init_wall_seconds", "0.001")
  ,("mutator_cpu_seconds", "2.876")
  ,("mutator_wall_seconds", "4.474")
  ,("GC_cpu_seconds", "0.965")
  ,("GC_wall_seconds", "0.979")
  ]
```

CPU time seems to be up a bit, but I'm not sure. Unfortunately CPU time
measurements are rather noisy.

Reviewers: austin, bgamari, rwbarton

Subscribers: nomeata

Differential Revision: https://phabricator.haskell.org/D1143

GHC Trac Issues: #1405

3 years agoImplement getSizeofMutableByteArrayOp primop
Ben Gamari [Fri, 21 Aug 2015 08:37:39 +0000 (10:37 +0200)] 
Implement getSizeofMutableByteArrayOp primop

Now since ByteArrays are mutable we need to be more explicit about when
the size is queried.

Test Plan: Add testcase and validate

Reviewers: goldfire, hvr, austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1139

GHC Trac Issues: #9447

3 years agoBag: Add Foldable instance
Ben Gamari [Tue, 18 Aug 2015 17:17:50 +0000 (19:17 +0200)] 
Bag: Add Foldable instance

3 years agoGhcMake: Fix spelling in comment
Ben Gamari [Tue, 18 Aug 2015 17:17:22 +0000 (19:17 +0200)] 
GhcMake: Fix spelling in comment

3 years agoDelete sync-all
Thomas Miedema [Thu, 20 Aug 2015 22:47:16 +0000 (00:47 +0200)] 
Delete sync-all

3 years agoBuild system: delete half-baked Cygwin support
Thomas Miedema [Sat, 15 Aug 2015 09:36:44 +0000 (11:36 +0200)] 
Build system: delete half-baked Cygwin support

We only support building GHC on mys2 nowadays, see
https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Windows.

This (partially) reverts various commits from a few years ago, among which:
  * 5775d5142da227d65fb86994d363eb16841ee642
    "Add OSTYPE build-system variable, and use it"
  * 3fb8c431824aa2f3bd979e35d1a283546fcfbe74
    "Fix building libgmp on cygwin"
  * cdbb4720c424500adb57cbbef69721d0b039fa46
    "Fix cmd invocation by libffi cuild system on Windows 7 cygwin"
  * e8121501ee3549a35e954726ccfd871ac9d51f83
    "Fix dblatex and xml* tool detection on Windows"

Reviewed by: austin, Phyx

Differential Revision: https://phabricator.haskell.org/D1155

3 years agoComments reformating/corrections
Divam [Tue, 18 Aug 2015 16:08:26 +0000 (18:08 +0200)] 
Comments reformating/corrections

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1145

3 years agoAdd selectors for common fields (DataCon/PatSyn) to ConLike
Matthew Pickering [Tue, 18 Aug 2015 16:07:18 +0000 (18:07 +0200)] 
Add selectors for common fields (DataCon/PatSyn) to ConLike

When pattern synonyms were introduced a new sum type was used
in places where DataCon used to be used. PatSyn and DataCon share many
of the same fields, this patch adds selectors to ConLike for these
fields.

Reviewers: austin, goldfire, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1154

3 years agorts/Printer.c: speed up '-Da' printer for 'LIBBFD' build
Sergei Trofimovich [Tue, 18 Aug 2015 16:06:41 +0000 (18:06 +0200)] 
rts/Printer.c: speed up '-Da' printer for 'LIBBFD' build

Patch switches from linear lookup in unordered array
to a hash table lookup.

When debugging GHC array contains 658_445 elements.

Found performance gap when tried to debug blackholes.

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Reviewers: simonmar, austin, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1150

3 years agoFix rdynamic flag and test on Windows
Tamar Christina [Tue, 18 Aug 2015 15:59:04 +0000 (17:59 +0200)] 
Fix rdynamic flag and test on Windows

The rdynamic tests and feature are marked broken on windows.
This is because the flag used doesn't exist and the symbol lookup
in the test did not account for platform differences in name mangling.

This commit fixes the flag and tests for rdynamic on windows.

Test Plan:
make TEST="rdynamic"

on both x86 and x86_64

Reviewers: austin, thomie, bgamari

Reviewed By: thomie, bgamari

Subscribers: #ghc_windows_task_force

Differential Revision: https://phabricator.haskell.org/D1149

GHC Trac Issues: #9381

3 years agoDump files always use UTF8 encoding #10762
Michael Snoyman [Tue, 18 Aug 2015 15:58:36 +0000 (17:58 +0200)] 
Dump files always use UTF8 encoding #10762

When the Windows codepage or *nix LANG variable is something besides
UTF-8, dumping to file can cause GHC to exit currently. This changes the
output encoding for files to match the defined input encoding for
Haskell source code (UTF-8), making it easier for users and build tools
to capture this output.

Test Plan:
Create a Haskell source file with non-Latin characters for identifier
names and
compile with:

LANG=C ghc -ddump-to-file -ddump-hi filename.hs -fforce-recomp

Without this patch, it will fail. With this patch, it succeeds

Reviewers: austin, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1151

GHC Trac Issues: #10762

3 years agoTransliterate unknown characters at output
Michael Snoyman [Tue, 18 Aug 2015 15:58:02 +0000 (17:58 +0200)] 
Transliterate unknown characters at output

This avoids the compiler from crashing when, for example, a warning
contains a non-Latin identifier and the LANG variable is set to C.
Fixes #6037.

Test Plan:
Create a Haskell source file containing an identifier with non-Latin
characters and no type signature. Compile with `LANG=C ghc -Wall
foo.hs`, and it should fail. With this patch, it will succeed.

Reviewers: austin, rwbarton, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1153

GHC Trac Issues: #6037, #10762

3 years agoMake rts/ThreadLabels.c threadsafe for debug runtime.
Sergei Trofimovich [Mon, 17 Aug 2015 22:14:42 +0000 (23:14 +0100)] 
Make rts/ThreadLabels.c threadsafe for debug runtime.

rts/ThreadLabels.c has a global hashtable for each
running haskell thread. It's not synchronized across
OS threads.

Was discovered when ran -debug build of ghc itself as:

    $ ghc-stage2 -j8 +RTS -A256M -l

and glibc detected double-free corruption:

    #2  in __libc_message (do_abort=do_abort@entry=2,
        fmt=fmt@entry=0x7fe0bcebf368 "*** Error in `%s': %s: 0x%s ***\n")
    #3  in malloc_printerr (action=3, str=0x7fe0bcebf4c0 "double free or corruption (fasttop)",
        ptr=<optimized out>)
    #4  in _int_free (av=<optimized out>, p=<optimized out>, have_lock=0)
    #5  in stgFree (p=0x7fe060001820) at rts/RtsUtils.c:108
    #6  in freeHashTable (table=0x5929320, freeDataFun=0x36374df <stgFree>) at rts/Hash.c:360
    #7  in freeThreadLabelTable () at rts/ThreadLabels.c:37
    #8  in hs_exit_ (wait_foreign=rtsFalse) at rts/RtsStartup.c:403
    #9  in shutdownHaskellAndExit (n=0, fastExit=0) at rts/RtsStartup.c:481
    #10 in hs_main (...) at rts/RtsMain.c:91
    #11 in main (...) at ghc/hschooks.c:63

Exposed itself after commit:

> commit f6866824ce5cdf5359f0cad78c49d65f6d43af12
> Author: Sergei Trofimovich <slyfox@gentoo.org>
> Date:   Mon Aug 4 08:10:33 2014 -0500
>
>     ghc --make: add nicer names to RTS threads (threaded IO manager, make workers)

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Reviewers: austin, simonmar, ezyang, bgamari

Reviewed By: ezyang, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1146

3 years agoTravis: prevent 10' no output, by setting VERBOSE=2
Thomas Miedema [Mon, 17 Aug 2015 12:31:07 +0000 (14:31 +0200)] 
Travis: prevent 10' no output, by setting VERBOSE=2

3 years agoTestsuite: speedup running a single test
Thomas Miedema [Sat, 15 Aug 2015 19:10:32 +0000 (21:10 +0200)] 
Testsuite: speedup running a single test

Benchmark: in rootdirectory, run `time make test TEST=dummy VERBOSE=0`
Before this commit: 2.6s
After this commit: 0.7s

3 years agoTestsuite: recenter 2 performance tests on Windows
Thomas Miedema [Fri, 14 Aug 2015 10:05:20 +0000 (12:05 +0200)] 
Testsuite: recenter 2 performance tests on Windows

No major deviations. Also fixup T7861.

3 years agoTestsuite: mark encoding005 expect_broken(#10623) on Windows
Thomas Miedema [Sat, 15 Aug 2015 14:55:26 +0000 (16:55 +0200)] 
Testsuite: mark encoding005 expect_broken(#10623) on Windows

3 years agoTestsuite: mark T8089 expect_broken(#7325) on Windows
Thomas Miedema [Sat, 15 Aug 2015 14:33:33 +0000 (16:33 +0200)] 
Testsuite: mark T8089 expect_broken(#7325) on Windows

3 years agoName: Show NameSort in warning
Ben Gamari [Thu, 13 Aug 2015 18:18:56 +0000 (20:18 +0200)] 
Name: Show NameSort in warning

This is quite useful information to know. Spotted when looking at #10769.

3 years agoDynFlags: Prohibit hpc and byte-code interpreter
Ben Gamari [Thu, 13 Aug 2015 18:17:06 +0000 (20:17 +0200)] 
DynFlags: Prohibit hpc and byte-code interpreter

The user's guide says hpc is incompatible with GHCi and #9903 would
agree. Fixes #9903.

3 years agoSysTools: Fix whitespace in error message
Ben Gamari [Wed, 12 Aug 2015 14:31:46 +0000 (16:31 +0200)] 
SysTools: Fix whitespace in error message

3 years agoUpdate mingw tarball location
Ben Gamari [Wed, 12 Aug 2015 12:06:37 +0000 (14:06 +0200)] 
Update mingw tarball location

3 years agoUpgrade GCC to 5.2.0 for Windows x86 and x86_64
Tamar Christina [Wed, 12 Aug 2015 11:33:13 +0000 (13:33 +0200)] 
Upgrade GCC to 5.2.0 for Windows x86 and x86_64

This patch does a few things

- Moved GHC x86 to MinGW-w64 (Using Awson's patch)
- Moves Both GHCs to MSYS2 toolchains
- Completely removes the dependencies on the git tarball repo
  - Downloads only the required tarball for the architecture for
    which we are building
  - Downloads the perl tarball is missing as well
  - Fixed a few bugs in the linker to fix tests on Windows

The links currently point to repo.msys2.org and GitHub, it might be
more desirable to mirror them on
http://downloads.haskell.org/~ghc/mingw/ as with the previous patch
attempt.

For more details on what the MSYS2 packages I include see #10726
(Awson's comment). but it should contain all we need
and no python or fortran, which makes the uncompressed tar a 1-2
hundreds mb smaller.

The `GCC 5.2.0` in the package supports `libgcc` as a shared library,
this is a problem since
when compiling with -shared the produced dll now has a dependency on
`libgcc_s_sjlj-1.dll`.
To solve this the flag `-static-libgcc` is now being used for all GCC
calls on windows.

Test Plan:
./validate was ran both on x86 and x86_64 windows and compared against
the baseline.

A few test were failing due to Ld no longer being noisy. These were
updated.

The changes to the configure script *should* be validated by the build
bots for the other platforms before landing

Reviewers: simonmar, awson, bgamari, austin, thomie

Reviewed By: thomie

Subscribers: #ghc_windows_task_force, thomie, awson

Differential Revision: https://phabricator.haskell.org/D1123

GHC Trac Issues: #10726, #9014, #9218, #10435

3 years agotemplate-haskell: Add changelog entry to infix type operators
Ben Gamari [Wed, 12 Aug 2015 11:32:08 +0000 (13:32 +0200)] 
template-haskell: Add changelog entry to infix type operators

3 years agoPretty: improving the space/time performance of vcat, hsep, hcat (#10735)
Thomas Miedema [Wed, 5 Aug 2015 08:31:46 +0000 (10:31 +0200)] 
Pretty: improving the space/time performance of vcat, hsep, hcat (#10735)

After 5d57087e314bd484dbe14958f9b422be3ac6641a ("Pretty: fix a broken
invariant"), T3294 showed 50% more max_bytes_used (#3294). After this
commit, max_bytes_used is back to what it was before, and the test
passes again.

This is a backport of a bug fix by Benedikt Huber (#2393), from commit
1e50748beaa4bd2281d323b18ea51c786bba04a1 in the pretty library.

From https://mail.haskell.org/pipermail/libraries/2008-June/009991.html:

    vcat (hsep,cat) is implemented in an unneccessarily strict way.
    We only get some output after all of vcat's arguments are evaluated
    and checked against being Empty.
    This can be improved by only checking the right argument of foldr
    against being Empty, and
    then applying an Empty-filter on the resulting Doc. Space improvement
    is obvious.
    The microbenchmark (code.haskell.org/~bhuber/Text/PrettyPrint/
    HughesPJPerfCheck.hs) suggests that
    the improvements in time are remarkable too.

3 years agoPretty: show rational as is (#10735)
Thomas Miedema [Wed, 5 Aug 2015 11:17:56 +0000 (13:17 +0200)] 
Pretty: show rational as is (#10735)

Following libraries/pretty. I'm not sure why it converted to Double
before.

This function isn't used by GHC itself. It is exported from these two
places:
  * compiler/utils/Outputable
  * libraries/template-haskell/Language/Haskell/TH/PprLib.hs

3 years agoPretty: fix a broken invariant (#10735)
Thomas Miedema [Wed, 5 Aug 2015 09:31:21 +0000 (11:31 +0200)] 
Pretty: fix a broken invariant (#10735)

This is a backport of a bug fix from
6cfbd0444981c074bae10a3cf72733bcb8597bef in libraries/pretty:

    Fix a broken invariant
    Patch from #694,  for the problem "empty is an identity for <> and $$" is
    currently broken by eg. isEmpty (empty<>empty)"

3 years agoPretty: fix potential bad formatting of error message (#10735)
Thomas Miedema [Wed, 5 Aug 2015 08:58:54 +0000 (10:58 +0200)] 
Pretty: fix potential bad formatting of error message (#10735)

This is a backport of a bug fix by Benedikt Huber for the same problem
in the pretty library (#1337), from commit
8d8866a8379c2fe8108ef034893c59e06d5e752f. The original explanation for
the fix is attached below.

Ticket #1776 originally reported an infinite loop when printing error
message. This promptly got fixed in:

  commit 2d52ee06786e5caf0c2d65a4b4bb7c45c6493190
  Author: simonpj@microsoft.com <unknown>
  Date:   Thu Mar 1 11:45:13 2007 +0000

      Do not go into an infinite loop when pretty-printer finds a
      negative indent (Trac #1176)

SPJ reports in the ticket: "So infinite loop is fixed, but the bad
formatting remains. I've added a test, tcfail177."

tcfail177 however hasn't triggered the formatting problem for years (as
Ian reported in c9e0e6067a47c574d9ff3721afe58e30ca1be3e4).

This patch updates the test to a version that at least still failed with
ghc-7.0 (from #1776#comment:7).

-------------------

From https://mail.haskell.org/pipermail/libraries/2008-June/010013.html,
by Benedikt Huber:

    Concerning ticket #1337, we have to change the formal specification of
    fill (it doesn't match the implementation):

    -- Current Specification:
    --   fill []  = empty
    --   fill [p] = p
    --   fill (p1:p2:ps) = oneLiner p1 <#> nest (length p1)
    --                                          (fill (oneLiner p2 : ps))
    --                     `union`
    --                      p1 $$ fill ps

    Problem 1: We want to `unnest' the second argument of (p1 $$ fill ps),
    but not the first one

    In the definition above we have e.g.

    > getSecondLayout $
    >   fillDef False [text "a", text "b", text "a"]

    >> text "ab"; nilabove; nest -1; text "a"; empty
    >> |ab|
    >> |.a|

    Problem 2: The overlapping $$ should only be used for those layouts of
    p1 which aren't one liners (otherwise violating the invariant "Left
    union arg has shorter first line").

    I suggest the following specification (i believe it almost matches the
    current implementation, modulo [fillNB: fix bug #1337] (see below):

    -- Revised Specification:
    --   fill g docs = fill' 0 docs
    --   gap g       = if g then 1 else 0
    --   fill' n []  = []
    --   fill' n [p] = [p]
    --   fill' n (p1:p2:ps) =
    --      oneLiner p1 <g> (fill' (n+length p1+gap g) (oneLiner p2 : ps))
    --        `union`
    --     (p1 $*$ nest (-n) (fill' g ps))
    --
    -- $*$ is defined for layouts (One-Layout Documents) as
    --
    -- layout1 $*$ layout2 | isOneLiner layout1 = layout1 $+$ layout2
    --                     | otherwise          = layout1 $$ layout2

    I've also implemented the specification in HughesPJQuickCheck.hs,
    and checked them against the patched pretty printer.

    Concerning Bug #1337:
    ~~~~~~~~~~~~~~~~~~~~~

    If the above formal specification is fine, it is easy to fix:
    elide the nests of (oneLiner p2) [see attached patch, record bug #1337].

    > PrettyPrint(0) $ ./Bug1337
    > ....ab
    > ...c

    The (long) explanation follows below.

    <snip/>

    ===========================================================
    Explanation of Bug #1337:

    Consider

    > fcat [ nest 1 $ text "a", nest 2 $ text "b", text "c"]

    --> expected: (nest 1; text "a"; text "b"; nest -3; "c")
    --> actual  : (nest 1; text "a"; text "b"; nest -5; "c")

    Reduction:
    === (nest 1; text a) <> (fill (-2) (p2:ps))
    ==>                     (nest 2 (text "b") $+$ text "c")
    ==>                     (nest 2 (text "b")) `nilabove`
                            (nest (-3) (text "c"))
    ==> (nest 1; text a; text b; nest -5 c)

    The problem is that if we decide to layout (p1:p2:ps) as

    | p1 p2
    | ps

    (call it layout A), then we want to have

    > (p1 <> p2) $+$ ps.

    But following law <n6> this means that

    > fcat_A [p1:nest k p2:ps]

    is equivalent to

    > fcat_A [p1,p2,ps]

    so the nest of p2 has to be removed.

    This is somewhat similar to bug #667, but easier to fix
    from a semantic point of view:
    p1,p2 and ps are distinct layouts - we only have to preserve the
    individual layouts, and no combinations of them.

3 years agoPretty: bugfix fillNB (#10735)
Thomas Miedema [Tue, 4 Aug 2015 20:32:06 +0000 (22:32 +0200)] 
Pretty: bugfix fillNB (#10735)

This is a backport of a bug fix by Benedikt Huber (#2393), from commit
1e50748beaa4bd2281d323b18ea51c786bba04a1 in the pretty library.

From https://mail.haskell.org/pipermail/libraries/2008-June/009991.html:

    Law <l1> states that

    > sep (ps++[empty]++qs)   = sep (ps ++ qs)
    >         ...ditto hsep, hcat, vcat, fill...

    In the current implementation, this fails for the paragraph fill
    variants.

    > render' $ fsep [ text "c", text "c",empty, text "c", text "b"]
    >   where render' = renderStyle (Style PageMode 7 1.4)
    >> c c c
    >>     b

3 years agoBump template-haskell to new major version 2.11
Herbert Valerio Riedel [Wed, 12 Aug 2015 07:48:53 +0000 (09:48 +0200)] 
Bump template-haskell to new major version 2.11

...since we already have introduced backward compat breakage
that breaks packages such as QuickCheck-2.8.1

Differential Revision: https://phabricator.haskell.org/D1144

3 years agoAdd missing </para> to User's guide to fix the build
Thomas Miedema [Tue, 11 Aug 2015 22:34:04 +0000 (00:34 +0200)] 
Add missing </para> to User's guide to fix the build

3 years agoUser manual update, as prodded by #10760.
Richard Eisenberg [Tue, 11 Aug 2015 13:05:30 +0000 (09:05 -0400)] 
User manual update, as prodded by #10760.

This clarifies that kind variables are inputs to type families
and can be used to distinguish instances.

3 years agoReplace HsBang type with HsSrcBang and HsImplBang
Adam Sandberg Eriksson [Mon, 10 Aug 2015 10:55:50 +0000 (12:55 +0200)] 
Replace HsBang type with HsSrcBang and HsImplBang

Updates haddock submodule.

Reviewers: tibbe, goldfire, simonpj, austin, bgamari

Reviewed By: simonpj, bgamari

Subscribers: goldfire, thomie, mpickering

Differential Revision: https://phabricator.haskell.org/D1069

3 years agoUpdate testsuite/.gitignore [skip ci]
Thomas Miedema [Sat, 18 Jul 2015 20:14:26 +0000 (22:14 +0200)] 
Update testsuite/.gitignore [skip ci]

3 years agoFix unused-matches warnings in CmmLex.x
Thomas Miedema [Sat, 4 Jul 2015 13:13:19 +0000 (15:13 +0200)] 
Fix unused-matches warnings in CmmLex.x

3 years agoUpdate transformers submodule to 0.4.3.0 release
Herbert Valerio Riedel [Sat, 8 Aug 2015 09:13:52 +0000 (11:13 +0200)] 
Update transformers submodule to 0.4.3.0 release

Differential Revision: https://phabricator.haskell.org/D1140

3 years agocmmCreateSwitchPlan: Handle singletons up-front
Joachim Breitner [Fri, 7 Aug 2015 08:56:09 +0000 (10:56 +0200)] 
cmmCreateSwitchPlan: Handle singletons up-front

and make sure these are implemented with an equality check, which is a
shorter instruction. This was suggested by rwbarton in #10677.

Differential Revision: https://phabricator.haskell.org/D1137

3 years agoMake oneShot open-kinded
Joachim Breitner [Fri, 7 Aug 2015 08:36:32 +0000 (10:36 +0200)] 
Make oneShot open-kinded

akio wants to use oneShot with unlifted types as well, and there is no
good reason not to let him. This changes the type of the built-in
oneShot definition to open kinds, and also expand the documentation a
little bit.

Differential Revision: https://phabricator.haskell.org/D1136

3 years agoSync base/changelog.md with GHC 7.10.2 release
Herbert Valerio Riedel [Fri, 7 Aug 2015 15:59:25 +0000 (17:59 +0200)] 
Sync base/changelog.md with GHC 7.10.2 release

[skip ci]

3 years agoComments only
Simon Peyton Jones [Fri, 7 Aug 2015 11:32:48 +0000 (12:32 +0100)] 
Comments only

3 years agoTest Trac #10753
Simon Peyton Jones [Fri, 7 Aug 2015 11:32:09 +0000 (12:32 +0100)] 
Test Trac #10753

3 years agoBig batch of Backpack documentation edits.
Edward Z. Yang [Fri, 7 Aug 2015 05:31:17 +0000 (22:31 -0700)] 
Big batch of Backpack documentation edits.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agobase: Add missing Traversable instance for ZipList
Ben Gamari [Fri, 7 Aug 2015 03:50:22 +0000 (05:50 +0200)] 
base: Add missing Traversable instance for ZipList

3 years agoRejigger OSMem.my_mmap to allow building on Mac
Richard Eisenberg [Thu, 6 Aug 2015 18:37:53 +0000 (14:37 -0400)] 
Rejigger OSMem.my_mmap to allow building on Mac

Previously, the prot and flags variables were set but never used
on Mac (darwin). This caused a warning, and the build setup stopped
compilation. This commit is intended simply to omit these variables
when building with darwin_HOST_OS set. No change in behavior on any
platform is intended.

3 years agoAdd test for #10600 (exhaustiveness check with --make and -fno-code)
Reid Barton [Thu, 6 Aug 2015 18:12:38 +0000 (14:12 -0400)] 
Add test for #10600 (exhaustiveness check with --make and -fno-code)

3 years agollvmGen: Rework LLVM mangler
Ben Gamari [Thu, 6 Aug 2015 15:30:19 +0000 (17:30 +0200)] 
llvmGen: Rework LLVM mangler

The LLVM mangler does not currently transform AVX instructions on x86-64
platforms, due to a missing #include. Also, it is significantly more
complicated than necessary, due to the file into sections (not needed
anymore), and is sensitive to the details of the whitespace in the
assembly.

Author: dobenour

Test Plan: Validation on x86-64, x86-32, and ARM

Reviewers: austin

Subscribers: thomie, bgamari, rwbarton

Differential Revision: https://phabricator.haskell.org/D1034

GHC Trac Issues: #10394

3 years agobase: Add instances
fumieval [Thu, 6 Aug 2015 15:28:04 +0000 (17:28 +0200)] 
base: Add instances

This patch adds following instances:

* Foldable ZipList
* Traversable ZipList
* Functor Complex
* Applicative Complex
* Monad Complex
* Foldable Complex
* Traversable Complex
* Generic1 Complex
* Monoid a => Monoid (Identity a)
* Storable ()

Reviewers: ekmett, fumieval, hvr, austin

Subscribers: thomie, #core_libraries_committee

Projects: #core_libraries_committee

Differential Revision: https://phabricator.haskell.org/D1049

GHC Trac Issues: #10609

3 years agoEnsure DynFlags are consistent
Ben Gamari [Thu, 6 Aug 2015 15:25:46 +0000 (17:25 +0200)] 
Ensure DynFlags are consistent

While we have always had makeDynFlagsConsistent to enforce a variety of
consistency invariants on DynFlags, it hasn't been widely used.
GHC.Main, for instance, ignored it entirely. This leads to issues like
Trac #10549, where an OPTIONS_GHC pragma introduced an inconsistency,
leading to a perplexing crash later in compilation.

Here I add consistency checks in GHC.Main.set{Session,Program}DynFlags,
closing this hole.

Fixes #10549.

Test Plan: Validate with T10549

Reviewers: austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1128

GHC Trac Issues: #10549

3 years agoTest Trac #10742
Simon Peyton Jones [Thu, 6 Aug 2015 13:50:35 +0000 (14:50 +0100)] 
Test Trac #10742

3 years agoT8968-1 and -3 should pass
Simon Peyton Jones [Thu, 6 Aug 2015 13:50:12 +0000 (14:50 +0100)] 
T8968-1 and -3 should pass

See Trac #9953, comment:22.

3 years agoComments only
Simon Peyton Jones [Thu, 6 Aug 2015 13:46:48 +0000 (14:46 +0100)] 
Comments only

3 years agoComents only
Simon Peyton Jones [Thu, 6 Aug 2015 12:40:07 +0000 (13:40 +0100)] 
Coments only

3 years agoFix quantification for inference with sigs
Simon Peyton Jones [Wed, 5 Aug 2015 15:46:16 +0000 (16:46 +0100)] 
Fix quantification for inference with sigs

When we are *inferring* the type of a let-bound function,
we might still have a type signature.  And we must be sure
to quantify over its type variables, else you get the crash
in Trac #10615.

See Note [Which type variables to quantify] in TcSimplify

3 years agoTidy up and refactor wildcard handling
Simon Peyton Jones [Wed, 5 Aug 2015 13:24:54 +0000 (14:24 +0100)] 
Tidy up and refactor wildcard handling

When examining #10615, I found the wildcard handling hard
to understand.  This patch refactors quite a bit, but with
no real change in behaviour.

 * Split out TcIdSigInfo from TcSigInfo, as a separate type,
   like TcPatSynInfo.

 * Make TcIdSigInfo express more invariants by pushing the
   wildard info into TcIdSigBndr

 * Remove all special treatment of unification variables that arise
   from wildcards; so the TauTv of TcType.MetaInfo loses its Bool
   argument.

A ton of konck on changes.  The result is significantly simpler, I think.

3 years agoMinor refactor to use filterInScope
Simon Peyton Jones [Wed, 5 Aug 2015 13:03:34 +0000 (14:03 +0100)] 
Minor refactor to use filterInScope

3 years agoComments only
Simon Peyton Jones [Wed, 5 Aug 2015 12:56:48 +0000 (13:56 +0100)] 
Comments only

3 years agoWarn about missed specialisations for imports
Simon Peyton Jones [Wed, 5 Aug 2015 12:37:18 +0000 (13:37 +0100)] 
Warn about missed specialisations for imports

This change was provoked by Trac #10720, where a missing
INLINEABLE pragma gave very poor performance.

The change is to warn when an imported function is not specialised
in a situation where the user expects it to be.

New flags
  -fwarn-missed-specialisations
  -fwarn-all-missed-specialisations

Documented in user manual.
See Note [Warning about missed specialisations]

3 years agoDo not complain about SPECIALISE for INLINE
Simon Peyton Jones [Wed, 5 Aug 2015 12:38:20 +0000 (13:38 +0100)] 
Do not complain about SPECIALISE for INLINE

Fixes Trac #10721.
See Note [SPECIALISE on INLINE functions]

3 years agoAllow proper errors/warnings in core2core passes
Simon Peyton Jones [Wed, 5 Aug 2015 12:31:48 +0000 (13:31 +0100)] 
Allow proper errors/warnings in core2core passes

This patch makes it possible for core-to-core passes to emit
proper error messages and warnings.

  * New function CoreMonad.warnMsg

  * CoreMonad.warnMsg and errorMsg now print a proper warning/error
    message heading.

  * CoreMonad carries a SrcSpan, which is used in warning/error
    messages.  It is initialised to be the source file name, but
    a core-to-core pass could set it more specifically if it had
    better location information.

There was a bit of plumbing needed to get the filename to the
right place.

3 years agoAdd Fixity info for infix types
RyanGlScott [Wed, 5 Aug 2015 12:24:08 +0000 (14:24 +0200)] 
Add Fixity info for infix types

Template Haskell allows reification of fixity for infix functions and
data constructors, and not for infix types. This adds a `Fixity` field
to the relevant `Info` constructors that can have infix types (`ClassI`,
`TyConI`, and `FamilyI`).

I don't think that `VarI` or `PrimTyConI` can be infix, but I could be
wrong.

Test Plan: ./validate

Reviewers: austin, goldfire, bgamari

Reviewed By: goldfire, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1109

GHC Trac Issues: #10704

3 years agoAdditions to users' guide and release notes
RyanGlScott [Wed, 5 Aug 2015 12:23:32 +0000 (14:23 +0200)] 
Additions to users' guide and release notes

This makes two changes to the documentation:

* Adds a comment in the release notes about the ability to
  quote primitive chars and strings in TH (see D1054)
* Removes an outdated comment in the users' guide about TH not
  being able to handle `PartialTypeSignatures` (which was fixed in
  D1048)

Reviewers: goldfire, austin, simonpj, bgamari

Reviewed By: simonpj, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1125

3 years agoMake sure that `all`, `any`, `and`, and `or` fuse (#9848)
Takano Akio [Wed, 5 Aug 2015 12:23:22 +0000 (14:23 +0200)] 
Make sure that `all`, `any`, `and`, and `or` fuse (#9848)

Test Plan: validate

Reviewers: hvr, austin, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, thomie

Differential Revision: https://phabricator.haskell.org/D1126

GHC Trac Issues: #9848

3 years agoMake Exception datatypes into newtypes
RyanGlScott [Wed, 5 Aug 2015 12:23:12 +0000 (14:23 +0200)] 
Make Exception datatypes into newtypes

Certain instances of `Exception` are simply datatypes with only one
argument, which should be `newtype`s.

Reviewers: ekmett, hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1131

GHC Trac Issues: #10738

3 years agoMake -fcpr-off a dynamic flag
Christiaan Baaij [Wed, 5 Aug 2015 12:22:14 +0000 (14:22 +0200)] 
Make -fcpr-off a dynamic flag

Test Plan: validate

Reviewers: austin, goldfire, simonpj, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D1110

GHC Trac Issues: #10706

3 years agoDrop custom mapM impl for []
Ben Gamari [Wed, 5 Aug 2015 12:21:47 +0000 (14:21 +0200)] 
Drop custom mapM impl for []

See https://mail.haskell.org/pipermail/libraries/2015-May/025708.html
for motivation.

This fixes #10457

Test Plan: Validate

Reviewers: hvr, austin

Subscribers: simonmar, thomie, dolio

Differential Revision: https://phabricator.haskell.org/D1124

GHC Trac Issues: #10457

3 years agousers_guide: Add note about #367 to Bugs section
Ben Gamari [Wed, 5 Aug 2015 12:21:28 +0000 (14:21 +0200)] 
users_guide: Add note about #367 to Bugs section

This is a long-standing bug and should be mentioned in the users guide,
as noted in #10639.

Test Plan: Carefully check language.

Reviewers: simonpj, rwbarton, austin

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D1127

GHC Trac Issues: #10639, #367

3 years agoAdd framework flags when linking a dynamic library
Christiaan Baaij [Wed, 5 Aug 2015 12:20:56 +0000 (14:20 +0200)] 
Add framework flags when linking a dynamic library

This fixes the GHC side of trac #10568. So `cabal install
--ghc-options="-framework GLUT" GLUT` creates a correctly linked
GLUT.dylib. We still need to explictly pass `--ghc-options="-framework
GLUT"` because the Cabal side #10568 is not fixed.

Update: the Cabal side of #10568 is fixed by
[Cabal#2747](https://github.com/haskell/cabal/pull/2747)

Test Plan: validate

Reviewers: austin, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D1115

GHC Trac Issues: #10568

3 years agoPretty: use replicate for spaces and multi_ch (#10735)
Thomas Miedema [Tue, 4 Aug 2015 16:32:09 +0000 (18:32 +0200)] 
Pretty: use replicate for spaces and multi_ch (#10735)

Similar changes were made to pretty in commit
7575ab16430c876eaa1451b02465b6b103b3a519.

3 years agoPretty: mimic pretty API more closely (#10735)
Thomas Miedema [Tue, 4 Aug 2015 14:20:08 +0000 (16:20 +0200)] 
Pretty: mimic pretty API more closely (#10735)

Refactoring only. Nothing much to see here.

3 years agoPretty: use BangPatterns instead of manual unboxing Ints (#10735)
Thomas Miedema [Mon, 3 Aug 2015 18:16:58 +0000 (20:16 +0200)] 
Pretty: use BangPatterns instead of manual unboxing Ints (#10735)

Follow same style as libraries/pretty, although some of it is pretty
archaic, and could be improved with BangPatterns:
   * `get w _ | w == 0 && False = undefined`
   * `mkNest k _ | k `seq` False = undefined`

3 years agoPretty: Args of NilAbove/TextBeside/Nest/Union are always RDocs (#10735)
Thomas Miedema [Mon, 3 Aug 2015 17:34:36 +0000 (19:34 +0200)] 
Pretty: Args of NilAbove/TextBeside/Nest/Union are always RDocs (#10735)

Just following libraries/pretty.

3 years agoPretty: kill code that has been dead since 1997 (#10735)
Thomas Miedema [Mon, 3 Aug 2015 17:23:21 +0000 (19:23 +0200)] 
Pretty: kill code that has been dead since 1997 (#10735)

3 years agoPretty: remove superfluous parenthesis (#10735)
Thomas Miedema [Mon, 3 Aug 2015 16:57:06 +0000 (18:57 +0200)] 
Pretty: remove superfluous parenthesis (#10735)

3 years agoPretty: improve error messages (#10735)
Thomas Miedema [Mon, 3 Aug 2015 16:27:07 +0000 (18:27 +0200)] 
Pretty: improve error messages (#10735)

Again, following libraries/pretty.

3 years agoPretty: rename variables to the ones used by libraries/pretty (#10735)
Thomas Miedema [Mon, 3 Aug 2015 16:05:28 +0000 (18:05 +0200)] 
Pretty: rename variables to the ones used by libraries/pretty (#10735)

3 years agoPretty: reformat using style from libraries/pretty (#10735)
Thomas Miedema [Mon, 3 Aug 2015 14:36:42 +0000 (16:36 +0200)] 
Pretty: reformat using style from libraries/pretty (#10735)

This commit copies the code structure (what goes where), whitespace layout
and comments from libraries/pretty/src/Text/PrettyPrint/HughesPJ.hs,
with the intention to be able to later more easily compare the two
files, and port bug fixes.

I'm sorry this messes up git blame history, but there's no other way.

3 years agoTest #9233 in perf/compiler/T9233
Richard Eisenberg [Mon, 3 Aug 2015 15:11:04 +0000 (11:11 -0400)] 
Test #9233 in perf/compiler/T9233

Summary:
Ideally, we could use Phab's numbers to set the perf
test correctly. But even if that's not possible, then I need help
writing my `all.T`. With the version you see here, I get the following

```
Traceback (most recent call last):
  File "/Users/rae/Documents/ghc-valid/testsuite/driver/testlib.py", line 801, in do_test
    result = func(*[name,way] + args)
TypeError: multimod_compile() takes exactly 4 arguments (6 given)
```

I don't know how to fix this.

Test Plan: validate

Reviewers: austin, bgamari, thomie

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1129

GHC Trac Issues: #9233

3 years agoFix #10713.
Richard Eisenberg [Mon, 3 Aug 2015 12:53:03 +0000 (08:53 -0400)] 
Fix #10713.

When doing the apartness/flattening thing, we really only need to
eliminate non-generative tycons, not *all* families. (Data families
are indeed generative!)

3 years agoRemoved deprecated syntax for GADT constuctors.
Ulya Trofimovich [Mon, 3 Aug 2015 15:45:56 +0000 (17:45 +0200)] 
Removed deprecated syntax for GADT constuctors.

Old syntax was deprecated 6 years ago in this commit
432b9c9322181a3644083e3c19b7e240d90659e7 by simonpj:"New syntax for
GADT-style record declarations, and associated refactoring" discussed
in Trac #3306.

This patch removes 2 reduce/reduce conflicts in parser. Conflicting
productions were:

```
    gadt_constr -> con_list '::' sigtype
    gadt_constr -> oqtycon '{' fielddecls '}' '::' sigtype
```

Recursive inlining of `con_list` and `oqtycon` helped reveal the
conflict:

```
    gadt_constr -> '(' CONSYM ')' '::' sigtype
    gadt_constr -> '(' CONSYM ')' '{' fielddecls '}' '::' sigtype
```

between two types of GADT constructors (second form stands for
deprecated syntax).

Test Plan: `make fasttest`, one breakage TEST="records-fail" (parse
error instead of typecheck error due to removal of deprecated syntax).
Updated test.

Reviewers: simonmar, bgamari, austin, simonpj

Reviewed By: simonpj

Subscribers: thomie, mpickering, trofi

Differential Revision: https://phabricator.haskell.org/D1118

GHC Trac Issues: #3306

3 years agoCmmParse: Don't force alignment in memcpy-ish operations
Ben Gamari [Mon, 3 Aug 2015 13:31:03 +0000 (15:31 +0200)] 
CmmParse: Don't force alignment in memcpy-ish operations

This was initially made in 681973c31c614185229bdae4f6b7ab4f6e64753d.
Here I wanted to enforce that the alignment passed to %memcpy was a
constant expression, as this is required by LLVM. However, this breaks
the knot-tying done in `loopDecls`, causing T8131 to hang.

Here I remove the `seq` and mark T8131 as `expect_broken` in the case
of the NCG, which doesn't force the alignment in this case.

Fixes #10664.

3 years agoTypos in comments [skip ci]
Gabor Greif [Mon, 3 Aug 2015 11:38:48 +0000 (13:38 +0200)] 
Typos in comments [skip ci]

3 years agoSupport wild cards in data/type family instances
Thomas Winant [Mon, 3 Aug 2015 12:57:40 +0000 (14:57 +0200)] 
Support wild cards in data/type family instances

Handle anonymous wild cards in type or data family instance
declarations like
unnamed type variables. For instance (pun intented):

    type family F (a :: *) (b :: *) :: *
    type instance F Int _ = Int

Is now the same as:

    type family F (a :: *) (b :: *) :: *
    type instance F Int x = Int

Note that unlike wild cards in partial type signatures, no errors (or
warnings
with -XPartialTypeSignatures) are generated for these wild cards, as
there is
nothing interesting to report to the user, i.e. the inferred kind.

Only anonymous wild cards are supported here, named and
extra-constraints wild
card are not.

Test Plan: pass new tests

Reviewers: goldfire, austin, simonpj, bgamari

Reviewed By: simonpj, bgamari

Subscribers: goldfire, thomie

Differential Revision: https://phabricator.haskell.org/D1092

GHC Trac Issues: #3699, #10586

3 years ago4 reduce/reduce parser conflicts resolved
Ulya Trofimovich [Mon, 3 Aug 2015 12:56:16 +0000 (14:56 +0200)] 
4 reduce/reduce parser conflicts resolved

As GHC documentation (section 7.4.4, Type operators) says:
> "There is now some potential ambiguity in import and export lists;
for example if you write import M( (+) ) do you mean the function (+)
or the type constructor (+)? The default is the former, but with
-XExplicitNamespaces (which is implied by -XExplicitTypeOperators) GHC
allows you to specify the latter by preceding it with the keyword type"

Turns out this ambiguity causes 4 of 6 reduce/reduce conflicts in GHC
parser.  All 4 conflicts arise from a single production:

    qcname
        :  qvar
        |  oqtycon

Recursive inlining of 'qvar' and 'oqtycon' helps reveal the faulty
productions:

    qcname
        :
    ...
        | '(' QVARSYM ')'
        | '(' VARSYM ')'
        | '(' '*'    ')'
        | '(' '-'    ')'

These productions can either be parsed as variable or type constructor,
but variable constuctor is always preferred. My patch removes ambiguity
while preserving the existing behaviour:

  - all unambigous productions are left as-is
  - ambigous productions for variable constuctors are left
  - ambigous productions for type constructors are removed (there's no
    way they could be triggered)

Updated comment.

Test Plan: Tested with 'make fasttest'

Reviewers: austin, simonpj, trofi, bgamari, simonmar

Reviewed By: trofi, bgamari, simonmar

Subscribers: thomie, mpickering

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D1111

3 years agoTest Trac #10134
Simon Peyton Jones [Mon, 3 Aug 2015 12:39:56 +0000 (13:39 +0100)] 
Test Trac #10134

3 years agoMinor improvement to user guide
Simon Peyton Jones [Mon, 3 Aug 2015 10:07:08 +0000 (11:07 +0100)] 
Minor improvement to user guide

Specify that the type variables for a class/instance decl scope
over the body even without a 'forall'.

Provoked by Trac #10722.

3 years agoTypos in comments
Simon Peyton Jones [Mon, 3 Aug 2015 10:04:22 +0000 (11:04 +0100)] 
Typos in comments

3 years agoFix incorrect stack pointer usage in StgRun() on x86_64
Ben Gamari [Mon, 3 Aug 2015 06:42:00 +0000 (08:42 +0200)] 
Fix incorrect stack pointer usage in StgRun() on x86_64

The STG_RETURN code from StgCRun.c is incorrect for x86_64 variants
where the ABI doesn't impose a mandatory red zone for the stack, like on
Windows or Xen/HaLVM. The current implementation restores the stack
pointer first, which effectively marks the area with the saved registers
as reusable. Later, the CPU registers are restored from this "free"
area.

This ordering happens to work by accident on operating systems that
strictly adhere to the System V ABI, because any interrupt/signal
delivery is guaranteed to leave the first 128 bytes past the stack
pointer untouched (red zone). On other systems this might result in
corrupted CPU registers if an interruption happens just after restoring
the stack pointer.

The red zone is usually only used by small leaf functions to avoid
updates to the stack pointer and exploiting it doesn't give us any
advantage in this case.

Reviewers: austin, rwbarton

Reviewed By: rwbarton

Subscribers: thomie, simonmar

Differential Revision: https://phabricator.haskell.org/D1120

GHC Trac Issues: #10155

3 years agoUpdate parallel submodule, and re-enable warnings
Simon Marlow [Mon, 3 Aug 2015 06:41:45 +0000 (08:41 +0200)] 
Update parallel submodule, and re-enable warnings

Test Plan: using remote validate

Reviewers: austin, hvr, simonpj, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1117

3 years agoSupport MO_U_QuotRem2 in LLVM backend
Michal Terepeta [Mon, 3 Aug 2015 06:41:13 +0000 (08:41 +0200)] 
Support MO_U_QuotRem2 in LLVM backend

This adds support for MO_U_QuotRem2 in LLVM backend.  Similarly to
MO_U_Mul2 we use the standard LLVM instructions (in this case 'udiv'
and 'urem') but do the computation on double the word width (e.g., for
64-bit we will do them on 128 registers).

Test Plan: validate

Reviewers: rwbarton, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1100

GHC Trac Issues: #9430

3 years agoMake BranchFlag a new kind
Gabor Greif [Sat, 1 Aug 2015 08:52:39 +0000 (10:52 +0200)] 
Make BranchFlag a new kind

this is resolving an old TODO comment

3 years agoTypo in comment
Gabor Greif [Sun, 2 Aug 2015 17:26:04 +0000 (19:26 +0200)] 
Typo in comment

3 years agoReplace (SourceText,FastString) with StringLiteral data type
Alan Zimmerman [Sun, 2 Aug 2015 08:26:59 +0000 (10:26 +0200)] 
Replace (SourceText,FastString) with StringLiteral data type

Summary:
Phab:D907 introduced SourceText for a number of data types, by replacing
FastString with (SourceText,FastString). Since this has an Outputable
instance, no warnings are generated when ppr is called on it, but
unexpected output is generated. See Phab:D1096 for an example of this.

Replace the (SourceText,FastString) tuples with a new data type,
```lang=hs
data StringLiteral = StringLiteral SourceText FastString
```

Update haddock submodule accordingly

Test Plan: ./validate

Reviewers: hvr, austin, rwbarton, trofi, bgamari

Reviewed By: trofi, bgamari

Subscribers: thomie, trofi, rwbarton, mpickering

Differential Revision: https://phabricator.haskell.org/D1101

GHC Trac Issues: #10692

3 years agoTypos in comments
Gabor Greif [Sat, 1 Aug 2015 15:31:42 +0000 (17:31 +0200)] 
Typos in comments