[commit: ghc] wip/T12618: Squashed ConApp commit (b5f98af)
git at git.haskell.org
git at git.haskell.org
Thu Oct 13 20:46:35 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/T12618
Link : http://ghc.haskell.org/trac/ghc/changeset/b5f98afdafa7d92796a54897cb49d494abed45f9/ghc
>---------------------------------------------------------------
commit b5f98afdafa7d92796a54897cb49d494abed45f9
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 13 16:46:12 2016 -0400
Squashed ConApp commit
commit 03195f67022162318c8fed3d86b188597eb26c6b
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 13 15:20:47 2016 -0400
Try to apply rules that match a data con
this is slightly annoying, all the rule matching code so far assumes
that rules can only apply to function applications, which is just no
longer true.
commit 67dbf3a9841e6ffcca9d7c480a06b78c30513c98
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 13 14:55:34 2016 -0400
Make simple DataCon wrappers complusary unfoldings
and make sure they are unfolded in simple_opt_expr, even when they are
nullary. For that, start paying attention to the arity field in the
unfolding guidance. (This design can be revised later.)
commit e6ad487ff9dd77ff4d35b15d671338b02942ac80
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 13 13:25:49 2016 -0400
Extend test for #12689 with rule matching late on normal data con
commit 5ed10e8ea37e3d1d89c6edae5c1a626b483849a3
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 13 13:11:10 2016 -0400
Use mkSimpleDataConRep in mkDataConRep if nothing fancy goes on
as a step towards treating them diffently in the inliner.
commit 92b560e6d04e2db290d6e1e8a4fa93c936a5de69
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 13 13:08:34 2016 -0400
Revert "Make data con wrappers ConLike (and see what happens)"
This reverts commit ad72aa0e46d1e58eac3e6ff3c17af080b01e6ff3.
commit ad72aa0e46d1e58eac3e6ff3c17af080b01e6ff3
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 11 19:03:51 2016 -0400
Make data con wrappers ConLike (and see what happens)
commit e17608466274b8448bd9d4f1f4f5edaa4894bd63
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 11 16:50:25 2016 -0400
Add a broken test case for #12689
A rule with a phase specification trying to match on a constructor with
a wrapper will fail to match, as the wrapper will be inlined by then.
The fact that it works in the other case is also mostly by accident.
(Split into two test cases so that regressions with regard what works so
far are caught.)
commit 6d59834455f8e9c294f030890e96af548079652a
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 11 16:25:05 2016 -0400
Add test case for #12689
which test a few variants of rules involving constructors, including
nullary constructors, constructors with wrappers, and unsaturated of
constructors.
At the moment, all the rules work as expected, despite GHC’s compile
time warnings when called with -Wall.
commit 0e07dc90aa94673bcc83f10e32b466b7f22ee3ee
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 11 10:57:55 2016 -0400
SpecConstr.isValue: Handle ConApp
now all tests pass (here)
commit ddbcc7b5cea1fb22697d6d0723e90e0d893a6537
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 11 10:47:06 2016 -0400
Adjust exprIsCheap
commit 54cfb30b0b33246d4e8cb36d659ccbc971e9f094
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 11 10:11:19 2016 -0400
Fix instance Eq (DeBruijn CoreExpr) for ConApp
commit 557166a6b670f3dcd3bed4f79af1119b9a3f4832
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Mon Oct 10 17:35:36 2016 -0400
Have a compulary unfolding for unboxed tuple wrappers
as we have no binding for them.
commit 5bdf9d042d812fdfeece8db9037c0175c2b8ed6b
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Mon Oct 10 17:27:19 2016 -0400
sptModuleInitCode: Look for ConApp
commit 11b0d182da0b283ab73f3682c195cce452c4a57f
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Mon Oct 10 16:37:54 2016 -0400
Nullary data constructors are trivial
commit 09f72a920ba786bf7a0c235a38402d8ff8d6f9a5
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Sat Oct 8 00:03:53 2016 +0100
Move zonking out of tcFamTyPats
In tcFamTyPats we were zonking from the TcType world to the
Type world, ready to build the results into a CoAxiom (which
should have no TcType stuff. But the 'thing_inside' for
tcFamTyPats also must be zonked, and that zonking must have
the ZonkEnv from the binders zonked tcFamTyPats.
Ugh. This caused an assertion failure (with DEBUG on) in
RaeBlobPost and TypeLevelVec, both in tests/dependent, as
shown in Trac #12682. Why it hasn't shown up before now
is obscure to me.
So I moved the zonking stuff out of tcFamTyPats to its
three call sites, where we can do it all together. Very
slightly longer, but much more robust.
commit 0a5850dab49cbec07c41dcac6771da4c1584d9cd
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 17:54:51 2016 -0400
Update debugger test output
Because we desugare to the wrapper, without simplifiation, many
expressions that were values before are now thunks, and shown as such in
the debugger.
commit 32a2826823c67b8ff54224b47ede9017619a7a23
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 15:51:04 2016 -0400
SetLevels: Do not float nullary data constructors
commit 0ae46fea877a38b872ba7eb241e9a620d1c2de1d
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 14:43:56 2016 -0400
Update some test output
commit 891c903b791b67aa4742a8634cfad71bf61a8d2c
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 14:23:04 2016 -0400
No lint warning about staticPtr data con worker
because of collectStaticPtrSatArgs this may be around.
commit 33728e85c73918b2e4549ee92f5350a7accce00a
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 13:45:08 2016 -0400
Avoid invalid haddock synatx
commit 75e5dd948dc4c3db6830383b5cc83231a71005d6
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 13:44:00 2016 -0400
getIdFromTrivialExpr_maybe: Return dataConWorkId for nullary data cons
commit 2fee1279c78e39e7233a9f79b27549b02a74d565
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 13:20:59 2016 -0400
Handle nullary constructors in the byte code generator.
commit 4068e403fe104e4226939190bb107a1f3c655d0c
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 12:38:14 2016 -0400
Handle nullary Cons in myCollectArgs
commit d51996444bfd40eb7588e696078f3f6eedd35442
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 9 12:07:50 2016 -0400
cpe_ExprIsTrivial: Nullary Constructors are trivial
commit 518ed7909a9c81d96480b9ed2fd39a0be2fb8fe3
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sat Oct 8 22:55:54 2016 -0400
Handle ConApp in inlineBoringOk
commit ab230b9fe7142b1a9dcd62f6af2dce848b0d8f59
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sat Oct 8 16:59:00 2016 -0400
coreToStgExpr: add con worker to free variables reported
commit 7a6203882ee5af9db0cdc5463f23a60989ab7cee
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Fri Oct 7 21:59:46 2016 -0400
Do not lint the bodz of the data con worker bindings introduced by CorePrep
commit c9a3415460ab6361ecdaf396800a3a533d62587e
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Fri Oct 7 21:43:24 2016 -0400
Revert "CorePrep: Stop creating weird bindings for data constructor workers"
This reverts commit 36143d401423e7fc427cef6ed71cb9dae3c9d561.
commit 5a0b12869b7d9058348a4af42ef016da3d5b83ae
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Fri Oct 7 17:39:42 2016 -0400
maybe_substitute: Detect ConApp
commit f0b187303fad8c36df615bc835752b5a16202831
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Fri Oct 7 15:21:35 2016 -0400
Temporarily disable rule shadowing warnings
Until https://ghc.haskell.org/trac/ghc/ticket/12618#comment:25 is
resolved.
commit 13557d6e3d92315ed034479905aa4a15baff4025
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Fri Oct 7 09:18:53 2016 -0400
isTrueLHsExpr: Match on data con wrapper now
commit cc7e75428218cc02fe7da916fb2ee5a5e3868807
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Oct 6 23:38:34 2016 -0400
Include constructor in freeNamesIfExpr
commit 65ba986828aba20e61ef15b2db09eb40c06259b4
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 23:23:20 2016 -0400
Use ConApp when creating True resp. False
commit 70e58e8316a138627274160e2fe6972802084fea
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 23:22:48 2016 -0400
New Lint Check: No data con workers any more, please
commit ba8341c129bb26e8d92e763dd7de6f0a1e265caf
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 23:08:34 2016 -0400
mkCoreConApps: Do not use ConApp for newtypes
commit 48877dad6bfd8a7d5cf47da04fde8e2223530146
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 18:21:59 2016 -0400
mkSimpleDataConRep: No wrapper for newtypes
commit 3f42e87964b327f4e6b463056727e3de980dfa31
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 18:13:33 2016 -0400
ConApp: More Linting
commit 1aa69bff3624beb966136e70e806dd7c7038a795
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 17:50:29 2016 -0400
Use dataConWrapId in unsaturated uses of mkCoreConApps
commit d1922185829f5ee2eac8c9797d732aa653b0408d
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 17:43:05 2016 -0400
Handle ConApp in "Eliminate Identity Case"
commit ef7fc1a15bc64084589d3b63789f2d03f5bf6cf0
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 17:29:53 2016 -0400
Deserialize interface tuples to ConApp
commit 395db23544dbde568bfaf71966123b7b8388e971
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 17:16:59 2016 -0400
Create a simple wrapper for built-in types as well
(The module structure might need some refactoring here.)
commit 5be97a0c7aec64260335581ec8de27792be0467a
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 13:21:41 2016 -0400
Desugar: Use Coercible worker, not wrapper
commit 36143d401423e7fc427cef6ed71cb9dae3c9d561
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 13:15:40 2016 -0400
CorePrep: Stop creating weird bindings for data constructor workers
as these should only occur saturated now.
commit 916c15272fffd7d7457c085488051765c6c8146e
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Oct 5 12:50:32 2016 -0400
Reserve a unique for the wrapper of a wired in DataCon
commit 32b47198c2f6b365611e144b0730c9dff12ba206
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 15:46:59 2016 -0400
Always use ConApp in CoreSyn
commit 39185a4af6d85087f2eb42fb02f74e990bcb142d
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 15:14:45 2016 -0400
Always build a wrapper for data types
commit 3733c4dfc50d578bef3e6a287f28841ce16f309a
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:49:40 2016 -0400
Get rid of unitDataConId (use ConApp instead)
commit c3e1cb0b94f527d2a488c19b4566a46cd7d780ce
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:41:54 2016 -0400
knownCon: Use ConApp in unfolding of scrutinee
commit 8399e73a44287d5aa6ce6c61620c628f85033392
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:35:23 2016 -0400
Use ConApp in tagToEnumRule
commit a40b10315ca752652e23c15be0e7a1d48807f62f
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:29:17 2016 -0400
Lint: Complain about saturated uses of the data con worker
to find the spots where ConApp has to be used instead.
commit 6c7668e65cc1901414aa14a8e9d555082cc2c9f3
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:23:43 2016 -0400
mkCoreConApps: Warn about unsaturated use
commit b486662d3c75ef8a1c96d2d29f8e5ca547c23c25
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:20:05 2016 -0400
DataCon wrapper: Use ConApp in the body
commit f10cbcb7aab88b38ce1dc17568af4454abf624ae
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 14:10:09 2016 -0400
mkDataConRep: Do not interleave applying arguments and unboxers
in preparation to using ConApp in the data con wrapper (where this is
not possible).
commit 8fa24208a732b877952ded6e2e98f54f526dde19
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 13:33:05 2016 -0400
ConApp: Include dc worker id in dffvExpr
just to see if this fixes the crashes here.
commit 5a7d036452d83c7d456a73b4fc4781aa76c57f62
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Tue Oct 4 13:33:05 2016 -0400
ConApp: Include dc worker id in free variables
just to see if this fixes the crashes here.
commit e7d8c5a713218329d52954f99aff60a484e00eed
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Sun Oct 2 21:19:49 2016 -0400
ConApp bytecode: Add more ASSERT
commit f17b59ef00616ac15405cf84b30bf202fc239592
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Fri Sep 30 20:50:42 2016 -0400
Actually desugar to ConApp
at least if the constructor is saturated. Fall back to the worker
otherwise.
commit 67814af6d68758eba6d424a4454cef6bd7235127
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Sep 29 16:56:56 2016 -0400
Introduce ConApp to Core (dead code as of yet)
This is the first step towards #12618: It adds the data constructor and
then fixes all problems due to incomplete patterns, essentially
preparing the complete compiler for the eventual use of this variant.
Because no where a ConApp is created, this should not yet have any
effect.
Care is taken to not take shortcuts via the data con worker id, as
eventually, there will be no data con worker any more.
There are a few unclear spots, marked with "TODO #12618". Input is
appreciated. These are currently:
* CoreLint: Remove a check from the App case that will only be relevant
occurring in the ConApp case later
* simplExprF1: This case became very easy. I might have overlooked
something else happening to arguments, as I read and simplified the
code that handled App. Second pairs of eyes welcome.
* ruleCheck: There can be no rules attached to data constructors, can
there?
* scExp: Can a datacon be in scSubstId?
* dmdAnal: How to get the idStrictness equivalent of the worker?
Or is there never something useful to be said about the strictness
signature of an constructor? (Because strictness annotations are
taken care of by the wrapper?
>---------------------------------------------------------------
b5f98afdafa7d92796a54897cb49d494abed45f9
compiler/basicTypes/DataCon.hs | 14 ++-
compiler/basicTypes/Demand.hs | 17 ++-
compiler/basicTypes/MkId.hs | 137 ++++++++++++++-------
compiler/basicTypes/MkId.hs-boot | 4 +-
compiler/basicTypes/Unique.hs | 22 ++--
compiler/codeGen/StgCmmEnv.hs | 1 -
compiler/coreSyn/CoreFVs.hs | 14 +++
compiler/coreSyn/CoreLint.hs | 42 +++++++
compiler/coreSyn/CorePrep.hs | 24 ++++
compiler/coreSyn/CoreSeq.hs | 1 +
compiler/coreSyn/CoreStats.hs | 2 +
compiler/coreSyn/CoreSubst.hs | 52 +++++---
compiler/coreSyn/CoreSyn.hs | 31 ++++-
compiler/coreSyn/CoreTidy.hs | 15 +--
compiler/coreSyn/CoreUnfold.hs | 20 ++-
compiler/coreSyn/CoreUtils.hs | 65 ++++++----
compiler/coreSyn/MkCore.hs | 39 +++++-
compiler/coreSyn/PprCore.hs | 10 ++
compiler/coreSyn/TrieMap.hs | 80 +++++++-----
compiler/deSugar/Desugar.hs | 5 +-
compiler/deSugar/DsBinds.hs | 10 +-
compiler/deSugar/DsCCall.hs | 6 +-
compiler/deSugar/DsListComp.hs | 8 +-
compiler/deSugar/DsUtils.hs | 4 +-
compiler/ghci/ByteCodeGen.hs | 42 ++++++-
compiler/iface/IfaceSyn.hs | 47 ++++---
compiler/iface/MkIface.hs | 27 ++--
compiler/iface/TcIface.hs | 7 +-
compiler/main/StaticPtrTable.hs | 5 +
compiler/main/TidyPgm.hs | 2 +
compiler/prelude/PrelNames.hs | 17 ++-
compiler/prelude/PrelRules.hs | 8 +-
compiler/prelude/TysWiredIn.hs | 35 +++---
compiler/simplCore/CSE.hs | 1 +
compiler/simplCore/CallArity.hs | 26 +++-
compiler/simplCore/FloatIn.hs | 19 +++
compiler/simplCore/FloatOut.hs | 8 ++
compiler/simplCore/LiberateCase.hs | 1 +
compiler/simplCore/OccurAnal.hs | 8 ++
compiler/simplCore/SAT.hs | 12 ++
compiler/simplCore/SetLevels.hs | 18 ++-
compiler/simplCore/SimplUtils.hs | 19 +--
compiler/simplCore/Simplify.hs | 30 ++++-
compiler/specialise/Rules.hs | 13 ++
compiler/specialise/SpecConstr.hs | 6 +
compiler/specialise/Specialise.hs | 3 +
compiler/stgSyn/CoreToStg.hs | 20 +++
compiler/stranal/DmdAnal.hs | 33 +++++
compiler/stranal/WorkWrap.hs | 3 +
compiler/typecheck/TcInstDcls.hs | 30 +++--
compiler/typecheck/TcTyClsDecls.hs | 48 +++++---
compiler/vectorise/Vectorise/Exp.hs | 13 ++
compiler/vectorise/Vectorise/Utils.hs | 6 -
mk/warnings.mk | 2 +
.../tests/deSugar/should_compile/T2431.stderr | 48 ++++----
.../tests/ghci.debugger/scripts/print002.stdout | 2 +-
.../tests/ghci.debugger/scripts/print003.stdout | 20 ++-
.../tests/ghci.debugger/scripts/print006.stdout | 14 +--
.../tests/ghci.debugger/scripts/print008.stdout | 10 +-
.../tests/ghci.debugger/scripts/print010.stdout | 7 +-
.../tests/ghci.debugger/scripts/print012.stdout | 9 +-
.../tests/ghci.debugger/scripts/print013.stdout | 2 +-
.../tests/ghci.debugger/scripts/print014.stdout | 2 +-
.../tests/ghci.debugger/scripts/print019.stderr | 12 +-
.../tests/ghci.debugger/scripts/print019.stdout | 15 +--
.../tests/ghci.debugger/scripts/print034.stdout | 6 +-
testsuite/tests/ghci/scripts/T2976.stdout | 2 +-
testsuite/tests/ghci/scripts/ghci055.stdout | 2 +-
.../tests/numeric/should_compile/T7116.stdout | 40 +++---
testsuite/tests/quasiquotation/T7918.stdout | 16 +--
testsuite/tests/roles/should_compile/Roles1.stderr | 60 ++++-----
.../tests/roles/should_compile/Roles13.stderr | 70 +++++------
.../tests/roles/should_compile/Roles14.stderr | 12 +-
testsuite/tests/roles/should_compile/Roles2.stderr | 20 +--
testsuite/tests/roles/should_compile/Roles3.stderr | 36 +++---
testsuite/tests/roles/should_compile/Roles4.stderr | 20 +--
testsuite/tests/roles/should_compile/T8958.stderr | 32 ++---
testsuite/tests/simplCore/should_compile/Makefile | 2 +-
.../tests/simplCore/should_compile/T3055.stdout | 2 +-
.../tests/simplCore/should_compile/T3234.stderr | 25 +++-
.../tests/simplCore/should_compile/T3717.stderr | 20 +--
.../tests/simplCore/should_compile/T3772.stdout | 22 ++--
.../tests/simplCore/should_compile/T3990.stdout | 2 +-
.../tests/simplCore/should_compile/T4908.stderr | 47 ++++---
.../tests/simplCore/should_compile/T4918.stdout | 4 +-
.../tests/simplCore/should_compile/T4930.stderr | 26 ++--
.../tests/simplCore/should_compile/T5366.stdout | 3 +-
.../tests/simplCore/should_compile/T7360.stderr | 114 ++++++++++-------
.../tests/simplCore/should_compile/T7865.stdout | 2 +-
.../tests/simplCore/should_compile/T8274.stdout | 34 +++--
.../tests/simplCore/should_compile/T8832.stdout | 20 +--
.../tests/simplCore/should_compile/T8848.stderr | 32 ++---
.../tests/simplCore/should_compile/T9400.stderr | 14 +--
.../tests/simplCore/should_compile/par01.stderr | 14 +--
.../tests/simplCore/should_compile/rule2.stderr | 19 ++-
.../simplCore/should_compile/spec-inline.stderr | 133 +++++++++++++-------
testsuite/tests/simplCore/should_run/T12689.hs | 33 +++++
testsuite/tests/simplCore/should_run/T12689.stdout | 8 ++
testsuite/tests/simplCore/should_run/T12689a.hs | 27 ++++
.../tests/simplCore/should_run/T12689a.stdout | 6 +
.../tests/simplCore/should_run/T12689broken.hs | 9 ++
.../tests/simplCore/should_run/T12689broken.stdout | 1 +
testsuite/tests/simplCore/should_run/all.T | 3 +
testsuite/tests/th/TH_Roles2.stderr | 8 +-
104 files changed, 1487 insertions(+), 732 deletions(-)
Diff suppressed because of size. To see it, use:
git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc b5f98afdafa7d92796a54897cb49d494abed45f9
More information about the ghc-commits
mailing list