Turn -XTypeHoles into a (on by default) warning

After some discussion on ghc-devs@ and elsewhere, it seemed favorable to
make this change as type holes don't let any invalid programs though,
they merely change what the compiler reports in case of certain errors
(namely unbound occurrences, or _ appearing on a LHS.)

Now, the warning mechanism is controlled by -f[no-]warn-type-errors,
just like any other regular warning. Again, on by default.

The documentation and tests have been updated accordingly.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Update to `terminfo-0.4.0.0`/`haskeline-0.7.1.2`

These new versions get rid of AMP warnings

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
s/warn-type-holes/warn-typed-holes/g

Signed-off-by: Austin Seipp <austin@well-typed.com>
In rts/Printer.c, print exact UPDATE_FRAME type

When printing an update frame in printClosure(), it will not print
the unspecific UPDATE_FRAME, instead it prints BH_UPDATE_FRAME,
NORMAL_UPDATE_FRAME or MARKED_UPDATE_FRAME.

Signed-off-by: Austin Seipp <austin@well-typed.com>
PLT Redex definition of an STG-like language, as-per the fast curry paper.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Cache compiler info in DynFlags

Signed-off-by: Austin Seipp <austin@well-typed.com>
Don't pass -nodefaultlibs to Clang

This fixes a large majority of the testsuite failures on Mavericks with
Clang.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Fix ghciprog004 when built with Clang

Clang warns about implicit return values by default.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Update to `containers-0.5.4.0`

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
type-rep is only broken when debugging is on

in which case it is a wontfix (see #8569)
Disable -fregs-graph (#7679, #8657)
Documentation on the stack layout algorithm
bump bounds for T6048

Presumably broken by an earlier change, anyone know which one?
Typo in comment
Add a way to reserve temporary stack space in high-level Cmm

We occasionally need to reserve some temporary memory in a primop for
passing to a foreign function.  We've been using the stack for this,
but when we moved to high-level Cmm it became quite fragile because
primops are in high-level Cmm and the stack is supposed to be under
the control of the Cmm pipeline.

So this change puts things on a firmer footing by adding a new Cmm
construct 'reserve'.  e.g. in decodeFloat_Int#:

    reserve 2 = tmp {

      mp_tmp1  = tmp + WDS(1);
      mp_tmp_w = tmp;

      /* Perform the operation */
      ccall __decodeFloat_Int(mp_tmp1 "ptr", mp_tmp_w "ptr", arg);

      r1 = W_[mp_tmp1];
      r2 = W_[mp_tmp_w];
    }

reserve is described in CmmParse.y.

Unfortunately the argument to reserve must be a compile-time constant.
We might have to extend the parser to allow expressions with
arithmetic operators if this is too restrictive.

Note also that the return instruction for the procedure must be
outside the scope of the reserved stack area, so we have to extract
the values from the reserved area before we close the scope.  This
means some more local variables (r1, r2 in the example above).  The
generated code is more or less identical to what we had before though.
Allow the argument to 'reserve' to be a compile-time expression

By using the constant-folder to reduce it to an integer.
Update to current Cabal 1.18 branch tip

This should contain a fix that addresses the Solaris build breakage
(see #8670)

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Replace worthSplittingThunkDmd by worthSplittingArgDmd

these functions were almost equal, and neither validate nor nofib show
any difference replacing one by the other. So lets simplify this.
(This also prepares for a refactoring that will get rid of
worthSplittingArgDmd completely.)
Refactor WorkWrap, get rid of worthSplittingArgDmd

Instead of first checking whether splitting is useful, and then firing
up the worker-wrapper-machinery, which will do the same checks again, we
now simply generate a worker and wrapper, and while doing so keep track
of whether what we did was in any way useful.

So now there is only one place left where we decide whether we want to
do w/w, and that place has access to more information, in particular the
actual types at hand.
Remove unused returnsCPR