Join points
authorLuke Maurer <maurerl@cs.uoregon.edu>
Wed, 1 Feb 2017 16:56:01 +0000 (11:56 -0500)
committerDavid Feuer <David.Feuer@gmail.com>
Wed, 1 Feb 2017 18:44:52 +0000 (13:44 -0500)
commit8d5cf8bf584fd4849917c29d82dcf46ee75dd035
tree9d1b012562fd7ec1d1089b7d87e061884ba71f1c
parent4fa439e3ee2822f893bd364a6cbfe410a0c1e29f
Join points

This major patch implements Join Points, as described in
https://ghc.haskell.org/trac/ghc/wiki/SequentCore.  You have
to read that page, and especially the paper it links to, to
understand what's going on; but it is very cool.

It's Luke Maurer's work, but done in close collaboration with Simon PJ.

This Phab is a squash-merge of wip/join-points branch of
http://github.com/lukemaurer/ghc. There are many, many interdependent
changes.

Reviewers: goldfire, mpickering, bgamari, simonmar, dfeuer, austin

Subscribers: simonpj, dfeuer, mpickering, Mikolaj, thomie

Differential Revision: https://phabricator.haskell.org/D2853
77 files changed:
compiler/backpack/RnModIface.hs
compiler/basicTypes/BasicTypes.hs
compiler/basicTypes/Demand.hs
compiler/basicTypes/Id.hs
compiler/basicTypes/IdInfo.hs
compiler/basicTypes/IdInfo.hs-boot
compiler/basicTypes/Var.hs
compiler/basicTypes/VarEnv.hs
compiler/coreSyn/CoreArity.hs
compiler/coreSyn/CoreArity.hs-boot [new file with mode: 0644]
compiler/coreSyn/CoreLint.hs
compiler/coreSyn/CorePrep.hs
compiler/coreSyn/CoreStats.hs
compiler/coreSyn/CoreSubst.hs
compiler/coreSyn/CoreSyn.hs
compiler/coreSyn/CoreUnfold.hs
compiler/coreSyn/CoreUtils.hs
compiler/coreSyn/MkCore.hs
compiler/coreSyn/PprCore.hs
compiler/deSugar/DsUtils.hs
compiler/iface/IfaceSyn.hs
compiler/iface/TcIface.hs
compiler/iface/ToIface.hs
compiler/simplCore/CSE.hs
compiler/simplCore/CoreMonad.hs
compiler/simplCore/FloatIn.hs
compiler/simplCore/FloatOut.hs
compiler/simplCore/LiberateCase.hs
compiler/simplCore/OccurAnal.hs
compiler/simplCore/SetLevels.hs
compiler/simplCore/SimplCore.hs
compiler/simplCore/SimplEnv.hs
compiler/simplCore/SimplUtils.hs
compiler/simplCore/Simplify.hs
compiler/specialise/Rules.hs
compiler/specialise/SpecConstr.hs
compiler/specialise/Specialise.hs
compiler/stgSyn/CoreToStg.hs
compiler/stranal/DmdAnal.hs
compiler/stranal/WorkWrap.hs
compiler/stranal/WwLib.hs
compiler/types/Type.hs
compiler/utils/Outputable.hs
compiler/utils/UniqFM.hs
testsuite/tests/deSugar/should_compile/T2431.stderr
testsuite/tests/deriving/perf/all.T
testsuite/tests/numeric/should_compile/T7116.stdout
testsuite/tests/perf/compiler/all.T
testsuite/tests/perf/haddock/all.T
testsuite/tests/perf/join_points/Makefile [new file with mode: 0644]
testsuite/tests/perf/join_points/all.T [new file with mode: 0644]
testsuite/tests/perf/join_points/join001.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join002.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join002.stdout [new file with mode: 0644]
testsuite/tests/perf/join_points/join003.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join003.stdout [new file with mode: 0644]
testsuite/tests/perf/join_points/join004.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join004.stdout [new file with mode: 0644]
testsuite/tests/perf/join_points/join005.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join006.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join007.hs [new file with mode: 0644]
testsuite/tests/perf/join_points/join007.stdout [new file with mode: 0644]
testsuite/tests/perf/should_run/all.T
testsuite/tests/roles/should_compile/Roles13.stderr
testsuite/tests/simplCore/should_compile/Makefile
testsuite/tests/simplCore/should_compile/T13156.hs
testsuite/tests/simplCore/should_compile/T13156.stdout
testsuite/tests/simplCore/should_compile/T3717.stderr
testsuite/tests/simplCore/should_compile/T3772.stdout
testsuite/tests/simplCore/should_compile/T4908.stderr
testsuite/tests/simplCore/should_compile/T4930.stderr
testsuite/tests/simplCore/should_compile/T5658b.stdout
testsuite/tests/simplCore/should_compile/T7360.stderr
testsuite/tests/simplCore/should_compile/T9400.stderr
testsuite/tests/simplCore/should_compile/all.T
testsuite/tests/simplCore/should_compile/par01.stderr
testsuite/tests/simplCore/should_compile/spec-inline.stderr