ghc.git
2 years agotestsuite: Fix syntax error in rts/all.T
Ben Gamari [Sat, 10 Dec 2016 02:55:34 +0000 (21:55 -0500)] 
testsuite: Fix syntax error in rts/all.T

Yet another reason why no change to too small to validate. Arg.

2 years agotestsuite: Mark prog003 as broken on Windows
Ben Gamari [Fri, 9 Dec 2016 21:57:33 +0000 (16:57 -0500)] 
testsuite: Mark prog003 as broken on Windows

Due to #11317.

2 years agoRename TH constructors for deriving strategies
Ryan Scott [Fri, 9 Dec 2016 20:44:15 +0000 (15:44 -0500)] 
Rename TH constructors for deriving strategies

After talking to Richard, he and I concluded that choosing the rather
common name `Newtype` to represent the corresponding deriving strategy
in Template Haskell was a poor choice of name. I've opted to rename it
to something less common (`NewtypeStrategy`) while we still have time. I
also renamed the corrsponding datatype in the GHC internals so as to
match it.

Reviewers: austin, goldfire, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie, mpickering

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

GHC Trac Issues: #10598

2 years agoEnsure each test inherits the TEST_HC_OPTS
Phil Ruffwind [Fri, 9 Dec 2016 20:43:02 +0000 (15:43 -0500)] 
Ensure each test inherits the TEST_HC_OPTS

This is so that global test flags that control the error formatting are
propagated correctly.  This patch is kind of related to: D2718

The stderr for API annotations is ignored entirely now per @alanz's
suggestion.

Test Plan: validate

Reviewers: thomie, alanz, austin, bgamari

Reviewed By: bgamari

Subscribers: alanz

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

2 years agotestsuite: make tests respond to SIGINT properly
Phil Ruffwind [Fri, 9 Dec 2016 20:42:36 +0000 (15:42 -0500)] 
testsuite: make tests respond to SIGINT properly

The `std*_buffer` need to be bytes to avoid breaking Python 3.

Also, using a blanket `except` in Python without specifying the
exception types will catch special exceptions such as
`KeyboardInterrupt`, which can prevent the program from being
interrupted properly.

Test Plan: validate

Reviewers: thomie, austin, bgamari

Reviewed By: bgamari

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

2 years agoNCG: Implement trivColorable for PowerPC 64-bit
Peter Trommler [Fri, 9 Dec 2016 20:42:11 +0000 (15:42 -0500)] 
NCG: Implement trivColorable for PowerPC 64-bit

Define constants for 64-bit PowerPC in graph coloring register
allocator.

Test Plan: ./validate

Reviewers: simonmar, austin, erikd, bgamari, hvr

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoFix LLVM TBAA metadata
Demi Obenour [Fri, 9 Dec 2016 20:41:59 +0000 (15:41 -0500)] 
Fix LLVM TBAA metadata

Accesses through a Cmm local are currently reported as having the
"other" type, which can only alias other "other" accesses.  However,
this assumption is incorrect, which can result in silent bad LLVM
codegen.

Fixes #9308.
Fixes #9504.

Test Plan: GHC CI

Reviewers: rwbarton, austin, bgamari

Reviewed By: bgamari

Subscribers: michalt, thomie

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

GHC Trac Issues: #9125, #9308, #9504

2 years agoMark T12903 as broken on OS X
Ben Gamari [Fri, 9 Dec 2016 21:38:10 +0000 (16:38 -0500)] 
Mark T12903 as broken on OS X

Something has recently broken it. See #12956.

2 years agoExport `warningGroups' and `warningHierarchies'
Sylvain Henry [Fri, 9 Dec 2016 15:28:45 +0000 (10:28 -0500)] 
Export `warningGroups' and `warningHierarchies'

Reviewers: austin, mpickering, bgamari

Reviewed By: mpickering, bgamari

Subscribers: thomie

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

2 years agoDisable colors unless printing to stderr
Phil Ruffwind [Fri, 9 Dec 2016 15:28:25 +0000 (10:28 -0500)] 
Disable colors unless printing to stderr

Only print colors when mkLocMessageAnn is called directly from
defaultLogAction.  This prevents ANSI error codes from cluttering up the
dump files.

Test Plan: validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #12927

2 years agoScrutinee Constant Folding
Sylvain Henry [Fri, 9 Dec 2016 15:26:34 +0000 (10:26 -0500)] 
Scrutinee Constant Folding

This patch introduces new rules to perform constant folding through
case-expressions.

E.g.,
```
case t -# 10# of _ {  ===> case t of _ {
         5#      -> e1              15#     -> e1
         8#      -> e2              18#     -> e2
         DEFAULT -> e               DEFAULT -> e
```

The initial motivation is that it allows "Merge Nested Cases"
optimization to kick in and to further simplify the code
(see Trac #12877).

Currently we recognize the following operations for Word# and Int#: Add,
Sub, Xor, Not and Negate (for Int# only).

Test Plan: validate

Reviewers: simonpj, austin, bgamari

Reviewed By: simonpj, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12877

2 years agoBump haddock submodule
Ben Gamari [Fri, 9 Dec 2016 15:26:07 +0000 (10:26 -0500)] 
Bump haddock submodule

Fixes Windows build.

2 years agoDisambiguate reified closed type family kinds in TH
Ryan Scott [Fri, 9 Dec 2016 13:50:54 +0000 (08:50 -0500)] 
Disambiguate reified closed type family kinds in TH

Summary:
A continuation of #8953. This fixes an oversight in which the
left-hand sides of closed type families, when reified in Template Haskell,
would not be given kind annotations, even when they are necessary for
disambiguation purposes in the presence of `PolyKinds`.

Fixes #8953 and #12646.

Test Plan: ./validate

Reviewers: hvr, bgamari, austin, goldfire

Reviewed By: goldfire

Subscribers: thomie

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

GHC Trac Issues: #8953, #12646

2 years agorts/PosixSource.h: Define __USE_MINGW_ANSI_STDIO on Windows
Ben Gamari [Fri, 9 Dec 2016 04:05:21 +0000 (23:05 -0500)] 
rts/PosixSource.h: Define __USE_MINGW_ANSI_STDIO on Windows

This was removed in 8dc72f3c33b0e724ddb690c9d494969980c10afd which cleaned up
PosixSource.h. Strangely, this only started breaking for me now.

Test Plan: Validate on Windows

Reviewers: simonmar, erikd, austin, Phyx

Reviewed By: Phyx

Subscribers: thomie

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

GHC Trac Issues: #12951

2 years agoBlockId: remove BlockMap and BlockSet synonyms
Michal Terepeta [Thu, 8 Dec 2016 21:34:10 +0000 (16:34 -0500)] 
BlockId: remove BlockMap and BlockSet synonyms

This continues removal of `BlockId` module in favor of Hoopl's `Label`.
Most of the changes here are mechanical, apart from the orphan
`Outputable` instances for `LabelMap` and `LabelSet`.  For now I've
moved them to `cmm/Hoopl`, since it's already trying to manage all
imports from Hoopl (to avoid any collisions).

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: validate

Reviewers: bgamari, austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

2 years agonativeGen: Fix string merging on Windows
Ben Gamari [Thu, 8 Dec 2016 21:33:42 +0000 (16:33 -0500)] 
nativeGen: Fix string merging on Windows

D1290 places string constants in the `.rodata.str` section with `aMS`
section flags so that the linker can merge them. However, it seems that
ld doesn't understand these flags. It appears that `gcc
-fmerge-constants` uses the `dr` flags on Windows. Make GHC do the same.

Test Plan: Validate on Windows

Reviewers: xnyhps, austin, Phyx

Reviewed By: Phyx

Subscribers: thomie, trommler

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

GHC Trac Issues: #9577

2 years agoUpdate Windows GCC driver.
Tamar Christina [Thu, 8 Dec 2016 21:33:11 +0000 (16:33 -0500)] 
Update Windows GCC driver.

Test Plan: None really, as none of our tests cover this usage. Probably
should add one..

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12871

2 years agotestsuite: Add test for #10249
Ben Gamari [Thu, 8 Dec 2016 21:32:55 +0000 (16:32 -0500)] 
testsuite: Add test for #10249

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #10249

2 years agorts/linker: Fix LoadArchive build on Windows
Ben Gamari [Thu, 8 Dec 2016 21:32:30 +0000 (16:32 -0500)] 
rts/linker: Fix LoadArchive build on Windows

Test Plan: Validate on Windows.

Reviewers: austin, erikd, simonmar

Subscribers: thomie

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

GHC Trac Issues: #12388

2 years agoarclint: Lint cabal files
Ben Gamari [Thu, 8 Dec 2016 21:31:49 +0000 (16:31 -0500)] 
arclint: Lint cabal files

Test Plan: Try linting a cabal file with trailing whitespace

Reviewers: austin

Subscribers: thomie, alanz

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

2 years agohschooks.c: Fix long line
Ben Gamari [Thu, 8 Dec 2016 20:55:15 +0000 (15:55 -0500)] 
hschooks.c: Fix long line

2 years agoReduce qualification in error messages from signature matching.
Edward Z. Yang [Thu, 8 Dec 2016 07:07:19 +0000 (23:07 -0800)] 
Reduce qualification in error messages from signature matching.

Summary:
Previously, we always qualified names, even if they were defined
in the modules we were matching.  Adding the exports of the implementing
module into the RdrEnv greatly reduces the amount of qualification
(although we still can't qualify things that the signature *imported*.)

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

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

2 years agoSetup tcg_imports earlier during signature matching, so orphans are visible.
Edward Z. Yang [Thu, 8 Dec 2016 06:57:09 +0000 (22:57 -0800)] 
Setup tcg_imports earlier during signature matching, so orphans are visible.

Summary:
Previously, we updated tcg_imports after doing all of the
actual matching, which was fine for outputting the interface,
but not good enough for checking if all type classes were
implemented; we weren't treating orphans as visible (when
they needed to be.)

Fixes #12945.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12945

2 years agoIgnore stderr of all printer tests
Alan Zimmerman [Thu, 8 Dec 2016 08:50:37 +0000 (10:50 +0200)] 
Ignore stderr of all printer tests

2 years agoRemove stray commented out line in all.T
Alan Zimmerman [Wed, 7 Dec 2016 21:36:23 +0000 (23:36 +0200)] 
Remove stray commented out line in all.T

2 years agoFix pretty printer test to nog generate stdout
Alan Zimmerman [Wed, 7 Dec 2016 21:24:22 +0000 (23:24 +0200)] 
Fix pretty printer test to nog generate stdout

It was doing a dump to stdout, which is not repeatable across platforms.

2 years agoAdd HsSyn prettyprinter tests
Alan Zimmerman [Tue, 8 Nov 2016 19:37:48 +0000 (21:37 +0200)] 
Add HsSyn prettyprinter tests

Summary:
Add prettyprinter tests, which take a file, parse it, pretty print it,
re-parse the pretty printed version and then compare the original and
new ASTs (ignoring locations)

Updates haddock submodule to match the AST changes.

There are three issues outstanding

1. Extra parens around a context are not reproduced. This will require an
   AST change and will be done in a separate patch.

2. Currently if an `HsTickPragma` is found, this is not pretty-printed,
   to prevent noise in the output.

   I am not sure what the desired behaviour in this case is, so have left
   it as before. Test Ppr047 is marked as expected fail for this.

3. Apart from in a context, the ParsedSource AST keeps all the parens from
   the original source.  Something is happening in the renamer to remove the
   parens around visible type application, causing T12530 to fail, as the
   dumped splice decl is after the renamer.

   This needs to be fixed by keeping the parens, but I do not know where they
   are being removed.  I have amended the test to pass, by removing the parens
   in the expected output.

Test Plan: ./validate

Reviewers: goldfire, mpickering, simonpj, bgamari, austin

Reviewed By: simonpj, bgamari

Subscribers: simonpj, goldfire, thomie, mpickering

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

GHC Trac Issues: #3384

2 years agoDon't barf() on failures in loadArchive()
Ben Gamari [Wed, 7 Dec 2016 13:51:02 +0000 (08:51 -0500)] 
Don't barf() on failures in loadArchive()

This patch replaces calls to barf() in loadArchive() with proper
error handling.

Test Plan: GHC CI

Reviewers: rwbarton, erikd, hvr, austin, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie

Tags: #ghc

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

GHC Trac Issues: #12388

2 years agorts: Use pthread itimer implementation on Darwin
Ben Gamari [Wed, 7 Dec 2016 13:50:52 +0000 (08:50 -0500)] 
rts: Use pthread itimer implementation on Darwin

We want to avoid using SIGALRM whenever possible since we will interrupt
long-running system calls. See #10840.

Test Plan: Validate on Darwin

Reviewers: austin, erikd, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

GHC Trac Issues: #10840

2 years agoFix crashes in hash table scanning with THREADED_RTS
Simon Marlow [Wed, 7 Dec 2016 13:20:03 +0000 (13:20 +0000)] 
Fix crashes in hash table scanning with THREADED_RTS

See comments.

2 years agoFix the test with -O
Simon Marlow [Wed, 7 Dec 2016 13:19:01 +0000 (13:19 +0000)] 
Fix the test with -O

Static string optimisation means we get a ForeignPtr with an IORef
inside it, leading to a different error.

2 years agoIgnore output for compact_gc: sizes change when profiling
Simon Marlow [Wed, 7 Dec 2016 13:18:39 +0000 (13:18 +0000)] 
Ignore output for compact_gc: sizes change when profiling

2 years agoOverhaul of Compact Regions (#12455)
Simon Marlow [Fri, 29 Jul 2016 13:11:03 +0000 (14:11 +0100)] 
Overhaul of Compact Regions (#12455)

Summary:
This commit makes various improvements and addresses some issues with
Compact Regions (aka Compact Normal Forms).

This was the most important thing I wanted to fix.  Compaction
previously prevented GC from running until it was complete, which
would be a problem in a multicore setting.  Now, we compact using a
hand-written Cmm routine that can be interrupted at any point.  When a
GC is triggered during a sharing-enabled compaction, the GC has to
traverse and update the hash table, so this hash table is now stored
in the StgCompactNFData object.

Previously, compaction consisted of a deepseq using the NFData class,
followed by a traversal in C code to copy the data.  This is now done
in a single pass with hand-written Cmm (see rts/Compact.cmm). We no
longer use the NFData instances, instead the Cmm routine evaluates
components directly as it compacts.

The new compaction is about 50% faster than the old one with no
sharing, and a little faster on average with sharing (the cost of the
hash table dominates when we're doing sharing).

Static objects that don't (transitively) refer to any CAFs don't need
to be copied into the compact region.  In particular this means we
often avoid copying Char values and small Int values, because these
are static closures in the runtime.

Each Compact# object can support a single compactAdd# operation at any
given time, so the Data.Compact library now enforces mutual exclusion
using an MVar stored in the Compact object.

We now get exceptions rather than killing everything with a barf()
when we encounter an object that cannot be compacted (a function, or a
mutable object).  We now also detect pinned objects, which can't be
compacted either.

The Data.Compact API has been refactored and cleaned up.  A new
compactSize operation returns the size (in bytes) of the compact
object.

Most of the documentation is in the Haddock docs for the compact
library, which I've expanded and improved here.

Various comments in the code have been improved, especially the main
Note [Compact Normal Forms] in rts/sm/CNF.c.

I've added a few tests, and expanded a few of the tests that were
there.  We now also run the tests with GHCi, and in a new test way
that enables sanity checking (+RTS -DS).

There's a benchmark in libraries/compact/tests/compact_bench.hs for
measuring compaction speed and comparing sharing vs. no sharing.

The field totalDataW in StgCompactNFData was unnecessary.

Test Plan:
* new unit tests
* validate
* tested manually that we can compact Data.Aeson data

Reviewers: gcampax, bgamari, ezyang, austin, niteria, hvr, erikd

Subscribers: thomie, simonpj

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

GHC Trac Issues: #12455

2 years agoReally mark T9577 as broken
Ben Gamari [Wed, 7 Dec 2016 03:13:20 +0000 (22:13 -0500)] 
Really mark T9577 as broken

I failed at the last attempt.

2 years agoMark T9577 as broken on Darwin due to #12937
Ben Gamari [Wed, 7 Dec 2016 03:10:47 +0000 (22:10 -0500)] 
Mark T9577 as broken on Darwin due to #12937

2 years agoTest Trac #12919
Vladislav Zavialov [Tue, 6 Dec 2016 23:48:27 +0000 (18:48 -0500)] 
Test Trac #12919

Test Plan: make test TEST=T12919

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #12919

2 years agoReduce the size of string literals in binaries.
Thijs Alkemade [Tue, 6 Dec 2016 22:12:17 +0000 (17:12 -0500)] 
Reduce the size of string literals in binaries.

Removed the alignment for strings and mark then as cstring sections in
the generated asm so the linker can merge duplicate sections.

Reviewers: rwbarton, trofi, austin, trommler, simonmar, hvr, bgamari

Reviewed By: hvr, bgamari

Subscribers: simonpj, hvr, thomie

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

GHC Trac Issues: #9577

2 years agoRevert "Mark rn017 and T7672 as expect_broken(#12930) with -DDEBUG"
Matthew Pickering [Tue, 6 Dec 2016 22:14:41 +0000 (22:14 +0000)] 
Revert "Mark rn017 and T7672 as expect_broken(#12930) with -DDEBUG"

This reverts commit 19ae142364058e258122f4bb68ef4b9aa6e41890.

2 years agoFix unsafe usage of `is_iloc` selector in Ord instance for ImportSpec
Matthew Pickering [Tue, 6 Dec 2016 18:09:55 +0000 (18:09 +0000)] 
Fix unsafe usage of `is_iloc` selector in Ord instance for ImportSpec

Summary:
This fixes tests rn017, T7672 and closed #12930.

Both these tests were self referential module imports through hs-boot
files. As a result, I am quite suspicious of what the ImpAll constructor is
used for. I had a brief hunt around but couldn't immediately see whether
it was necessary.

Reviewers: austin, bgamari

Subscribers: simonpj, thomie, nomeata

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

GHC Trac Issues: #12930

2 years agoMark rn017 and T7672 as expect_broken(#12930) with -DDEBUG
Simon Marlow [Tue, 6 Dec 2016 15:43:21 +0000 (15:43 +0000)] 
Mark rn017 and T7672 as expect_broken(#12930) with -DDEBUG

2 years agoOverhaul GC stats
Simon Marlow [Fri, 25 Nov 2016 16:45:43 +0000 (16:45 +0000)] 
Overhaul GC stats

Summary:
Visible API changes:

* The C struct `GCDetails` gives the stats about a single GC.  This is
  passed to the `gcDone()` callback if one is set via the
  RtsConfig. (previously we just passed a collection of values, so this
  is more extensible, at the expense of breaking the existing API)

* `RTSStats` gives cumulative stats since the start of the program,
  and includes the `GCDetails` for the most recent GC.  This struct
  can be obtained via `getRTSStats()` (the old `getGCStats()` has been
  removed, and `getGCStatsEnabled()` has been renamed to
  `getRTSStatsEnabled()`)

Improvements:

* The per-GC stats and cumulative stats are now cleanly separated.

* Inside the RTS we have a top-level `RTSStats` struct to keep all our
  stats in, previously this was just a collection of strangely-named
  variables.  This struct is mostly just copied in `getRTSStats()`, so
  the implementation of that function is a lot shorter.

* Types are more consistent.  We use a uint64_t byte count for all
  memory values, and Time for all time values.

* Names are more consistent.  We use a suffix `_bytes` for all byte
  counts and `_ns` for all time values.

* We now collect information about the amount of memory in large
  objects and compact objects in `GCDetails`. (the latter was the reason
  I started doing this patch but it seems to have ballooned a bit!)

* I fixed a bug in the calculation of the elapsed MUT time, and added
  an ASSERT to stop the calculations going wrong in the future.

For now I kept the Haskell API in `GHC.Stats` the same, by
impedence-matching with the new API.  We could either break that API
and make it match the C API more closely, or we could add a new API
and deprecate the old one.  Opinions welcome.

This stuff is very easy to get wrong, and it's hard to test.  Reviews
welcome!

Test Plan:
manual testing
validate

Reviewers: bgamari, niteria, austin, ezyang, hvr, erikd, rwbarton, Phyx

Subscribers: thomie

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

2 years agoGive concrete example for #12784 in 8.0.2 release notes
Ryan Scott [Tue, 6 Dec 2016 14:03:41 +0000 (09:03 -0500)] 
Give concrete example for #12784 in 8.0.2 release notes

Summary:
We mentioned that there were "some programs" that failed to typecheck
due to #12784, but given how surprisingly common this issue has been, it'd
be prudent to at least give one example of the bug in the release notes.

Reviewers: simonpj, bgamari, austin, rwbarton

Reviewed By: rwbarton

Subscribers: thomie

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

GHC Trac Issues: #12784

2 years agoFix x86 Windows build and testsuite
Tamar Christina [Mon, 5 Dec 2016 21:27:23 +0000 (21:27 +0000)] 
Fix x86 Windows build and testsuite

Summary:
Fix issues preventing x86 GHC to build on Windows and
fix segfault in the testsuite.

Test Plan: ./validate

Reviewers: austin, erikd, simonmar, bgamari

Reviewed By: bgamari

Subscribers: #ghc_windows_task_force, thomie

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

2 years agoColor output is wreaking havoc on test results
Tamar Christina [Mon, 5 Dec 2016 20:51:11 +0000 (20:51 +0000)] 
Color output is wreaking havoc on test results

Summary:
D2716 introduced colors into the output of GHC.
These color ourputs are done using escape characters output
to the terminal.

These however are wreaking havoc on the testsuite output as now
no stderr with a warning or error will match anymore.

Instead of accepting the new codes as expected values instead I
turn them off. So the testsuite is consistent on platforms/terminals we
don't support colors on.

Test Plan:
any test that outputs colors. e.g.

make test TEST=T9576

Reviewers: austin, Rufflewind, bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #8809

2 years agoTest Trac #12925
Simon Peyton Jones [Mon, 5 Dec 2016 17:18:19 +0000 (17:18 +0000)] 
Test Trac #12925

2 years agoUse isFamFreeTyCon now we have it
Simon Peyton Jones [Mon, 5 Dec 2016 13:50:48 +0000 (13:50 +0000)] 
Use isFamFreeTyCon now we have it

Refactoring only

2 years agoFix used-variable calculation (Trac #12548)
Simon Peyton Jones [Mon, 5 Dec 2016 13:17:35 +0000 (13:17 +0000)] 
Fix used-variable calculation (Trac #12548)

The used-variable calculation for pattern synonyms is a little
tricky, for reasons described in RnBinds
Note [Pattern synonym builders don't yield dependencies]

It was right semantically, but the "unused-variable warning" was
wrong, which led to Trac #12548.

2 years agoFix an asymptotic bug in the occurrence analyser
Simon Peyton Jones [Fri, 2 Dec 2016 13:59:11 +0000 (13:59 +0000)] 
Fix an asymptotic bug in the occurrence analyser

Trac #12425 and #12234 showed up a major and long-standing
bug in the occurrence analyser, whereby it could generate
explonentially large program!

There's a lot of commentary on #12425; and it's all described
in Note [Loop breakers, node scoring, and stability]

I did quite a lot of refactoring to make the code comprehensibe
again (its structure had bit-rotted rather), so the patch
looks bigger than it really is.

Hurrah!

I did a nofib run to check that I hadn't inadertently ruined
anything:

--------------------------------------------------------------------------------
        Program           Size    Allocs   Runtime   Elapsed  TotalMem
--------------------------------------------------------------------------------
          fluid          -0.3%     -1.5%      0.01      0.01     +0.0%
         parser          -0.9%     +0.6%      0.04      0.04     +0.0%
         prolog          -0.1%     +1.2%      0.00      0.00     +0.0%

--------------------------------------------------------------------------------
            Min          -0.9%     -1.5%     -8.6%     -8.7%     +0.0%
            Max          +0.1%     +1.2%     +7.7%     +7.8%     +2.4%
 Geometric Mean          -0.2%     -0.0%     -0.2%     -0.3%     +0.0%

I checked what happened in 'prolog'.  It seems that we have a
recursive data structure something like this

   f :: [blah]
   f x = build (\cn.  ...g...  )

   g :: [blah2]
   g y = ....(foldr k z (f y))....

If we inline 'f' into 'g' we get better fusion than the other
way round, but we don't have any way to spot that at the moment.
(I wonder if we could do worker/wrapper for functions returning
a 'build'?)  It was happening before by a fluke.

Anyway I decided to accept this; it's relatively rare I think.

2 years agocore-spec: Fix S_MatchData
Joachim Breitner [Fri, 2 Dec 2016 23:13:03 +0000 (18:13 -0500)] 
core-spec: Fix S_MatchData

Previously, it would substitute e for n without an e being around.
I clarify that by naming the scrutinee e.

2 years ago8.2.1-notes.rst: tweak binutils version
Sergei Trofimovich [Fri, 2 Dec 2016 22:14:23 +0000 (22:14 +0000)] 
8.2.1-notes.rst: tweak binutils version

It's 2.27 (-2), not 1.27.2. Dropped stray '\r'.

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
2 years agoMaintain in-scope set in deeply_instantiate (fixes #12549).
John Leo [Fri, 2 Dec 2016 19:33:12 +0000 (14:33 -0500)] 
Maintain in-scope set in deeply_instantiate (fixes #12549).

Maintain in-scope set in deeply_instantiate (Fixes T12549).

lint fixes

Test Plan: validate

Reviewers: simonpj, austin, goldfire, bgamari

Reviewed By: simonpj, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12549

2 years agoInstall toplevel handler inside fork.
Alexander Vershilov [Fri, 2 Dec 2016 19:32:48 +0000 (14:32 -0500)] 
Install toplevel handler inside fork.

When rts is forked it doesn't update toplevel handler, so UserInterrupt
exception is sent to Thread1 that doesn't exist in forked process.

We install toplevel handler when fork so signal will be delivered to the
new main thread.

Fixes #12903

Reviewers: simonmar, austin, erikd, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #12903

2 years agofdReady: use poll() instead of select()
Simon Marlow [Fri, 2 Dec 2016 19:32:24 +0000 (14:32 -0500)] 
fdReady: use poll() instead of select()

select() is limited to 1024 file descriptors.  This actually blew up
in a very hard-to-debug way in our production system when using the
hinotify package.

Test Plan:
libraries/tests pass, paricularly hGetBuf001 which exercises this
code.

Reviewers: niteria, erikd, austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #12912

2 years agoNote Trac #12141 in mk/build.mk.sample
Ryan Scott [Fri, 2 Dec 2016 19:40:23 +0000 (14:40 -0500)] 
Note Trac #12141 in mk/build.mk.sample

Mention that many GHC testsuite tests will fail with a compiler built with
the quickest profile. See Trac #12141.

2 years agoTravis: Add dependency on python3
Ben Gamari [Thu, 1 Dec 2016 23:37:19 +0000 (18:37 -0500)] 
Travis: Add dependency on python3

The testsuite now requires python >=3.0. See #12909.

2 years agoFix naming of the native latin1 encodings
Kai Ruemmler [Thu, 1 Dec 2016 22:59:50 +0000 (17:59 -0500)] 
Fix naming of the native latin1 encodings

textEncodingName is notjust a string, it must be a valid input for
mkTextEncoding, as stated in libraries/base/GHC/IO/Encoding/Types.hs.

Test Plan:
A working latin1 locale is required on the system.  Reason: ghc's
initial locale encoding defaults to ASCII, if either an unknown locale
or unknown charset is used.  For the bug to show up, ghc must start up
using the latin1 encoding.

From main directory in ghc do:
$ ./configure && make clean && make boot && make inplace/bin/ghc-stage2
$ LC_CTYPE="de_DE.ISO-8859-1" ./inplace/bin/ghc-stage2

Before the patch, the last line leads to the exception thrown:
ghc-stage2: mkTextEncoding: does not exist (unknown
encoding:ISO8859-1(checked)//TRANSLIT)

After the patch, ghc-stage2 prints a short usage summary as expected.
Moreover,
$ make test TEST=encoding005
continues to  pass after the patch.

Reviewers: austin, hvr, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: mpickering, rwbarton, thomie

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

2 years agotestsuite/conc059: Don't attempt to use stdcall where it isn't supported
Ben Gamari [Thu, 1 Dec 2016 21:58:34 +0000 (16:58 -0500)] 
testsuite/conc059: Don't attempt to use stdcall where it isn't supported

Test Plan: Validate on 64-bit Windows

Reviewers: geekosaur, austin, erikd, Phyx

Reviewed By: Phyx

Subscribers: thomie

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

2 years agotestsuite: Actually update haddock.compiler allocations
Ben Gamari [Thu, 1 Dec 2016 20:04:44 +0000 (15:04 -0500)] 
testsuite: Actually update haddock.compiler allocations

The previous attempt updated the comment but not the value. Silly me.

2 years agoTypos in comments
Gabor Greif [Thu, 1 Dec 2016 17:46:35 +0000 (18:46 +0100)] 
Typos in comments

2 years agorts: Ensure we always give MADV_DONTNEED a chance in osDecommitMemory
Ben Gamari [Thu, 1 Dec 2016 17:55:23 +0000 (12:55 -0500)] 
rts: Ensure we always give MADV_DONTNEED a chance in osDecommitMemory

As described in #12865, newer Linux kernels support both MADV_FREE and
MADV_DONTNEED. Previously a runtime would fail to try MADV_DONTNEED if
MADV_FREE failed (e.g. since the kernel which the image is running on
doesn't support the latter). Now we try MADV_DONTNEED if MADV_FREE
failed to ensure that binaries compiled on a kernel supporting MADV_FREE
don't fail on decommit.

Test Plan: Validate

Reviewers: austin, erikd, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

GHC Trac Issues: #12865

2 years agotestsuite: Remove Unicode literals from driver
Ben Gamari [Thu, 1 Dec 2016 17:53:31 +0000 (12:53 -0500)] 
testsuite: Remove Unicode literals from driver

They are not supported by Python 3.0, 3.1, and 3.2 (but are supported by
>= 3.3; silliness!)

Test Plan: Validate on python 3.2

Reviewers: austin

Subscribers: simonpj, thomie

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

GHC Trac Issues: #12909, #9184

2 years agorts: Fix type of bool literal
Ben Gamari [Thu, 1 Dec 2016 17:25:00 +0000 (12:25 -0500)] 
rts: Fix type of bool literal

Test Plan: Build `p` way

Reviewers: austin, erikd, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

2 years agoMake note of #12907 in 8.0.2 release notes
Ryan Scott [Thu, 1 Dec 2016 17:24:48 +0000 (12:24 -0500)] 
Make note of #12907 in 8.0.2 release notes

Test Plan: Read it, commit it, merge it, ship it

Reviewers: goldfire, bgamari, austin, hvr, simonpj

Reviewed By: simonpj

Subscribers: thomie

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

GHC Trac Issues: #12907

2 years agoLevity polymorphic expressions mustn't be floated-out in let-bindings.
Sylvain Henry [Thu, 1 Dec 2016 17:24:34 +0000 (12:24 -0500)] 
Levity polymorphic expressions mustn't be floated-out in let-bindings.

Reviewers: simonpj, austin, bgamari

Reviewed By: simonpj, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12901

2 years agoEnsure flags destined for ld are properly passed
Ben Gamari [Thu, 1 Dec 2016 16:28:47 +0000 (11:28 -0500)] 
Ensure flags destined for ld are properly passed

GHC uses gcc, not ld, for linking. Consequently all flags to be
interpreted by ld need to be prefixed by -optl,-Wl on the GHC command
line.

Test Plan: Validate on OpenBSD

Reviewers: austin, rwbarton

Reviewed By: rwbarton

Subscribers: thomie

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

2 years agoFix typo in functional dependencies doc
Chris Martin [Thu, 1 Dec 2016 02:41:49 +0000 (21:41 -0500)] 
Fix typo in functional dependencies doc

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agotestsuite: Add another testcase for #11821
Ben Gamari [Thu, 1 Dec 2016 00:09:11 +0000 (19:09 -0500)] 
testsuite: Add another testcase for #11821

2 years agoRevert "Fix windows validate."
Tamar Christina [Wed, 30 Nov 2016 19:51:43 +0000 (19:51 +0000)] 
Revert "Fix windows validate."

This reverts commit ef37580d16a23d1601795548b13b88b9f5373010.

Now that commit e2330b6dde805a5507898c3c4ddf38599df969da has been reverted
this change is now needed.

2 years agoRevert "Make globals use sharedCAF"
Ben Gamari [Wed, 30 Nov 2016 15:54:45 +0000 (10:54 -0500)] 
Revert "Make globals use sharedCAF"

This reverts commit 6f7ed1e51bf360621a3c2a447045ab3012f68575 due to breakage of
the build on Windows.

2 years agoRename RuntimeRepPolymorphism to LevityPolymorphism
Simon Peyton Jones [Wed, 30 Nov 2016 09:45:35 +0000 (09:45 +0000)] 
Rename RuntimeRepPolymorphism to LevityPolymorphism

Richard and I decided to make this change in our paper, and I'm
just propagating it to GHC

2 years agoTweaks to grammar and such.
Gabor Greif [Wed, 30 Nov 2016 09:21:04 +0000 (10:21 +0100)] 
Tweaks to grammar and such.

2 years agoFix windows validate.
Tamar Christina [Wed, 30 Nov 2016 08:55:42 +0000 (08:55 +0000)] 
Fix windows validate.

2 years agoUpdate Mingw-w64 bindist for Windows
Tamar Christina [Tue, 29 Nov 2016 21:58:53 +0000 (16:58 -0500)] 
Update Mingw-w64 bindist for Windows

This updates the binary dists for windows to GCC 6.2.0 and
binutils 2.27.2 which has fixes required for LLVM.

Test Plan: ./validate

Reviewers: simonmar, erikd, austin, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12871, #8974

2 years agotestsuite: Use python3 by default
Ben Gamari [Tue, 29 Nov 2016 21:58:24 +0000 (16:58 -0500)] 
testsuite: Use python3 by default

Summary:
It turns out that Phyx's fix for #12554 (D2684) still fails with mingw-w64
python 2.7. However, Python 3 (both msys2 and mingw-w64) work fine. Given that
supporting Python 2 has already become rather tiresome (as @thomie warned it
would), let's just move to python3 by default.

Test Plan: Validate

Reviewers: austin, Phyx

Reviewed By: Phyx

Subscribers: Phyx, thomie

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

GHC Trac Issues: #12554

2 years agoUpdate test output for Windows
Tamar Christina [Tue, 29 Nov 2016 21:58:04 +0000 (16:58 -0500)] 
Update test output for Windows

Following D2684 these two tests need to be updated:

 * T7037: timeout.exe now waits until all processes are finished.
          this makes T7037 reliable. So enabled.

 * T876: Unknown reason, allocations are much lower than before.

Test Plan: ./validate

Reviewers: austin, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12725, #12004

2 years agoFix testsuite threading, timeout, encoding and performance issues on Windows
Tamar Christina [Tue, 29 Nov 2016 21:56:08 +0000 (16:56 -0500)] 
Fix testsuite threading, timeout, encoding and performance issues on Windows

In a land far far away, a project called Cygwin was born.
Cygwin used newlib as it's standard C library implementation.

But Cygwin wanted to emulate POSIX systems as closely as possible.
So it implemented `execv` using the Windows function `spawnve`.

Specifically

```
spawnve (_P_OVERLAY, path, argv, cur_environ ())
```

`_P_OVERLAY` is crucial, as it makes the function behave *sort of*
like execv on linux. the child process replaces the original process.

With one major difference because of the difference in process models
on Windows: the original process signals the caller that it's done.

this is why the file is still locked. because it's still running,
control was returned because the parent process was destroyed,
but the child is still running.

I think it's just pure dumb luck, that the older runtimes are slow
enough to give the process time to terminate before we tried deleting
the file.  Which explains why you do have sporadic failures even on
older runtimes like 2.5.0, of a test or two (like T7307).

So this patch fixes a couple of things. I leverage the existing
`timeout.exe` to implement a workaround for this issue.

a) The old timeout used to start the process then assign it to the job.
   This is slightly faulty since child processes are only assigned to a
   job is their parent were assigned at the time they started. So this
   was a race condition. I now create the process suspended, assign it
   to the job and then resume it. Which means all child processes are
   not running under the same job.

b) First things, Is to prevent dangling child processes. I mark the job
   with `JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE` so when the last process in
   the job is done, it insures all processes under the job are killed.

c) Secondly, I change the way we wait for results. Instead of waiting
   for the parent process to terminate, I wait for the job itself to
   terminate.

   There's a slight subtlety there, we can't wait on the job itself.
   Instead we have to create an I/O Completion port and wait for signals
   on it.  See
   https://blogs.msdn.microsoft.com/oldnewthing/20130405-00/?p=4743

This fixes the issues on all runtimes for me and makes T7307 pass
consistenly.

The threading was also simplified by hiding all the locking in a single
semaphore and a completion class. Futhermore some additional error
reporting was added.

For encoding the testsuite now no longer passes a file handle to the
subprocess since on windows, sh.exe seems to acquire a lock on the file
that is not released in a timely fashion.

I suspect this because cygwin seems to emulate console handles by
creating file handles and using those for std handles. So when we give
it an existing file handle it just locks the file. I what's happening is
that it's not releasing the handle until all shared cygwin processes are
dead. Which explains why it worked in single threaded mode.

So now instead we pass a pipe and do not interpret the resulting data.

Any bytes written to stdin or read out of stdout/stderr are done so in
binary mode and we do not interpret the data. The reason for this is
that we have encoding tests in GHC which pass invalid utf-8. If we try
to handle the data as text then python will throw an exception instead
of a test comparison failing.

Also I have fixed the ability to override `PYTHON` when calling `make
tests`. This now works the same as with `.\validate`.

Finally, after cleaning up the locks I was able to make the abort
behavior work correctly as I believe it was intended: when you press
Ctrl+C and send an interrupt signal, the testsuite finishes the active
tests and then gracefully exits showing you a report of the progress it
did make. So using Ctrl+C will not just *die* as it did before.

These changes lift the restriction on which python version you use
(msys/mingw) or which runtime or python 3 or python 2.  All combinations
should now be supported.

Test Plan:
PATH=/usr/local/bin:/mingw64/bin:$APPDATA/cabal/bin:$PATH &&
PYTHON=/usr/bin/python THREADS=9 make test
THREADS=9 make test
PATH=/usr/local/bin:/mingw64/bin:$APPDATA/cabal/bin:$PATH &&
PYTHON=/usr/bin/python ./validate --quiet --testsuite-only

Reviewers: erikd, RyanGlScott, bgamari, austin

Subscribers: jrtc27, mpickering, thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12725, #12554, #12661, #12004

2 years agoHoopl/Dataflow: use block-oriented interface
Michal Terepeta [Tue, 29 Nov 2016 22:54:12 +0000 (17:54 -0500)] 
Hoopl/Dataflow: use block-oriented interface

This introduces the new interface for dataflow analysis, where transfer
functions operate on a whole basic block.

The main changes are:
- Hoopl.Dataflow: implement the new interface and remove the old code;
  expose a utility function to do a strict fold over the nodes of a
  basic block (for analyses that do want to look at all the nodes)
- Refactor all the analyses to use the new interface.

One of the nice effects is that we can remove the `analyzeFwdBlocks`
hack that ignored the middle nodes (that existed for analyses that
didn't need to go over all the nodes). Now this is no longer a special
case and fits well with the new interface.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan:
validate, earlier version of the patch had assertions
comparing the results with the old implementation

Reviewers: erikd, austin, simonmar, hvr, goldfire, bgamari

Reviewed By: bgamari

Subscribers: goldfire, erikd, thomie

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

2 years agoAdded Eq1, Ord1, Read1 and Show1 instances for NonEmpty
Shane [Tue, 29 Nov 2016 22:53:44 +0000 (17:53 -0500)] 
Added Eq1, Ord1, Read1 and Show1 instances for NonEmpty

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoRemove most functions from cmm/BlockId
Michal Terepeta [Tue, 29 Nov 2016 22:49:27 +0000 (17:49 -0500)] 
Remove most functions from cmm/BlockId

It seems that `BlockId` module could simply go away in favor
of Hoopl's `Label`. This is the first step to do that.

In a few places I had to add some type signatures, but most of
them seem to help with code readability.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: ./validate

Reviewers: austin, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agorts: Add missing #include <stdbool.h>
Ben Gamari [Tue, 29 Nov 2016 23:46:15 +0000 (18:46 -0500)] 
rts: Add missing #include <stdbool.h>

2 years agoUse C99's bool
Ben Gamari [Tue, 29 Nov 2016 21:51:30 +0000 (16:51 -0500)] 
Use C99's bool

Test Plan: Validate on lots of platforms

Reviewers: erikd, simonmar, austin

Reviewed By: erikd, simonmar

Subscribers: michalt, thomie

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

2 years agoFix type of GarbageCollect declaration
Ben Gamari [Tue, 29 Nov 2016 21:51:07 +0000 (16:51 -0500)] 
Fix type of GarbageCollect declaration

Test Plan: Validate

Reviewers: simonmar, austin, erikd

Subscribers: thomie

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

2 years agoMake globals use sharedCAF
Moritz Angermann [Tue, 29 Nov 2016 21:50:32 +0000 (16:50 -0500)] 
Make globals use sharedCAF

The use of globals is quite painful when multiple rts are loaded, e.g.
when plugins are loaded, which bring in a second rts. The sharedCAF
appraoch was employed for the FastStringTable; I've taken the libery
to extend this to the other globals I could find.

Reviewers: rwbarton, simonmar, austin, hvr, erikd, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

2 years agohschooks.c: Ensure correct header file is included
Ben Gamari [Tue, 29 Nov 2016 21:50:04 +0000 (16:50 -0500)] 
hschooks.c: Ensure correct header file is included

Consider the case of building a stage1 compiler. `hschooks.c` will be
built by stage0 `ghc` and linked against the `stage0` RTS. Despite this
it was #including the stage1 `Rts.h`. There is, of course, no guarantee
that this is ABI-compatible with the stage0 RTS and when they diverge
Bad Things happen (e.g. bells ringing at inappropriate times in D2699).

Test Plan: Validate

Reviewers: simonmar, austin

Subscribers: thomie

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

2 years agotestsuite: Bump haddock.compiler allocations
Ben Gamari [Tue, 29 Nov 2016 20:58:36 +0000 (15:58 -0500)] 
testsuite: Bump haddock.compiler allocations

Unfortunately it's quite unclear what caused this.

2 years agoOrdList: Add Foldable, Traversable instances
Ben Gamari [Tue, 29 Nov 2016 19:45:19 +0000 (14:45 -0500)] 
OrdList: Add Foldable, Traversable instances

Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

2 years agoNCGMonad: Add MonadUnique NatM instance
Ben Gamari [Tue, 29 Nov 2016 19:45:04 +0000 (14:45 -0500)] 
NCGMonad: Add MonadUnique NatM instance

Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

2 years agoAsmCodeGen: Refactor worker in cmmNativeGens
Ben Gamari [Tue, 29 Nov 2016 19:44:57 +0000 (14:44 -0500)] 
AsmCodeGen: Refactor worker in cmmNativeGens

Test Plan: Validate

Reviewers: austin, simonmar, michalt

Reviewed By: simonmar, michalt

Subscribers: thomie

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

2 years agoUse newBlockId instead of newLabelC
Ben Gamari [Tue, 29 Nov 2016 19:44:19 +0000 (14:44 -0500)] 
Use newBlockId instead of newLabelC

This seems like a clearer name and the fewer functions that
one needs to remember, the better.

Test Plan: validate

Reviewers: austin, simonmar, michalt

Reviewed By: simonmar, michalt

Subscribers: thomie

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

2 years agoPurge GHC of literate Perl
Demi Obenour [Tue, 29 Nov 2016 19:44:05 +0000 (14:44 -0500)] 
Purge GHC of literate Perl

Test Plan: GHC CI

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: snowleopard, thomie

Maniphest Tasks: T74

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

2 years agoRefactor Pattern Match Checker to use ListT
Matthew Pickering [Tue, 29 Nov 2016 19:43:43 +0000 (14:43 -0500)] 
Refactor Pattern Match Checker to use ListT

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoReplace -fshow-source-paths with -fhide-source-paths
Sylvain Henry [Tue, 29 Nov 2016 18:39:28 +0000 (13:39 -0500)] 
Replace -fshow-source-paths with -fhide-source-paths

This patch reverts the change introduced with
587dcccfdfa7a319e27300a4f3885071060b1f8e and restores the previous
default output of GHC (i.e., show source path and object path for each
compiled module).

The -fhide-source-paths flag can be used to hide these paths and reduce
the line
noise.

Reviewers: gracjan, nomeata, austin, bgamari, simonmar, hvr

Reviewed By: hvr

Subscribers: thomie

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

GHC Trac Issues: #12851

2 years agotestsuite: Mention CLEANUP option in README
Ben Gamari [Tue, 29 Nov 2016 18:38:37 +0000 (13:38 -0500)] 
testsuite: Mention CLEANUP option in README

Test Plan: Read it

Reviewers: austin

Subscribers: mpickering, thomie

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

2 years agoMinor cleanup of foldRegs{Used,Defd}
Michal Terepeta [Tue, 29 Nov 2016 18:31:28 +0000 (13:31 -0500)] 
Minor cleanup of foldRegs{Used,Defd}

This makes the two functions strict in the accumulator - it seems that
there are only two users of those functions: `CmmLive` and `CmmSink`
and in both cases the strict fold fits better.

The commit also removes a few unused functions (`filterRegsUsed`),
instances (for `Maybe` and `RegSet`) and gets rid of unnecessary
inculde of `HsVersions.h`.

The performance effect of avoiding unnecessary thunks is mostly
negligible, although we do allocate a tiny bit less (nofib's section
on compile allocations):
```
-1 s.d.                -----            -0.2%
+1 s.d.                -----            -0.1%
Average                -----            -0.2%
```

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: validate

Reviewers: simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoDetect color support
Phil Ruffwind [Tue, 29 Nov 2016 18:31:16 +0000 (13:31 -0500)] 
Detect color support

Test Plan: validate

Reviewers: erikd, Phyx, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #8809

2 years agoMake diagnostics slightly more colorful
Phil Ruffwind [Tue, 29 Nov 2016 18:31:01 +0000 (13:31 -0500)] 
Make diagnostics slightly more colorful

This is a preliminary commit to add colors to diagnostics (warning and
error messages).  The aesthetic changes are:

  - 'warning', 'error', and 'fatal' are all colored magenta, red, and
    red respectively.
  - The warning annotation [-Wsomething] shares the same color.
  - Warnings and errors are also bolded (this is consistent with what
    other compilers do).

A new flag has been added to control the behavior:

    -fdiagnostics-color=(always|auto|never)

This flag is 'auto' by default.  However, auto-detection is not
implemented yet, so it effectively it defaults to off.

Test Plan: validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #8809

2 years agousers_guide: Bring 8.0.2 release notes up-to-date with ghc-8.0 branch
Ben Gamari [Tue, 29 Nov 2016 18:29:54 +0000 (13:29 -0500)] 
users_guide: Bring 8.0.2 release notes up-to-date with ghc-8.0 branch

I've been editing the release notes on the `ghc-8.0` branch; fold those
changes into `master`.

2 years agoDefine thread primitives if they're supported.
Shea Levy [Tue, 29 Nov 2016 18:28:27 +0000 (13:28 -0500)] 
Define thread primitives if they're supported.

On iOS, we use the pthread-based implementation of Itimer.c even for a
non-threaded RTS. Since 999c464, this relies on synchronization
primitives like Mutex, so ensure those primitives are defined whenever
they are supported, even if !THREADED_RTS.

Fixes #12799.

Reviewers: erikd, austin, simonmar, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12799

2 years agoStore string as parsed in SourceText for CImport
Alan Zimmerman [Tue, 29 Nov 2016 19:06:52 +0000 (21:06 +0200)] 
Store string as parsed in SourceText for CImport

2 years agoTypos in comments
Gabor Greif [Tue, 29 Nov 2016 15:18:07 +0000 (16:18 +0100)] 
Typos in comments