summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2022-02-02 16:39:20 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-02-08 05:28:42 -0500
commitbc5cbce61b57f57cadf5c25fa3e60cf34c3b98ea (patch)
tree36350006a6f06895c8b6e74cd785ed18d5584d58
parent1a9438594d6d5280dfe43e4e597dd0380963268d (diff)
downloadhaskell-bc5cbce61b57f57cadf5c25fa3e60cf34c3b98ea.tar.gz
Add notes linter to testsuite
-rw-r--r--.gitlab-ci.yml7
-rw-r--r--ghc.mk2
-rw-r--r--hadrian/src/Packages.hs5
-rw-r--r--hadrian/src/Rules/Test.hs39
-rw-r--r--hadrian/src/Settings/Default.hs1
-rw-r--r--testsuite/mk/boilerplate.mk4
-rw-r--r--testsuite/tests/linters/Makefile7
-rw-r--r--testsuite/tests/linters/all.T20
-rw-r--r--testsuite/tests/linters/notes.stdout227
-rw-r--r--utils/notes-util/Main.hs5
-rw-r--r--utils/notes-util/Makefile17
-rw-r--r--utils/notes-util/expected-broken-note-refs853
-rw-r--r--utils/notes-util/ghc.mk18
-rw-r--r--utils/notes-util/notes-util.cabal2
14 files changed, 334 insertions, 873 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 34bc731138..a7b0c4d4fe 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -194,9 +194,12 @@ ghc-linters:
lint-notes:
image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
- extends: .lint
+ extends: .lint-params
+ variables:
+ BUILD_FLAVOUR: default
script:
- - utils/notes-util/check.sh
+ - .gitlab/ci.sh configure
+ - .gitlab/ci.sh run_hadrian test --only="notes"
dependencies: []
# Run mypy Python typechecker on linter scripts.
diff --git a/ghc.mk b/ghc.mk
index 4e6e0c2a12..cf4ca7dcad 100644
--- a/ghc.mk
+++ b/ghc.mk
@@ -545,6 +545,7 @@ utils/ghc-pkg/dist-install/package-data.mk: $(fixed_pkg_prev)
utils/hsc2hs/dist-install/package-data.mk: $(fixed_pkg_prev)
utils/compare_sizes/dist-install/package-data.mk: $(fixed_pkg_prev)
utils/runghc/dist-install/package-data.mk: $(fixed_pkg_prev)
+utils/notes-util/dist-install/package-data.mk: $(fixed_pkg_prev)
utils/iserv/stage2/package-data.mk: $(fixed_pkg_prev)
utils/iserv/stage2_p/package-data.mk: $(fixed_pkg_prev)
utils/iserv/stage2_dyn/package-data.mk: $(fixed_pkg_prev)
@@ -667,6 +668,7 @@ BUILD_DIRS += utils/hsc2hs
BUILD_DIRS += utils/ghc-pkg
BUILD_DIRS += utils/testremove
BUILD_DIRS += utils/check-ppr
+BUILD_DIRS += utils/notes-util
BUILD_DIRS += utils/check-exact
BUILD_DIRS += utils/count-deps
BUILD_DIRS += utils/ghc-cabal
diff --git a/hadrian/src/Packages.hs b/hadrian/src/Packages.hs
index 2616f097fe..cafea5ff69 100644
--- a/hadrian/src/Packages.hs
+++ b/hadrian/src/Packages.hs
@@ -9,7 +9,7 @@ module Packages (
hsc2hs, hp2ps, hpc, hpcBin, integerGmp, integerSimple, iserv, iservProxy,
libffi, libiserv, mtl, parsec, pretty, primitive, process, remoteIserv, rts,
runGhc, stm, templateHaskell, terminfo, text, time, timeout, touchy,
- transformers, unlit, unix, win32, xhtml, ghcPackages, isGhcPackage,
+ transformers, unlit, unix, win32, xhtml, noteLinter, ghcPackages, isGhcPackage,
-- * Package information
programName, nonHsMainPackage, autogenPath, programPath, timeoutPath,
@@ -39,7 +39,7 @@ ghcPackages =
, hp2ps, hpc, hpcBin, integerGmp, integerSimple, iserv, libffi, libiserv, mtl
, parsec, pretty, process, rts, runGhc, stm, templateHaskell
, terminfo, text, time, touchy, transformers, unlit, unix, win32, xhtml
- , timeout ]
+ , timeout, noteLinter ]
-- TODO: Optimise by switching to sets of packages.
isGhcPackage :: Package -> Bool
@@ -107,6 +107,7 @@ unlit = util "unlit"
unix = lib "unix"
win32 = lib "Win32"
xhtml = lib "xhtml"
+noteLinter = prg "notes-util" `setPath` "utils/notes-util"
-- | Construct a library package, e.g. @array@.
lib :: PackageName -> Package
diff --git a/hadrian/src/Rules/Test.hs b/hadrian/src/Rules/Test.hs
index 27e3cc9176..8ce3daa70b 100644
--- a/hadrian/src/Rules/Test.hs
+++ b/hadrian/src/Rules/Test.hs
@@ -43,21 +43,31 @@ countDepsSourcePath = "utils/count-deps/Main.hs"
countDepsExtra :: Maybe String
countDepsExtra = Just "-iutils/count-deps"
-checkPrograms :: [(String,FilePath, FilePath, Maybe String, Package)]
+noteLinterProgPath, noteLinterSourcePath :: FilePath
+noteLinterProgPath = "test/bin/notes-util" <.> exe
+noteLinterSourcePath = "utils/notes-util/Main.hs"
+noteLinterExtra :: Maybe String
+noteLinterExtra = Just "-iutils/notes-util"
+
+checkPrograms :: [(String,FilePath, FilePath, Maybe String, Package, Stage -> Stage)]
checkPrograms =
- [ ("test:check-ppr",checkPprProgPath, checkPprSourcePath, checkPprExtra, checkPpr)
- , ("test:check-exact",checkExactProgPath, checkExactSourcePath, checkExactExtra, checkExact)
- , ("test:count-deps",countDepsProgPath, countDepsSourcePath, countDepsExtra, countDeps)
+ [ ("test:check-ppr",checkPprProgPath, checkPprSourcePath, checkPprExtra, checkPpr, id)
+ , ("test:check-exact",checkExactProgPath, checkExactSourcePath, checkExactExtra, checkExact, id)
+ , ("test:count-deps",countDepsProgPath, countDepsSourcePath, countDepsExtra, countDeps, id)
+ , ("lint:notes-util", noteLinterProgPath, noteLinterSourcePath, noteLinterExtra, noteLinter, const Stage0)
]
-testsuiteDeps :: Rules ()
-testsuiteDeps =
- "test:ghc" ~> do
+inTreeOutTree :: (Stage -> Action b) -> Action b -> Action b
+inTreeOutTree inTree outTree = do
args <- userSetting defaultTestArgs
let testCompilerArg = testCompiler args
case stageOf testCompilerArg of
- Just stg -> needTestsuitePackages stg
- Nothing -> return ()
+ Just stg -> inTree stg
+ Nothing -> outTree
+
+testsuiteDeps :: Rules ()
+testsuiteDeps = do
+ "test:ghc" ~> inTreeOutTree (\stg -> needTestsuitePackages stg) (return ())
ghcConfigPath :: FilePath
ghcConfigPath = "test/ghcconfig"
@@ -99,7 +109,7 @@ testRules = do
-- Rules for building check-ppr, check-exact and
-- check-ppr-annotations with the compiler we are going to test
-- (in-tree or out-of-tree).
- forM_ checkPrograms $ \(name, progPath, sourcePath, mextra, progPkg) -> do
+ forM_ checkPrograms $ \(name, progPath, sourcePath, mextra, progPkg, mod_stage) -> do
name ~> need [root -/- progPath]
root -/- progPath %> \path -> do
need [ sourcePath ]
@@ -109,9 +119,9 @@ testRules = do
-- normally, NOT stage3, as there are no rules for stage4 yet
case stageOf testGhc of
Just stg -> do
- fs <- pkgFile stg progPkg
+ fs <- pkgFile (mod_stage stg) progPkg
need [fs]
- prog_path <- programPath =<< programContext stg progPkg
+ prog_path <- programPath =<< programContext (mod_stage stg) progPkg
abs_prog_path <- liftIO (IO.canonicalizePath prog_path)
createFileLink abs_prog_path path
-- otherwise, build it by directly invoking ghc
@@ -196,6 +206,7 @@ testRules = do
setEnv "CHECK_PPR" (top -/- root -/- checkPprProgPath)
setEnv "CHECK_EXACT" (top -/- root -/- checkExactProgPath)
setEnv "COUNT_DEPS" (top -/- root -/- countDepsProgPath)
+ setEnv "NOTES_UTIL" (top -/- root -/- noteLinterProgPath)
-- This lets us bypass the need to generate a config
-- through Make, which happens in testsuite/mk/boilerplate.mk
@@ -220,9 +231,9 @@ isOkToBuild :: TestArgs -> String -> Bool
isOkToBuild args target
= stageOf (testCompiler args) `elem` [Just Stage1, Just Stage2]
|| testHasInTreeFiles args
- || target `elem` map fst5 checkPrograms
+ || target `elem` map fst6 checkPrograms
where
- fst5 (a,_,_,_,_) = a
+ fst6 (a,_,_,_,_, _) = a
-- | Build the timeout program.
-- See: https://github.com/ghc/ghc/blob/master/testsuite/timeout/Makefile#L23
diff --git a/hadrian/src/Settings/Default.hs b/hadrian/src/Settings/Default.hs
index 1ce66c3534..36a1ed0d8e 100644
--- a/hadrian/src/Settings/Default.hs
+++ b/hadrian/src/Settings/Default.hs
@@ -86,6 +86,7 @@ stage0Packages = do
, text
, transformers
, unlit
+ , noteLinter
]
++ [ terminfo | not windowsHost, not cross ]
++ [ timeout | windowsHost ]
diff --git a/testsuite/mk/boilerplate.mk b/testsuite/mk/boilerplate.mk
index c3be669636..9fc9b36e23 100644
--- a/testsuite/mk/boilerplate.mk
+++ b/testsuite/mk/boilerplate.mk
@@ -231,6 +231,10 @@ ifeq "$(COUNT_DEPS)" ""
COUNT_DEPS := $(abspath $(TOP)/../inplace/bin/count-deps)
endif
+ifeq "$(NOTES_UTIL)" ""
+NOTES_UTIL := $(abspath $(TOP)/../inplace/bin/notes-util)
+endif
+
# -----------------------------------------------------------------------------
# configuration of TEST_HC
diff --git a/testsuite/tests/linters/Makefile b/testsuite/tests/linters/Makefile
index aeaef050e1..559d0bba3e 100644
--- a/testsuite/tests/linters/Makefile
+++ b/testsuite/tests/linters/Makefile
@@ -1,4 +1,11 @@
TOP=../..
+ifeq "$(NOTES_UTIL)" ""
+NOTES_UTIL := $(abspath $(TOP)/../inplace/bin/notes-util)
+endif
+
uniques:
python3 checkUniques/check-uniques.py $(TOP)/..
+
+notes:
+ (cd $(TOP)/.. && $(NOTES_UTIL) broken-refs)
diff --git a/testsuite/tests/linters/all.T b/testsuite/tests/linters/all.T
index b4cc4bb8b3..ef3ea5441f 100644
--- a/testsuite/tests/linters/all.T
+++ b/testsuite/tests/linters/all.T
@@ -1 +1,21 @@
test('uniques', [no_deps, extra_files(["checkUniques"])], makefile_test, ['uniques'])
+
+def normalise_nos(s):
+ return re.sub(r':\d+:\d+','<line>:<no>', s)
+
+# Check that ls-files works and returns files from the source tree.
+# We just check that "hie.yaml" is there because it's top-level (dont have have to deal with
+# path differences) and quite unique to GHC.
+def has_ls_files() -> bool:
+ try:
+ files = subprocess.check_output(['git', 'ls-files']).splitlines()
+ print (b"hie.yaml" in files)
+ return b"hie.yaml" in files
+ except subprocess.CalledProcessError:
+ return False
+
+
+test('notes', [no_deps if has_ls_files() else skip
+ , req_hadrian_deps(["lint:notes-util"])
+ , normalise_fun(normalise_nos) ]
+ , makefile_test, ['notes'])
diff --git a/testsuite/tests/linters/notes.stdout b/testsuite/tests/linters/notes.stdout
new file mode 100644
index 0000000000..c7e69aff23
--- /dev/null
+++ b/testsuite/tests/linters/notes.stdout
@@ -0,0 +1,227 @@
+ref compiler/GHC/Builtin/Names.hs:222:15: Note [TyConRepNames for non-wired-in TyCons]
+ref compiler/GHC/CmmToAsm/X86/CodeGen.hs:3248:21: Note [rts/StgCRun.c : Stack Alignment on X86]
+ref compiler/GHC/CmmToC.hs:499:11: Note [Zero-extended sub-word signed results]
+ref compiler/GHC/CmmToLlvm/Config.hs:29:11: Note [LLVM Configuration]
+ref compiler/GHC/Core.hs:1123:23: Note [Extra args in rule matching]
+ref compiler/GHC/Core/Coercion/Axiom.hs:326:7: Note [Compatibility checking]
+ref compiler/GHC/Core/Lint.hs:489:11: Note [Checking representation-polymorphic data constructors]
+ref compiler/GHC/Core/Lint.hs:1923:0: Note [Rules and join points]
+ref compiler/GHC/Core/Make.hs:1033:48: Note [Worker/wrapper for INLINEABLE functions]
+ref compiler/GHC/Core/Opt/Arity.hs:1498:22: Note [Check for reflexive casts in eta-expansion]
+ref compiler/GHC/Core/Opt/CSE.hs:439:3: Note [Type-let]
+ref compiler/GHC/Core/Opt/FloatIn.hs:544:15: Note [extra_fvs (1,2)]
+ref compiler/GHC/Core/Opt/OccurAnal.hs:344:28: Note [Rules for imported functions]
+ref compiler/GHC/Core/Opt/OccurAnal.hs:576:40: Note [Self-recursive rules]
+ref compiler/GHC/Core/Opt/OccurAnal.hs:582:0: Note [Rules and loop breakers]
+ref compiler/GHC/Core/Opt/OccurAnal.hs:851:15: Note [Loop breaking]
+ref compiler/GHC/Core/Opt/OccurAnal.hs:1738:17: Note [Eta-expansion inside stable unfoldings]
+ref compiler/GHC/Core/Opt/Pipeline.hs:624:3: Note [Simplifying the left-hand side of a RULE]
+ref compiler/GHC/Core/Opt/Pipeline.hs:937:63: Note [Rules and indirect-zapping]
+ref compiler/GHC/Core/Opt/Pipeline.hs:999:31: Note [Messing up the exported Id's IdInfo]
+ref compiler/GHC/Core/Opt/Pipeline.hs:1008:7: Note [Messing up the exported Id's IdInfo]
+ref compiler/GHC/Core/Opt/SetLevels.hs:1598:30: Note [Top level scope]
+ref compiler/GHC/Core/Opt/Simplify.hs:672:56: Note [Wrapper NoUserInline]
+ref compiler/GHC/Core/Opt/Simplify.hs:2090:33: Note [RULEs apply to simplified arguments]
+ref compiler/GHC/Core/Opt/Simplify.hs:2618:13: Note [Case binder next]
+ref compiler/GHC/Core/Opt/Simplify.hs:3239:0: Note [Suppressing binder-swaps on linear case]
+ref compiler/GHC/Core/Opt/Simplify.hs:3767:8: Note [Lambda-bound unfoldings]
+ref compiler/GHC/Core/Opt/Simplify.hs:4123:33: Note [Do not eta-expand trivial expressions]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:133:39: Note [The hole type in ApplyToTy/Val]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:141:41: Note [The hole type in ApplyToTy/Val]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:456:59: Note [The hole type in ApplyToTy/Val]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:1225:37: Note [Gentle mode]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:1624:38: Note [Eta-expanding lambdas]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:2195:2: Note [Merge nested cases]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:2196:2: Note [Eliminate identity case]
+ref compiler/GHC/Core/Opt/Simplify/Utils.hs:2197:2: Note [Scrutinee constant folding]
+ref compiler/GHC/Core/Opt/Specialise.hs:1593:28: Note [Arity decrease]
+ref compiler/GHC/Core/Rules.hs:885:7: Note [Coercion argument]
+ref compiler/GHC/Core/Rules.hs:972:52: Note [Eta reduction in the target]
+ref compiler/GHC/Core/Rules.hs:1031:7: Note [Eta reduction in the target]
+ref compiler/GHC/Core/Subst.hs:100:60: Note [Apply once]
+ref compiler/GHC/Core/Subst.hs:111:16: Note [Extending the TCvSubst]
+ref compiler/GHC/Core/TyCo/FVs.hs:289:7: Note [Free variables of Coercions]
+ref compiler/GHC/Core/TyCo/Ppr.hs:71:23: Note [IfaceType and pretty-printing]
+ref compiler/GHC/Core/TyCo/Rep.hs:1711:31: Note [What prevents a constraint from floating]
+ref compiler/GHC/Core/TyCo/Subst.hs:116:15: Note [Extending the TvSubstEnv]
+ref compiler/GHC/Core/TyCo/Subst.hs:261:16: Note [Extending the TvSubstEnv]
+ref compiler/GHC/Core/TyCo/Subst.hs:784:15: Note [Extending the TCvSubst]
+ref compiler/GHC/Core/TyCo/Subst.hs:1001:15: Note [Extending the TCvSubst]
+ref compiler/GHC/Core/TyCon.hs:961:35: Note [Promoted GADT data construtors]
+ref compiler/GHC/Core/TyCon.hs:2442:62: Note [Sharing nullary TyCons]
+ref compiler/GHC/Core/Unfold.hs:1171:23: Note [INLINE for small functions (3)]
+ref compiler/GHC/Core/Unfold.hs:1242:50: Note [Unfold info lazy contexts]
+ref compiler/GHC/Core/Unfold/Make.hs:157:34: Note [DFunUnfoldings]
+ref compiler/GHC/Core/Unify.hs:561:16: Note [Unification result]
+ref compiler/GHC/Core/Unify.hs:1407:9: Note [INLINE pragmas and (>>)]
+ref compiler/GHC/Core/Utils.hs:944:40: Note [ _ -> [con1]
+ref compiler/GHC/CoreToStg.hs:460:15: Note [Nullary unboxed tuple]
+ref compiler/GHC/Driver/Main.hs:1551:34: Note [simpleTidyPgm - mkBootModDetailsTc]
+ref compiler/GHC/Driver/Session.hs:452:33: Note [LLVM Configuration]
+ref compiler/GHC/Driver/Session.hs:776:9: Note [LLVM Configuration]
+ref compiler/GHC/Driver/Session.hs:1949:36: Note [GHC.Driver.Main . Safe Haskell Inference]
+ref compiler/GHC/Driver/Session.hs:3910:49: Note [Eta-reduction in -O0]
+ref compiler/GHC/Hs/Extension.hs:140:5: Note [Strict argument type constraints]
+ref compiler/GHC/HsToCore/Binds.hs:313:33: Note [AbsBinds wrappers]
+ref compiler/GHC/HsToCore/Binds.hs:849:46: Note [Free dictionaries]
+ref compiler/GHC/HsToCore/Binds.hs:883:36: Note [Free tyvars in rule LHS]
+ref compiler/GHC/HsToCore/Binds.hs:884:35: Note [Free dictionaries in rule LHS]
+ref compiler/GHC/HsToCore/Binds.hs:942:24: Note [Free dictionaries]
+ref compiler/GHC/HsToCore/Binds.hs:999:34: Note [Dead spec binders]
+ref compiler/GHC/HsToCore/Docs.hs:126:70: Note [1]
+ref compiler/GHC/HsToCore/Docs.hs:130:0: Note [1]
+ref compiler/GHC/HsToCore/Expr.hs:1045:22: Note [Checking representation-polymorphic data constructors]
+ref compiler/GHC/HsToCore/Pmc/Desugar.hs:77:7: Note [Order of guards matter]
+ref compiler/GHC/HsToCore/Pmc/Solver.hs:853:20: Note [COMPLETE sets on data families]
+ref compiler/GHC/HsToCore/Types.hs:61:13: Note [Generating fresh names for FFI wrappers]
+ref compiler/GHC/HsToCore/Utils.hs:186:9: Note [MatchIds]
+ref compiler/GHC/HsToCore/Utils.hs:939:62: Note [Don't CPR join points]
+ref compiler/GHC/Iface/Syntax.hs:705:0: Note [Minimal complete definition]
+ref compiler/GHC/Iface/Syntax.hs:765:44: Note [Minimal complete definition]
+ref compiler/GHC/Iface/Type.hs-boot:8:7: Note [Depend on GHC.Integer]
+ref compiler/GHC/Linker/Types.hs:128:30: Note [Grant plan for static forms]
+ref compiler/GHC/Parser/Lexer.x:185:7: Note [Lexing NumericUnderscores extension]
+ref compiler/GHC/Parser/Lexer.x:502:3: Note [Lexing NumericUnderscores extension]
+ref compiler/GHC/Rename/Expr.hs:2013:9: Note [ApplicativeDo and strict patterns]
+ref compiler/GHC/Rename/Expr.hs:2046:12: Note [ApplicativeDo and refutable patterns]
+ref compiler/GHC/Rename/Expr.hs:2130:18: Note [ApplicativeDo and strict patterns]
+ref compiler/GHC/Rename/Expr.hs:2148:0: Note [ApplicativeDo and strict patterns]
+ref compiler/GHC/Rename/Expr.hs:2203:0: Note [ApplicativeDo and refutable patterns]
+ref compiler/GHC/Rename/HsType.hs:964:40: Note [CUSKs: Complete user-supplied kind signatures]
+ref compiler/GHC/Rename/Pat.hs:888:29: Note [Disambiguating record fields]
+ref compiler/GHC/Rename/Splice.hs:450:27: Note [Splices]
+ref compiler/GHC/Rename/Unbound.hs:373:7: Note [Related name spaces]
+ref compiler/GHC/Runtime/Eval.hs:995:2: Note [Querying instances for a type]
+ref compiler/GHC/Runtime/Interpreter.hs:198:30: Note [uninterruptibleMask_]
+ref compiler/GHC/StgToCmm.hs:107:18: Note [codegen-split-init]
+ref compiler/GHC/StgToCmm.hs:110:18: Note [pipeline-split-init]
+ref compiler/GHC/StgToCmm/DataCon.hs:230:4: Note [CHARLIKE and INTLIKE closures.]
+ref compiler/GHC/StgToCmm/Expr.hs:491:4: Note [case on bool]
+ref compiler/GHC/StgToCmm/Expr.hs:541:42: Note [dataToTag#]
+ref compiler/GHC/StgToCmm/Expr.hs:751:3: Note [alg-alt heap check]
+ref compiler/GHC/StgToCmm/Foreign.hs:177:53: Note [lower safe foreign calls]
+ref compiler/GHC/Tc/Deriv/Utils.hs:628:9: Note [Newtype deriving and unused constructors]
+ref compiler/GHC/Tc/Errors.hs:180:13: Note [Fail fast on kind errors]
+ref compiler/GHC/Tc/Errors.hs:2016:0: Note [Highlighting ambiguous type variables]
+ref compiler/GHC/Tc/Errors/Hole.hs:207:57: Note [Relevant Constraints]
+ref compiler/GHC/Tc/Errors/Hole.hs:985:24: Note [Speeding up valid-hole fits]
+ref compiler/GHC/Tc/Errors/Ppr.hs:1760:11: Note [Highlighting ambiguous type variables]
+ref compiler/GHC/Tc/Errors/Types.hs:128:37: Note [Migrating TcM messages]
+ref compiler/GHC/Tc/Gen/Arrow.hs:435:29: Note [RecStmt]
+ref compiler/GHC/Tc/Gen/Bind.hs:1397:19: Note [Existentials in pattern bindings]
+ref compiler/GHC/Tc/Gen/Export.hs:187:15: Note [Modules without a module header]
+ref compiler/GHC/Tc/Gen/Export.hs:418:0: Note [Modules without a module header]
+ref compiler/GHC/Tc/Gen/Export.hs:576:7: Note [Typing Pattern Synonym Exports]
+ref compiler/GHC/Tc/Gen/Export.hs:615:16: Note [Types of TyCon]
+ref compiler/GHC/Tc/Gen/Expr.hs:671:24: Note [Disambiguating record fields]
+ref compiler/GHC/Tc/Gen/Expr.hs:688:15: Note [Mixed Record Selectors]
+ref compiler/GHC/Tc/Gen/Expr.hs:1196:7: Note [Disambiguating record fields]
+ref compiler/GHC/Tc/Gen/Expr.hs:1299:11: Note [Deprecating ambiguous fields]
+ref compiler/GHC/Tc/Gen/Foreign.hs:149:26: Note [Expanding newtypes]
+ref compiler/GHC/Tc/Gen/HsType.hs:552:56: Note [Skolem escape prevention]
+ref compiler/GHC/Tc/Gen/HsType.hs:1180:39: Note [Body kind of HsForAllTy]
+ref compiler/GHC/Tc/Gen/HsType.hs:2623:7: Note [Matching a kind sigature with a declaration]
+ref compiler/GHC/Tc/Gen/HsType.hs:3152:9: Note [Cloning for type variable binder]
+ref compiler/GHC/Tc/Gen/Match.hs:553:20: Note [GroupStmt binder map]
+ref compiler/GHC/Tc/Gen/Match.hs:746:20: Note [GroupStmt binder map]
+ref compiler/GHC/Tc/Gen/Match.hs:1011:0: Note [typechecking ApplicativeStmt]
+ref compiler/GHC/Tc/Gen/Pat.hs:170:20: Note [Typing patterns in pattern bindings]
+ref compiler/GHC/Tc/Gen/Pat.hs:477:7: Note [Pattern coercions]
+ref compiler/GHC/Tc/Gen/Pat.hs:922:41: Note [Binding when lookup up instances]
+ref compiler/GHC/Tc/Gen/Pat.hs:1078:7: Note [Matching polytyped patterns]
+ref compiler/GHC/Tc/Gen/Pat.hs:1377:16: Note [Pattern coercions]
+ref compiler/GHC/Tc/Gen/Sig.hs:78:10: Note [Overview of type signatures]
+ref compiler/GHC/Tc/Gen/Sig.hs:412:28: Note [solveEqualities in tcPatSynSig]
+ref compiler/GHC/Tc/Instance/Family.hs:515:35: Note [Constrained family instances]
+ref compiler/GHC/Tc/Module.hs:698:15: Note [Extra dependencies from .hs-boot files]
+ref compiler/GHC/Tc/Module.hs:1971:6: Note [Root-main id]
+ref compiler/GHC/Tc/Solver.hs:2541:36: Note [Kind generalisation and SigTvs]
+ref compiler/GHC/Tc/Solver/Canonical.hs:498:50: Note [The superclasses story]
+ref compiler/GHC/Tc/Solver/Canonical.hs:1228:33: Note [Canonical LHS]
+ref compiler/GHC/Tc/Solver/Canonical.hs:1394:30: Note [Do not decompose given polytype equalities]
+ref compiler/GHC/Tc/Solver/Interact.hs:1638:9: Note [No touchables as FunEq RHS]
+ref compiler/GHC/Tc/Solver/Interact.hs:2292:12: Note [The equality class story]
+ref compiler/GHC/Tc/Solver/Monad.hs:1343:21: Note [Speeding up valid-hole fits]
+ref compiler/GHC/Tc/Solver/Rewrite.hs:1032:7: Note [Stability of rewriting]
+ref compiler/GHC/Tc/TyCl.hs:627:3: Note [Single function non-recursive binding special-case]
+ref compiler/GHC/Tc/TyCl.hs:1106:6: Note [Unification variables need fresh Names]
+ref compiler/GHC/Tc/TyCl.hs:1895:13: Note [TyConBinders for the result kind signatures of a data type]
+ref compiler/GHC/Tc/TyCl.hs:4366:16: Note [rejigCon and c.f. Note [Check role annotations in a second pass]
+ref compiler/GHC/Tc/TyCl/Instance.hs:947:26: Note [Generalising in tcFamTyPatsGuts]
+ref compiler/GHC/Tc/Types.hs:647:17: Note [Generating fresh names for FFI wrappers]
+ref compiler/GHC/Tc/Types.hs:696:33: Note [Extra dependencies from .hs-boot files]
+ref compiler/GHC/Tc/Types.hs:1145:28: Note [Don't promote data constructors with non-equality contexts]
+ref compiler/GHC/Tc/Types.hs:1172:26: Note [Meaning of IdBindingInfo and ClosedTypeId]
+ref compiler/GHC/Tc/Types.hs:1195:9: Note [Meaning of IdBindingInfo and ClosedTypeId]
+ref compiler/GHC/Tc/Types.hs:1221:36: Note [Bindings with closed types]
+ref compiler/GHC/Tc/Types.hs:1457:47: Note [Care with plugin imports]
+ref compiler/GHC/Tc/Types/Constraint.hs:238:34: Note [NonCanonical Semantics]
+ref compiler/GHC/Tc/Utils/Concrete.hs:246:2: Note [Concrete and Concrete#]
+ref compiler/GHC/Tc/Utils/Env.hs:556:7: Note [Bindings with closed types]
+ref compiler/GHC/Tc/Utils/Env.hs:1128:7: Note [Generating fresh names for ccall wrapper]
+ref compiler/GHC/Tc/Utils/Env.hs:1141:0: Note [Generating fresh names for FFI wrappers]
+ref compiler/GHC/Tc/Utils/Env.hs:1192:7: Note [Placeholder PatSyn kinds]
+ref compiler/GHC/Tc/Utils/TcMType.hs:793:7: Note [Kind checking for GADTs]
+ref compiler/GHC/Tc/Utils/TcMType.hs:1974:33: Note [Silly Type Synonym]
+ref compiler/GHC/Tc/Utils/TcType.hs:529:7: Note [TyVars and TcTyVars]
+ref compiler/GHC/Tc/Utils/Unify.hs:1489:7: Note [Unification preconditions, (TYVAR-TV)]
+ref compiler/GHC/Tc/Utils/Zonk.hs:875:23: Note [Rebindable Syntax and HsExpansion]
+ref compiler/GHC/ThToHs.hs:1738:11: Note [Adding parens for splices]
+ref compiler/GHC/ThToHs.hs:1749:3: Note [Adding parens for splices]
+ref compiler/GHC/Types/Basic.hs:586:17: Note [Safe Haskell isSafeOverlap]
+ref compiler/GHC/Types/Basic.hs:1326:7: Note [Activation competition]
+ref compiler/GHC/Types/Demand.hs:307:25: Note [Preserving Boxity of results is rarely a win]
+ref compiler/GHC/Types/Demand.hs:1100:4: Note [Use one-shot information]
+ref compiler/GHC/Types/Error.hs:348:3: Note [Suppressing Messages]
+ref compiler/GHC/Types/Error.hs:383:28: Note [Suppressing Messages]
+ref compiler/GHC/Types/Name/Occurrence.hs:301:4: Note [Unique OccNames from Template Haskell]
+ref compiler/GHC/Types/SourceText.hs:178:51: Note [Fractional exponent bases]
+ref compiler/GHC/Types/Unique.hs:78:25: Note [Uniques-prelude - Uniques for wired-in Prelude things]
+ref compiler/GHC/Unit/Info.hs:61:66: Note [About Units]
+ref compiler/GHC/Unit/Module/Deps.hs:79:13: Note [Structure of dep_boot_mods]
+ref compiler/GHC/Unit/State.hs:2176:35: Note [Representation of module/name variable]
+ref compiler/GHC/Utils/Monad.hs:391:34: Note [multiShotIO]
+ref compiler/GHC/Utils/Monad.hs:429:47: Note [inlineIdMagic]
+ref compiler/Language/Haskell/Syntax/Binds.hs:226:31: Note [fun_id in Match]
+ref compiler/Language/Haskell/Syntax/Expr.hs:542:31: Note [Record Selectors in the AST]
+ref compiler/Language/Haskell/Syntax/Expr.hs:552:32: Note [Record Selectors in the AST]
+ref compiler/Language/Haskell/Syntax/Expr.hs:1561:32: Note [Quasi-quote overview]
+ref compiler/Language/Haskell/Syntax/Extension.hs:117:42: Note [Constructor cannot happen]
+ref compiler/Language/Haskell/Syntax/Pat.hs:336:12: Note [Disambiguating record fields]
+ref configure.ac:212:10: Note [Linking ghc-bin against threaded stage0 RTS]
+ref docs/core-spec/core-spec.mng:177:6: Note [TyBinders]
+ref ghc/GHCi/UI.hs:3630:25: Note [ModBreaks.decls]
+ref ghc/ghc.mk:62:6: Note [Linking ghc-bin against threaded stage0 RTS]
+ref hadrian/src/Expression.hs:130:30: Note [Linking ghc-bin against threaded stage0 RTS]
+ref libraries/base/GHC/Event/Windows.hsc:753:26: Note [Why use non-waiting getOverlappedResult requests.]
+ref libraries/base/GHC/List.hs:1449:17: Note [Fusion for foldr2]
+ref libraries/base/GHC/List.hs:1463:32: Note [Fusion for foldr2]
+ref libraries/base/GHC/ST.hs:139:7: Note [Definition of runRW#]
+ref testsuite/config/ghc:215:10: Note [WayFlags]
+ref testsuite/driver/testlib.py:152:10: Note [Why is there no stage1 setup function?]
+ref testsuite/driver/testlib.py:156:2: Note [Why is there no stage1 setup function?]
+ref testsuite/mk/boilerplate.mk:259:2: Note [WayFlags]
+ref testsuite/tests/indexed-types/should_compile/T18875.hs:5:18: Note [Type variable cycles in Givens]
+ref testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.hs:30:27: Note [Extra TcS Untouchables]
+ref testsuite/tests/perf/join_points/join005.hs:19:63: Note [Don't CPR join points]
+ref testsuite/tests/perf/should_run/all.T:3:6: Note [Solving from instances when interacting Dicts]
+ref testsuite/tests/polykinds/CuskFam.hs:16:11: Note [Unifying implicit CUSK variables]
+ref testsuite/tests/simplCore/should_compile/T5776.hs:16:7: Note [Simplifying RULE lhs constraints]
+ref testsuite/tests/simplCore/should_compile/simpl018.hs:3:7: Note [Float coercions (unlifted)]
+ref testsuite/tests/typecheck/should_compile/CbvOverlap.hs:5:26: Note [Type variable cycles in Givens]
+ref testsuite/tests/typecheck/should_compile/Improvement.hs:10:12: Note [No reduction for Derived class constraints]
+ref testsuite/tests/typecheck/should_compile/LocalGivenEqs.hs:7:7: Note [When does an implication have given equalities?]
+ref testsuite/tests/typecheck/should_compile/LocalGivenEqs.hs:21:43: Note [Type variable cycles in Givens]
+ref testsuite/tests/typecheck/should_compile/LocalGivenEqs2.hs:4:6: Note [When does an implication have given equalities?]
+ref testsuite/tests/typecheck/should_compile/T9117.hs:3:12: Note [Order of Coercible Instances]
+ref testsuite/tests/typecheck/should_compile/tc200.hs:5:7: Note [Multiple instantiation]
+ref testsuite/tests/typecheck/should_compile/tc228.hs:9:7: Note [Inference and implication constraints]
+ref testsuite/tests/typecheck/should_compile/tc231.hs:12:16: Note [Important subtlety in oclose]
+ref testsuite/tests/typecheck/should_fail/UnliftedNewtypesMultiFieldGadt.hs:11:28: Note [Kind-checking the field type]
+ref testsuite/tests/typecheck/should_fail/tcfail093.hs:13:7: Note [Important subtlety in oclose]
+ref utils/ghc-pkg/Main.hs:644:15: Note [Settings File]
+ref utils/llvm-targets/gen-data-layout.sh:19:6: Note [LLVM Configuration]
+ref utils/notes-util/Notes.hs:30:29: Note [" <> T.unpack x <> "]
+ref utils/notes-util/Notes.hs:67:22: Note [...]
+ref validate:413:14: Note [Why is there no stage1 setup function?]
+
diff --git a/utils/notes-util/Main.hs b/utils/notes-util/Main.hs
index d685001d1c..ceaf4f9b04 100644
--- a/utils/notes-util/Main.hs
+++ b/utils/notes-util/Main.hs
@@ -44,8 +44,11 @@ main = do
files <- lines <$> readFile respFile
return (parseMode mode, files)
[mode] -> do
+ let excludeList =
+ [ "testsuite/tests/linters/notes.stdout"
+ , "utils/notes-util/test" ]
files <- lines <$> readProcess "git" ["ls-tree", "--name-only", "-r", "HEAD"] ""
- return (parseMode mode, files)
+ return (parseMode mode, filter (`notElem` excludeList) files)
_ -> usage
case mode of
diff --git a/utils/notes-util/Makefile b/utils/notes-util/Makefile
new file mode 100644
index 0000000000..176527a3c7
--- /dev/null
+++ b/utils/notes-util/Makefile
@@ -0,0 +1,17 @@
+# -----------------------------------------------------------------------------
+#
+# (c) 2009 The University of Glasgow
+#
+# This file is part of the GHC build system.
+#
+# To understand how the build system works and how to modify it, see
+# https://gitlab.haskell.org/ghc/ghc/wikis/building/architecture
+# https://gitlab.haskell.org/ghc/ghc/wikis/building/modifying
+#
+# -----------------------------------------------------------------------------
+
+dir = utils/notes-util
+TOP = ../..
+include $(TOP)/mk/sub-makefile.mk
+
+FAST_MAKE_OPTS += stage=none
diff --git a/utils/notes-util/expected-broken-note-refs b/utils/notes-util/expected-broken-note-refs
deleted file mode 100644
index c0c291f06b..0000000000
--- a/utils/notes-util/expected-broken-note-refs
+++ /dev/null
@@ -1,853 +0,0 @@
-ref .mailmap: Note [usrbincc]
-ref .mailmap: Note [geoffw]
-ref .mailmap: Note [zhuang]
-ref .mailmap: Note [uid245]
-ref .mailmap: Note [geoffw]
-ref .mailmap: Note [uid245]
-ref .mailmap: Note [usrbincc]
-ref .mailmap: Note [zhuang]
-ref Makefile: Note [install-strip]
-ref Makefile: Note [install-strip]
-ref Makefile: Note [install-strip]
-ref Makefile: Note [validate and testsuite speed]
-ref bindisttest/install: Note [Spaces in TEST_HC]
-ref compiler/CodeGen.Platform.h: Note [esi/edi/ebp not allocatable]
-ref compiler/CodeGen.Platform.h: Note [esi/edi/ebp not allocatable]
-ref compiler/GHC/Builtin/Names.hs: Note [TyConRepNames for non-wired-in TyCons]
-ref compiler/GHC/ByteCode/Asm.hs: Note [GHCi tuple layout]
-ref compiler/GHC/ByteCode/Types.hs: Note [Syncing breakpoint info]
-ref compiler/GHC/Cmm/CLabel.hs: Note [Proc-point local block entry-point]
-ref compiler/GHC/Cmm/CLabel.hs: Note [Proc-point local block entry-point]
-ref compiler/GHC/Cmm/CLabel.hs: Note [Proc-point local block entry-point]
-ref compiler/GHC/Cmm/CLabel.hs: Note [.LCTOC1 in PPC PIC code]
-ref compiler/GHC/Cmm/Dataflow.hs: Note [Backward vs forward analysis]
-ref compiler/GHC/Cmm/Dataflow.hs: Note [Backward vs forward analysis]
-ref compiler/GHC/Cmm/Dataflow.hs: Note [No old fact]
-ref compiler/GHC/Cmm/Dataflow.hs: Note [No old fact]
-ref compiler/GHC/Cmm/DebugBlock.hs: Note [Splitting DebugBlocks]
-ref compiler/GHC/Cmm/Expr.hs: Note [Continuation BlockId]
-ref compiler/GHC/Cmm/Expr.hs: Note [Continuation BlockId]
-ref compiler/GHC/Cmm/Expr.hs: Note [Overlapping global registers]
-ref compiler/GHC/Cmm/Expr.hs: Note [GHCi tuple layout]
-ref compiler/GHC/Cmm/Graph.hs: Note [Width of parameters]
-ref compiler/GHC/Cmm/Graph.hs: Note [Width of parameters]
-ref compiler/GHC/Cmm/Graph.hs: Note [Width of parameters]
-ref compiler/GHC/Cmm/Graph.hs: Note [Width of parameters]
-ref compiler/GHC/Cmm/Info/Build.hs: Note [STATIC_LINK fields]
-ref compiler/GHC/Cmm/Info/Build.hs: Note [STATIC_LINK fields]
-ref compiler/GHC/Cmm/Info/Build.hs: Note [recursive SRTs]
-ref compiler/GHC/Cmm/Info/Build.hs: Note [recursive SRTs]
-ref compiler/GHC/Cmm/Info/Build.hs: Note [recursive SRTs]
-ref compiler/GHC/Cmm/Info/Build.hs: Note [recursive SRTs]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [Stack Layout]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [Two pass approach]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [Two pass approach]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [diamond proc point]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [diamond proc point]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [SP old/young offsets]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [SP old/young offsets]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [Lower safe foreign calls]
-ref compiler/GHC/Cmm/LayoutStack.hs: Note [safe foreign call convention]
-ref compiler/GHC/Cmm/Node.hs: Note [CmmTick scoping details]
-ref compiler/GHC/Cmm/Node.hs: Note [Continuation BlockIds]
-ref compiler/GHC/Cmm/Node.hs: Note [CmmTick scoping details]
-ref compiler/GHC/Cmm/Parser.y: Note [Syntax of .cmm files]
-ref compiler/GHC/Cmm/Pipeline.hs: Note [unreachable blocks]
-ref compiler/GHC/Cmm/Pipeline.hs: Note [inconsistent-pic-reg]
-ref compiler/GHC/Cmm/Pipeline.hs: Note [unreachable blocks]
-ref compiler/GHC/Cmm/ProcPoint.hs: Note [No simple dataflow]
-ref compiler/GHC/Cmm/ProcPoint.hs: Note [Continuation BlockIds]
-ref compiler/GHC/Cmm/ProcPoint.hs: Note [Direct reachability]
-ref compiler/GHC/Cmm/ProcPoint.hs: Note [No simple dataflow]
-ref compiler/GHC/Cmm/Sink.hs: Note [Keeping assignemnts mentioned in skipped RHSs]
-ref compiler/GHC/Cmm/Sink.hs: Note [Keeping assignemnts mentioned in skipped RHSs]
-ref compiler/GHC/Cmm/Sink.hs: Note [improveConditional]
-ref compiler/GHC/Cmm/Sink.hs: Note [Lower safe foreign calls]
-ref compiler/GHC/Cmm/Utils.hs: Note [Overlapping global registers]
-ref compiler/GHC/CmmToAsm/AArch64/CodeGen.hs: Note [General layout of an NCG]
-ref compiler/GHC/CmmToAsm/AArch64/CodeGen.hs: Note [CSET]
-ref compiler/GHC/CmmToAsm/AArch64/CodeGen.hs: Note [CSET]
-ref compiler/GHC/CmmToAsm/AArch64/Ppr.hs: Note [Subsections Via Symbols]
-ref compiler/GHC/CmmToAsm/AArch64/Ppr.hs: Note [Always use objects for info tables]
-ref compiler/GHC/CmmToAsm/CFG.hs: Note [Inverting Conditional Branches]
-ref compiler/GHC/CmmToAsm/CFG.hs: Note [Updating the CFG during shortcutting]
-ref compiler/GHC/CmmToAsm/Dwarf.hs: Note [Splitting DebugBlocks]
-ref compiler/GHC/CmmToAsm/Dwarf.hs: Note [Splitting DebugBlocks]
-ref compiler/GHC/CmmToAsm/Dwarf/Types.hs: Note [Info offset]
-ref compiler/GHC/CmmToAsm/PIC.hs: Note [.LCTOC1 in PPC PIC code]
-ref compiler/GHC/CmmToAsm/PIC.hs: Note [.LCTOC1 in PPC PIC code]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [Power instruction format]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [Power instruction format]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [Seemingly useless cmp and bne]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [Seemingly useless cmp and bne]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [implicit register in PPC PIC code]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [.LCTOC1 in PPC PIC code]
-ref compiler/GHC/CmmToAsm/PPC/CodeGen.hs: Note [implicit register in PPC PIC code]
-ref compiler/GHC/CmmToAsm/PPC/Ppr.hs: Note [Subsections Via Symbols]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [SSE Parity Checks]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [DIV/IDIV for bytes]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [SSE Parity Checks]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [SSE Parity Checks]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [DIV/IDIV for bytes]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [DIV/IDIV for bytes]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [rts/StgCRun.c : Stack Alignment on X86]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [rts/StgCRun.c : Stack Alignment on X86]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [SSE Parity Checks]
-ref compiler/GHC/CmmToAsm/X86/CodeGen.hs: Note [SSE Parity Checks]
-ref compiler/GHC/CmmToAsm/X86/Instr.hs: Note [x86 Floating point precision]
-ref compiler/GHC/CmmToAsm/X86/Instr.hs: Note [Windows stack layout]
-ref compiler/GHC/CmmToAsm/X86/Instr.hs: Note [Windows stack allocations]
-ref compiler/GHC/CmmToAsm/X86/Instr.hs: Note [Windows stack layout]
-ref compiler/GHC/CmmToAsm/X86/Instr.hs: Note [extra spill slots]
-ref compiler/GHC/CmmToAsm/X86/Ppr.hs: Note [Subsections Via Symbols]
-ref compiler/GHC/CmmToAsm/X86/Ppr.hs: Note [Subsections Via Symbols]
-ref compiler/GHC/CmmToC.hs: Note [StgWord alignment]
-ref compiler/GHC/CmmToC.hs: Note [StgWord alignment]
-ref compiler/GHC/CmmToC.hs: Note [Zero-extended sub-word signed results]
-ref compiler/GHC/CmmToLlvm/Base.hs: Note [Llvm Forward References]
-ref compiler/GHC/CmmToLlvm/Config.hs: Note [LLVM Configuration]
-ref compiler/GHC/Core.hs: Note [Extra args in rule matching]
-ref compiler/GHC/Core/Coercion.hs: Note [Unused coercion variable in ForAllCo]
-ref compiler/GHC/Core/Coercion.hs: Note [Unused coercion variable in ForAllCo]
-ref compiler/GHC/Core/Coercion.hs: Note [Unused coercion variable in ForAllCo]
-ref compiler/GHC/Core/Coercion.hs: Note [liftCoSubstVarBndr]
-ref compiler/GHC/Core/Coercion.hs: Note [liftCoSubstVarBndr]
-ref compiler/GHC/Core/Coercion/Axiom.hs: Note [Compatibility checking]
-ref compiler/GHC/Core/Lint.hs: Note [Checking representation-polymorphic data constructors]
-ref compiler/GHC/Core/Lint.hs: Note [Unused coercion variable in ForAllCo]
-ref compiler/GHC/Core/Lint.hs: Note [Rules and join points]
-ref compiler/GHC/Core/Lint.hs: Note [Unused coercion variable in ForAllCo]
-ref compiler/GHC/Core/Make.hs: Note [Worker/wrapper for INLINEABLE functions]
-ref compiler/GHC/Core/Opt/Arity.hs: Note [Expanding newtypes]
-ref compiler/GHC/Core/Opt/Arity.hs: Note [Exciting arity]
-ref compiler/GHC/Core/Opt/Arity.hs: Note [Dealing with bottom (1)]
-ref compiler/GHC/Core/Opt/Arity.hs: Note [Dealing with bottom (2)]
-ref compiler/GHC/Core/Opt/Arity.hs: Note [Check for reflexive casts in eta-expansion]
-ref compiler/GHC/Core/Opt/Arity.hs: Note [The EtaInfo mechansim]
-ref compiler/GHC/Core/Opt/CSE.hs: Note [Type-let]
-ref compiler/GHC/Core/Opt/CallArity.hs: Note [Analysis I: The arity analysis]
-ref compiler/GHC/Core/Opt/CallArity.hs: Note [Analysis II: The Co-Called analysis]
-ref compiler/GHC/Core/Opt/CallArity.hs: Note [Analysing top-level-binds]
-ref compiler/GHC/Core/Opt/CallArity.hs: Note [Analysis II: The Co-Called analysis]
-ref compiler/GHC/Core/Opt/CallArity.hs: Note [Analysis I: The arity analysis]
-ref compiler/GHC/Core/Opt/CallArity.hs: Note [Analysis II: The Co-Called analysis]
-ref compiler/GHC/Core/Opt/ConstantFold.hs: Note [negative zero]
-ref compiler/GHC/Core/Opt/ConstantFold.hs: Note [negative zero]
-ref compiler/GHC/Core/Opt/ConstantFold.hs: Note [negative zero]
-ref compiler/GHC/Core/Opt/ConstantFold.hs: Note [dataToTag#]
-ref compiler/GHC/Core/Opt/ConstantFold.hs: Note [dataToTag#]
-ref compiler/GHC/Core/Opt/FloatIn.hs: Note [extra_fvs (1,2)]
-ref compiler/GHC/Core/Opt/FloatIn.hs: Note [extra_fvs (1,2)]
-ref compiler/GHC/Core/Opt/LiberateCase.hs: Note [Not bottoming ids]
-ref compiler/GHC/Core/Opt/OccurAnal.hs: Note [Rules for imported functions]
-ref compiler/GHC/Core/Opt/OccurAnal.hs: Note [Self-recursive rules]
-ref compiler/GHC/Core/Opt/OccurAnal.hs: Note [Rules and loop breakers]
-ref compiler/GHC/Core/Opt/OccurAnal.hs: Note [Loop breaking]
-ref compiler/GHC/Core/Opt/OccurAnal.hs: Note [Eta-expansion inside stable unfoldings]
-ref compiler/GHC/Core/Opt/Pipeline.hs: Note [Simplifying the left-hand side of a RULE]
-ref compiler/GHC/Core/Opt/Pipeline.hs: Note [Rules and indirect-zapping]
-ref compiler/GHC/Core/Opt/Pipeline.hs: Note [Messing up the exported Id's IdInfo]
-ref compiler/GHC/Core/Opt/Pipeline.hs: Note [Messing up the exported Id's IdInfo]
-ref compiler/GHC/Core/Opt/SetLevels.hs: Note [Top level scope]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [Wrapper NoUserInline]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [case-of-scc-of-case]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [case-of-scc-of-case]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [case-of-scc-of-case]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [zapSubstEnv]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [RULEs apply to simplified arguments]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [zapSubstEnv]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [Case binder next]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [Suppressing binder-swaps on linear case]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [Lambda-bound unfoldings]
-ref compiler/GHC/Core/Opt/Simplify.hs: Note [Do not eta-expand trivial expressions]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [The hole type in ApplyToTy/Val]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [The hole type in ApplyToTy/Val]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [RHS of lets]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [The hole type in ApplyToTy/Val]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [Gentle mode]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [Simplfying rules]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [Eta-expanding lambdas]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [Nerge nested cases]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [Eliminate identity case]
-ref compiler/GHC/Core/Opt/Simplify/Utils.hs: Note [Scrutinee constant folding]
-ref compiler/GHC/Core/Opt/SpecConstr.hs: Note [ScrutOcc]
-ref compiler/GHC/Core/Opt/Specialise.hs: Note [Missed specialization for ClassOps]
-ref compiler/GHC/Core/Opt/Specialise.hs: Note [Inline specialisation]
-ref compiler/GHC/Core/Opt/Specialise.hs: Note [Arity decrease]
-ref compiler/GHC/Core/Opt/WorkWrap.hs: Note [Demand on the Worker]
-ref compiler/GHC/Core/Opt/WorkWrap.hs: Note [Wrapper NoUserInline]
-ref compiler/GHC/Core/Opt/WorkWrap.hs: Note [About the NameSorts]
-ref compiler/GHC/Core/Opt/WorkWrap.hs: Note [About the NameSorts]
-ref compiler/GHC/Core/Opt/WorkWrap/Utils.hs: Note [Boxity Analysis]
-ref compiler/GHC/Core/Rules.hs: Note [Coercion argument]
-ref compiler/GHC/Core/Rules.hs: Note [Eta reduction in the target]
-ref compiler/GHC/Core/Rules.hs: Note [Eta reduction in the target]
-ref compiler/GHC/Core/Subst.hs: Note [Apply once]
-ref compiler/GHC/Core/Subst.hs: Note [Extending the TCvSubst]
-ref compiler/GHC/Core/TyCo/FVs.hs: Note [Free variables of Coercions]
-ref compiler/GHC/Core/TyCo/FVs.hs: Note [Unused coercion variable in ForAllCo]
-ref compiler/GHC/Core/TyCo/Ppr.hs: Note [IfaceType and pretty-printing]
-ref compiler/GHC/Core/TyCo/Rep.hs: Note [What prevents a constraint from floating]
-ref compiler/GHC/Core/TyCo/Subst.hs: Note [Extending the TCvSubst]
-ref compiler/GHC/Core/TyCo/Subst.hs: Note [Extending the TCvSubst]
-ref compiler/GHC/Core/TyCon.hs: Note [Promoted GADT data construtors]
-ref compiler/GHC/Core/TyCon.hs: Note [Promoted GADT data construtors]
-ref compiler/GHC/Core/TyCon.hs: Note [bad unsafe coercion]
-ref compiler/GHC/Core/TyCon.hs: Note [The Purely Kinded Invariant]
-ref compiler/GHC/Core/TyCon.hs: Note [Sharing nullary TyCons]
-ref compiler/GHC/Core/Unfold.hs: Note [RHS of lets]
-ref compiler/GHC/Core/Unfold.hs: Note [INLINE for small functions (3)]
-ref compiler/GHC/Core/Unfold.hs: Note [Unfold info lazy contexts]
-ref compiler/GHC/Core/Unfold/Make.hs: Note [DFunUnfoldings]
-ref compiler/GHC/Core/Unify.hs: Note [Unification result]
-ref compiler/GHC/Core/Unify.hs: Note [INLINE pragmas and (>>)]
-ref compiler/GHC/Core/Utils.hs: Note [ _ -> [con1]
-ref compiler/GHC/Core/Utils.hs: Note [Interaction of exprIsCheap and lone variables]
-ref compiler/GHC/Core/Utils.hs: Note [exprIsHNF Tick]
-ref compiler/GHC/Core/Utils.hs: Note [exprIsHNF Tick]
-ref compiler/GHC/Core/Utils.hs: Note [Arity care]
-ref compiler/GHC/Core/Utils.hs: Note [Arity care]
-ref compiler/GHC/CoreToStg.hs: Note [Nullary unboxed tuple]
-ref compiler/GHC/CoreToStg/Prep.hs: Note [CorePrep Overview]
-ref compiler/GHC/CoreToStg/Prep.hs: Note [Floating Ticks in CorePrep]
-ref compiler/GHC/CoreToStg/Prep.hs: Note [Floating Ticks in CorePrep]
-ref compiler/GHC/Data/FastString.hs: Note [Updating the FastString table]
-ref compiler/GHC/Data/FastString.hs: Note [Updating the FastString table]
-ref compiler/GHC/Driver/CmdLine.hs: Note [Handling errors when parsing flags]
-ref compiler/GHC/Driver/CmdLine.hs: Note [Handling errors when parsing commandline flags]
-ref compiler/GHC/Driver/Flags.hs: Note [Valid hole fits include]
-ref compiler/GHC/Driver/Flags.hs: Note [Print Hexadecimal Literals]
-ref compiler/GHC/Driver/Main.hs: Note [simpleTidyPgm - mkBootModDetailsTc]
-ref compiler/GHC/Driver/Make.hs: Note [Unused packages]
-ref compiler/GHC/Driver/Make.hs: Note [GHC Heap Invariants]
-ref compiler/GHC/Driver/Make.hs: Note [GHC Heap Invariants]
-ref compiler/GHC/Driver/Pipeline/Execute.hs: Note [Clamping of llc optimizations]
-ref compiler/GHC/Driver/Pipeline/Execute.hs: Note [Don't normalise input filenames]
-ref compiler/GHC/Driver/Pipeline/Execute.hs: Note [Don't normalise input filenames]
-ref compiler/GHC/Driver/Session.hs: Note [LLVM Configuration]
-ref compiler/GHC/Driver/Session.hs: Note [LLVM Configuration]
-ref compiler/GHC/Driver/Session.hs: Note [Handling errors when parsing commandline flags]
-ref compiler/GHC/Driver/Session.hs: Note [GHC.Driver.Main . Safe Haskell Inference]
-ref compiler/GHC/Driver/Session.hs: Note [Eta-reduction in -O0]
-ref compiler/GHC/Driver/Session.hs: Note [No PIE when linking]
-ref compiler/GHC/Hs/Expr.hs: Note [Applicative BodyStmt]
-ref compiler/GHC/Hs/Expr.hs: Note [Applicative BodyStmt]
-ref compiler/GHC/Hs/Extension.hs: Note [Strict argument type constraints]
-ref compiler/GHC/HsToCore/Binds.hs: Note [AbsBinds wrappers]
-ref compiler/GHC/HsToCore/Binds.hs: Note [Free dictionaries]
-ref compiler/GHC/HsToCore/Binds.hs: Note [Free tyvars in rule LHS]
-ref compiler/GHC/HsToCore/Binds.hs: Note [Free dictionaries in rule LHS]
-ref compiler/GHC/HsToCore/Binds.hs: Note [Free dictionaries]
-ref compiler/GHC/HsToCore/Binds.hs: Note [Dead spec binders]
-ref compiler/GHC/HsToCore/Coverage.hs: Note [inline sccs]
-ref compiler/GHC/HsToCore/Coverage.hs: Note [inline sccs]
-ref compiler/GHC/HsToCore/Coverage.hs: Note [inline sccs]
-ref compiler/GHC/HsToCore/Coverage.hs: Note [inline sccs]
-ref compiler/GHC/HsToCore/Coverage.hs: Note [freevars]
-ref compiler/GHC/HsToCore/Docs.hs: Note [1]
-ref compiler/GHC/HsToCore/Docs.hs: Note [1]
-ref compiler/GHC/HsToCore/Expr.hs: Note [Checking representation-polymorphic data constructors]
-ref compiler/GHC/HsToCore/Expr.hs: Note [NOINLINE someNatVal]
-ref compiler/GHC/HsToCore/Match.hs: Note [Empty case expressions]
-ref compiler/GHC/HsToCore/Match.hs: Note [Case elimination: lifted case]
-ref compiler/GHC/HsToCore/Pmc/Desugar.hs: Note [Order of guards matter]
-ref compiler/GHC/HsToCore/Pmc/Solver.hs: Note [COMPLETE sets on data families]
-ref compiler/GHC/HsToCore/Pmc/Solver.hs: Note [Pos/Neg invariant]
-ref compiler/GHC/HsToCore/Pmc/Solver.hs: Note [Soundness and Completeness]
-ref compiler/GHC/HsToCore/Pmc/Solver.hs: Note [Soundness and Completeness]
-ref compiler/GHC/HsToCore/Types.hs: Note [Generating fresh names for FFI wrappers]
-ref compiler/GHC/HsToCore/Types.hs: Note [Note [Long-distance information]
-ref compiler/GHC/HsToCore/Utils.hs: Note [MatchIds]
-ref compiler/GHC/HsToCore/Utils.hs: Note [Don't CPR join points]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Updating HieAst for changes in the GHC AST]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Capturing Scopes and other non local information]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Name Remapping]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Name Remapping]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Capturing Scopes and other non local information]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [TyVar Scopes]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Scoping Rules for SigPat]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Updating HieAst for changes in the GHC AST]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Name Remapping]
-ref compiler/GHC/Iface/Ext/Ast.hs: Note [Scoping Rules for SigPat]
-ref compiler/GHC/Iface/Load.hs: Note [GHC Heap Invariants]
-ref compiler/GHC/Iface/Recomp.hs: Note [default method Name]
-ref compiler/GHC/Iface/Recomp.hs: Note [default method Name]
-ref compiler/GHC/Iface/Recomp.hs: Note [default method Name]
-ref compiler/GHC/Iface/Recomp/Flags.hs: Note [path flags and recompilation]
-ref compiler/GHC/Iface/Recomp/Flags.hs: Note [path flags and recompilation]
-ref compiler/GHC/Iface/Syntax.hs: Note [Minimal complete definition]
-ref compiler/GHC/Iface/Syntax.hs: Note [Minimal complete definition]
-ref compiler/GHC/Linker/Loader.hs: Note [preload packages]
-ref compiler/GHC/Linker/Loader.hs: Note [preload packages]
-ref compiler/GHC/Linker/Static.hs: Note [No PIE when linking]
-ref compiler/GHC/Linker/Types.hs: Note [Grant plan for static forms]
-ref compiler/GHC/Parser/Lexer.x: Note [Lexing NumericUnderscores extension]
-ref compiler/GHC/Parser/Lexer.x: Note [Lexing NumericUnderscores extension]
-ref compiler/GHC/Rename/Env.hs: Note [ Unbound vs Ambiguous Names ]
-ref compiler/GHC/Rename/Env.hs: Note [ Unbound vs Ambiguous Names ]
-ref compiler/GHC/Rename/Env.hs: Note [ Unbound vs Ambiguous Names ]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo and strict patterns]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo and refutable patterns]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo and strict patterns]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo and strict patterns]
-ref compiler/GHC/Rename/Expr.hs: Note [ApplicativeDo and refutable patterns]
-ref compiler/GHC/Rename/HsType.hs: Note [CUSKs: Complete user-supplied kind signatures]
-ref compiler/GHC/Rename/Pat.hs: Note [Disambiguating record fields]
-ref compiler/GHC/Rename/Splice.hs: Note [RunSplice ThLevel]
-ref compiler/GHC/Rename/Splice.hs: Note [Splices]
-ref compiler/GHC/Rename/Unbound.hs: Note [Only-quals]
-ref compiler/GHC/Rename/Unbound.hs: Note [Only-quals]
-ref compiler/GHC/Rename/Unbound.hs: Note [Related name spaces]
-ref compiler/GHC/Runtime/Eval.hs: Note [Syncing breakpoint info]
-ref compiler/GHC/Runtime/Eval.hs: Note [Syncing breakpoint info]
-ref compiler/GHC/Runtime/Eval.hs: Note [Querying instances for a type]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [Remote GHCi]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [External GHCi pointers]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [Remote Template Haskell]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [uninterruptibleMask_]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [uninterruptibleMask_ and interpCmd]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [loadObj and relative paths]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [loadObj and relative paths]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [loadObj and relative paths]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [loadObj and relative paths]
-ref compiler/GHC/Runtime/Interpreter.hs: Note [External GHCi pointers]
-ref compiler/GHC/Settings/IO.hs: Note [tooldir: How GHC finds mingw on Windows]
-ref compiler/GHC/StgToByteCode.hs: Note [generating code for top-level string literal bindings]
-ref compiler/GHC/StgToByteCode.hs: Note [generating code for top-level string literal bindings]
-ref compiler/GHC/StgToByteCode.hs: Note [GHCi unboxed tuples stack spills]
-ref compiler/GHC/StgToByteCode.hs: Note [GHCi tuple layout]
-ref compiler/GHC/StgToByteCode.hs: Note [CASEFAIL]
-ref compiler/GHC/StgToByteCode.hs: Note [CASEFAIL]
-ref compiler/GHC/StgToByteCode.hs: Note [generating code for top-level string literal bindings]
-ref compiler/GHC/StgToCmm.hs: Note [codegen-split-init]
-ref compiler/GHC/StgToCmm.hs: Note [pipeline-split-init]
-ref compiler/GHC/StgToCmm/Bind.hs: Note [cgBind rec]
-ref compiler/GHC/StgToCmm/Closure.hs: Note [Evaluating functions with profiling]
-ref compiler/GHC/StgToCmm/DataCon.hs: Note [About the NameSorts]
-ref compiler/GHC/StgToCmm/DataCon.hs: Note [CHARLIKE and INTLIKE closures.]
-ref compiler/GHC/StgToCmm/DataCon.hs: Note [About the NameSorts]
-ref compiler/GHC/StgToCmm/Expr.hs: Note [case on bool]
-ref compiler/GHC/StgToCmm/Expr.hs: Note [dataToTag#]
-ref compiler/GHC/StgToCmm/Expr.hs: Note [alg-alt heap check]
-ref compiler/GHC/StgToCmm/Foreign.hs: Note [safe foreign call convention]
-ref compiler/GHC/StgToCmm/Foreign.hs: Note [safe foreign call convention]
-ref compiler/GHC/StgToCmm/Foreign.hs: Note [lower safe foreign calls]
-ref compiler/GHC/StgToCmm/Foreign.hs: Note [safe foreign call convention]
-ref compiler/GHC/StgToCmm/Foreign.hs: Note [GHCi tuple layout]
-ref compiler/GHC/StgToCmm/Heap.hs: Note [STATIC_LINK fields]
-ref compiler/GHC/StgToCmm/Heap.hs: Note [stg_gc arguments]
-ref compiler/GHC/StgToCmm/Heap.hs: Note [stg_gc arguments]
-ref compiler/GHC/StgToCmm/Layout.hs: Note [avoid intermediate PAPs]
-ref compiler/GHC/StgToCmm/Layout.hs: Note [diamond proc point]
-ref compiler/GHC/StgToCmm/Layout.hs: Note [avoid intermediate PAPs]
-ref compiler/GHC/StgToCmm/Layout.hs: Note [over-saturated calls]
-ref compiler/GHC/StgToCmm/Layout.hs: Note [over-saturated calls]
-ref compiler/GHC/StgToCmm/Monad.hs: Note [sharing continuations]
-ref compiler/GHC/StgToCmm/Monad.hs: Note [sharing continuations]
-ref compiler/GHC/SysTools.hs: Note [Windows stack usage]
-ref compiler/GHC/SysTools/BaseDir.hs: Note [tooldir: How GHC finds mingw on Windows]
-ref compiler/GHC/SysTools/BaseDir.hs: Note [tooldir: How GHC finds mingw on Windows]
-ref compiler/GHC/SysTools/Info.hs: Note [Run-time linker info]
-ref compiler/GHC/SysTools/Info.hs: Note [ELF needed shared libs]
-ref compiler/GHC/SysTools/Info.hs: Note [Windows static libGCC]
-ref compiler/GHC/SysTools/Info.hs: Note [Run-time linker info]
-ref compiler/GHC/SysTools/Info.hs: Note [ELF needed shared libs]
-ref compiler/GHC/SysTools/Info.hs: Note [ELF needed shared libs]
-ref compiler/GHC/SysTools/Info.hs: Note [ELF needed shared libs]
-ref compiler/GHC/SysTools/Info.hs: Note [Windows stack usage]
-ref compiler/GHC/SysTools/Info.hs: Note [Windows static libGCC]
-ref compiler/GHC/SysTools/Info.hs: Note [Run-time linker info]
-ref compiler/GHC/SysTools/Tasks.hs: Note [Run-time linker info]
-ref compiler/GHC/Tc/Deriv/Utils.hs: Note [Newtype deriving and unused constructors]
-ref compiler/GHC/Tc/Errors.hs: Note [Fail fast on kind errors]
-ref compiler/GHC/Tc/Errors.hs: Note [Highlighting ambiguous type variables]
-ref compiler/GHC/Tc/Errors/Hole.hs: Note [Relevant Constraints]
-ref compiler/GHC/Tc/Errors/Hole.hs: Note [Speeding up valid-hole fits]
-ref compiler/GHC/Tc/Errors/Ppr.hs: Note [Highlighting ambiguous type variables]
-ref compiler/GHC/Tc/Errors/Types.hs: Note [Migrating TcM messages]
-ref compiler/GHC/Tc/Gen/Bind.hs: Note [Existentials in pattern bindings]
-ref compiler/GHC/Tc/Gen/Export.hs: Note [Modules without a module header]
-ref compiler/GHC/Tc/Gen/Export.hs: Note [Modules without a module header]
-ref compiler/GHC/Tc/Gen/Expr.hs: Note [Disambiguating record fields]
-ref compiler/GHC/Tc/Gen/Expr.hs: Note [Disambiguating record fields]
-ref compiler/GHC/Tc/Gen/Expr.hs: Note [Deprecating ambiguous fields]
-ref compiler/GHC/Tc/Gen/Foreign.hs: Note [Expanding newtypes]
-ref compiler/GHC/Tc/Gen/HsType.hs: Note [Skolem escape prevention]
-ref compiler/GHC/Tc/Gen/HsType.hs: Note [Body kind of HsForAllTy]
-ref compiler/GHC/Tc/Gen/HsType.hs: Note [Matching a kind sigature with a declaration]
-ref compiler/GHC/Tc/Gen/HsType.hs: Note [Cloning for type variable binder]
-ref compiler/GHC/Tc/Gen/Match.hs: Note [GroupStmt binder map]
-ref compiler/GHC/Tc/Gen/Match.hs: Note [GroupStmt binder map]
-ref compiler/GHC/Tc/Gen/Match.hs: Note [typechecking ApplicativeStmt]
-ref compiler/GHC/Tc/Gen/Pat.hs: Note [Typing patterns in pattern bindings]
-ref compiler/GHC/Tc/Gen/Pat.hs: Note [Pattern coercions]
-ref compiler/GHC/Tc/Gen/Pat.hs: Note [Binding when lookup up instances]
-ref compiler/GHC/Tc/Gen/Pat.hs: Note [Matching polytyped patterns]
-ref compiler/GHC/Tc/Gen/Pat.hs: Note [Pattern coercions]
-ref compiler/GHC/Tc/Gen/Sig.hs: Note [Overview of type signatures]
-ref compiler/GHC/Tc/Gen/Sig.hs: Note [solveEqualities in tcPatSynSig]
-ref compiler/GHC/Tc/Gen/Splice.hs: Note [RunSplice ThLevel]
-ref compiler/GHC/Tc/Gen/Splice.hs: Note [Remote Template Haskell]
-ref compiler/GHC/Tc/Gen/Splice.hs: Note [Remote Template Haskell]
-ref compiler/GHC/Tc/Gen/Splice.hs: Note [TH recover with -fexternal-interpreter]
-ref compiler/GHC/Tc/Gen/Splice.hs: Note [TH recover with -fexternal-interpreter]
-ref compiler/GHC/Tc/Instance/Family.hs: Note [Constrained family instances]
-ref compiler/GHC/Tc/Instance/FunDeps.hs: Note [Coverage Condition]
-ref compiler/GHC/Tc/Module.hs: Note [Extra dependencies from .hs-boot files]
-ref compiler/GHC/Tc/Module.hs: Note [Root-main id]
-ref compiler/GHC/Tc/Solver.hs: Note [Kind generalisation and SigTvs]
-ref compiler/GHC/Tc/Solver/Canonical.hs: Note [The superclasses story]
-ref compiler/GHC/Tc/Solver/Canonical.hs: Note [Canonical LHS]
-ref compiler/GHC/Tc/Solver/Canonical.hs: Note [Do not decompose given polytype equalities]
-ref compiler/GHC/Tc/Solver/Interact.hs: Note [No touchables as FunEq RHS]
-ref compiler/GHC/Tc/Solver/Interact.hs: Note [The improvement story]
-ref compiler/GHC/Tc/Solver/Interact.hs: Note [The equality class story]
-ref compiler/GHC/Tc/Solver/Monad.hs: Note [Speeding up valid-hole fits]
-ref compiler/GHC/Tc/Solver/Rewrite.hs: Note [Stability of rewriting]
-ref compiler/GHC/Tc/TyCl.hs: Note [Single function non-recursive binding special-case]
-ref compiler/GHC/Tc/TyCl.hs: Note [Unification variables need fresh Names]
-ref compiler/GHC/Tc/TyCl.hs: Note [TyConBinders for the result kind signatures of a data type]
-ref compiler/GHC/Tc/TyCl.hs: Note [rejigCon and c.f. Note [Check role annotations in a second pass]
-ref compiler/GHC/Tc/TyCl/Instance.hs: Note [Generalising in tcFamTyPatsGuts]
-ref compiler/GHC/Tc/Types.hs: Note [Generating fresh names for FFI wrappers]
-ref compiler/GHC/Tc/Types.hs: Note [Extra dependencies from .hs-boot files]
-ref compiler/GHC/Tc/Types.hs: Note [RunSplice ThLevel]
-ref compiler/GHC/Tc/Types.hs: Note [RunSplice ThLevel]
-ref compiler/GHC/Tc/Types.hs: Note [Don't promote data constructors with non-equality contexts]
-ref compiler/GHC/Tc/Types.hs: Note [Meaning of IdBindingInfo and ClosedTypeId]
-ref compiler/GHC/Tc/Types.hs: Note [Meaning of IdBindingInfo and ClosedTypeId]
-ref compiler/GHC/Tc/Types.hs: Note [Bindings with closed types]
-ref compiler/GHC/Tc/Types.hs: Note [Care with plugin imports]
-ref compiler/GHC/Tc/Types/Constraint.hs: Note [NonCanonical Semantics]
-ref compiler/GHC/Tc/Types/Constraint.hs: Note [The improvement story]
-ref compiler/GHC/Tc/Utils/Concrete.hs: Note [Concrete and Concrete#]
-ref compiler/GHC/Tc/Utils/Env.hs: Note [Bindings with closed types]
-ref compiler/GHC/Tc/Utils/Env.hs: Note [Generating fresh names for ccall wrapper]
-ref compiler/GHC/Tc/Utils/Env.hs: Note [Generating fresh names for FFI wrappers]
-ref compiler/GHC/Tc/Utils/Env.hs: Note [Placeholder PatSyn kinds]
-ref compiler/GHC/Tc/Utils/TcMType.hs: Note [Kind checking for GADTs]
-ref compiler/GHC/Tc/Utils/TcType.hs: Note [TyVars and TcTyVars]
-ref compiler/GHC/Tc/Utils/Unify.hs: Note [Unification preconditions, (TYVAR-TV)]
-ref compiler/GHC/Tc/Utils/Zonk.hs: Note [Rebindable Syntax and HsExpansion]
-ref compiler/GHC/ThToHs.hs: Note [Operator association]
-ref compiler/GHC/ThToHs.hs: Note [Operator association]
-ref compiler/GHC/ThToHs.hs: Note [Operator association]
-ref compiler/GHC/ThToHs.hs: Note [Adding parens for splices]
-ref compiler/GHC/ThToHs.hs: Note [Adding parens for splices]
-ref compiler/GHC/Types/Basic.hs: Note [Safe Haskell isSafeOverlap]
-ref compiler/GHC/Types/Basic.hs: Note [Activation competition]
-ref compiler/GHC/Types/Demand.hs: Note [Preserving Boxity of results is rarely a win]
-ref compiler/GHC/Types/Demand.hs: Note [Use one-shot information]
-ref compiler/GHC/Types/Error.hs: Note [Suppressing Messages]
-ref compiler/GHC/Types/Error.hs: Note [Suppressing Messages]
-ref compiler/GHC/Types/Id/Make.hs: Note [Left folds via right fold]
-ref compiler/GHC/Types/Name.hs: Note [About the NameSorts]
-ref compiler/GHC/Types/Name.hs: Note [About the NameSorts]
-ref compiler/GHC/Types/Name/Occurrence.hs: Note [Data Constructors]
-ref compiler/GHC/Types/Name/Occurrence.hs: Note [Unique OccNames from Template Haskell]
-ref compiler/GHC/Types/SourceText.hs: Note [Fractional exponent bases]
-ref compiler/GHC/Types/Tickish.hs: Note [Tickish passes]
-ref compiler/GHC/Types/Tickish.hs: Note [Tickish passes]
-ref compiler/GHC/Types/Unique.hs: Note [Uniques-prelude - Uniques for wired-in Prelude things]
-ref compiler/GHC/Types/Var.hs: Note [Promoted GADT data construtors]
-ref compiler/GHC/Types/Var/Env.hs: Note [Rebinding]
-ref compiler/GHC/Unit/Info.hs: Note [About units]
-ref compiler/GHC/Unit/Module/Deps.hs: Note [Structure of dep_boot_mods]
-ref compiler/GHC/Unit/State.hs: Note [About units]
-ref compiler/GHC/Unit/State.hs: Note [About units]
-ref compiler/GHC/Unit/State.hs: Note [About units]
-ref compiler/GHC/Unit/State.hs: Note [Representation of module/name variable]
-ref compiler/GHC/Unit/State.hs: Note [Representation of module/name variable]
-ref compiler/GHC/Utils/Monad.hs: Note [multiShotIO]
-ref compiler/GHC/Utils/Monad.hs: Note [inlineIdMagic]
-ref compiler/GHC/Utils/Outputable.hs: Note [Print Hexadecimal Literals]
-ref compiler/GHC/Utils/Ppr.hs: Note [Differences between libraries/pretty and compiler/GHC/Utils/Ppr.hs]
-ref compiler/GHC/Utils/Ppr.hs: Note [Print Hexadecimal Literals]
-ref compiler/GHC/Utils/Ppr.hs: Note [Print Hexadecimal Literals]
-ref compiler/Language/Haskell/Syntax/Binds.hs: Note [fun_id in Match]
-ref compiler/Language/Haskell/Syntax/Decls.hs: Note [TyVar binders for associated declarations]
-ref compiler/Language/Haskell/Syntax/Decls.hs: Note [TyVar binders for associated declarations]
-ref compiler/Language/Haskell/Syntax/Expr.hs: Note [Record Selectors in the AST]
-ref compiler/Language/Haskell/Syntax/Expr.hs: Note [Record Selectors in the AST]
-ref compiler/Language/Haskell/Syntax/Expr.hs: Note [ApplicativeDo]
-ref compiler/Language/Haskell/Syntax/Expr.hs: Note [Applicative BodyStmt]
-ref compiler/Language/Haskell/Syntax/Expr.hs: Note [Applicative BodyStmt]
-ref compiler/Language/Haskell/Syntax/Expr.hs: Note [Quasi-quote overview]
-ref compiler/Language/Haskell/Syntax/Extension.hs: Note [Constructor cannot happen]
-ref compiler/Language/Haskell/Syntax/Pat.hs: Note [Disambiguating record fields]
-ref compiler/Language/Haskell/Syntax/Type.hs: Note [HsArgPar]
-ref compiler/Language/Haskell/Syntax/Type.hs: Note [HsArgPar]
-ref compiler/ghc.mk: Note [Stage1Only vs stage=1]
-ref configure.ac: Note [Linking ghc-bin against threaded stage0 RTS]
-ref configure.ac: Note [tooldir: How GHC finds mingw on Windows]
-ref configure.ac: Note [tooldir: How GHC finds mingw on Windows]
-ref docs/core-spec/core-spec.mng: Note [TyBinders]
-ref docs/core-spec/core-spec.mng: Note [Unused coercion variable in ForAllCo]
-ref ghc.mk: Note [No stage2 packages when CrossCompiling or Stage1Only]
-ref ghc.mk: Note [No stage2 packages when CrossCompiling or Stage1Only]
-ref ghc.mk: Note [Stage1Only vs stage=1]
-ref ghc.mk: Note [Stage1Only vs stage=1]
-ref ghc.mk: Note [Dependencies between package-data.mk files]
-ref ghc.mk: Note [No stage2 packages when CrossCompiling or Stage1Only]
-ref ghc.mk: Note [Stage1Only vs stage=1]
-ref ghc.mk: Note [No stage2 packages when CrossCompiling or Stage1Only]
-ref ghc.mk: Note [No stage2 packages when CrossCompiling or Stage1Only]
-ref ghc.mk: Note [CrossCompiling vs Stage1Only]
-ref ghc.mk: Note [Stage1Only vs stage=1]
-ref ghc/GHCi/UI.hs: Note [Changing language extensions for interactive evaluation]
-ref ghc/GHCi/UI.hs: Note [ModBreaks.decls]
-ref ghc/Main.hs: Note [Handling errors when parsing commandline flags]
-ref ghc/ghc.mk: Note [Linking ghc-bin against threaded stage0 RTS]
-ref ghc/ghc.mk: Note [Stage1Only vs stage=1]
-ref ghc/ghc.mk: Note [Stage1Only vs stage=1]
-ref hadrian/cfg/system.config.in: Note [tooldir: How GHC finds mingw on Windows]
-ref hadrian/src/Expression.hs: Note [Linking ghc-bin against threaded stage0 RTS]
-ref hadrian/src/Oracles/Setting.hs: Note [tooldir: How GHC finds mingw on Windows]
-ref hadrian/src/Rules/Generate.hs: Note [tooldir: How GHC finds mingw on Windows]
-ref hadrian/src/Rules/Libffi.hs: Note [Libffi indicating inputs]
-ref libraries/base/Control/Concurrent/QSem.hs: Note [signal uninterruptible]
-ref libraries/base/Control/Concurrent/QSem.hs: Note [signal uninterruptible]
-ref libraries/base/Control/Concurrent/QSem.hs: Note [signal uninterruptible]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST: not producing lazy pairs]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST and multithreading]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST: not producing lazy pairs]
-ref libraries/base/Control/Monad/ST/Lazy/Imp.hs: Note [Lazy ST: not producing lazy pairs]
-ref libraries/base/Data/OldList.hs: Note [Left folds via right fold]
-ref libraries/base/Data/OldList.hs: Note [INLINE unfoldr]
-ref libraries/base/Data/OldList.hs: Note [INLINE unfoldr]
-ref libraries/base/GHC/Enum.hs: Note [Enum Integer rules for literal 1]
-ref libraries/base/GHC/Event/Windows.hsc: Note [Completion Ports]
-ref libraries/base/GHC/Event/Windows.hsc: Note [Completion Ports]
-ref libraries/base/GHC/Event/Windows.hsc: Note [Memory Management]
-ref libraries/base/GHC/Event/Windows.hsc: Note [Memory Management]
-ref libraries/base/GHC/Event/Windows/FFI.hsc: Note [Completion Ports]
-ref libraries/base/GHC/ForeignPtr.hs: Note [Why FinalPtr]
-ref libraries/base/GHC/ForeignPtr.hs: Note [Why FinalPtr]
-ref libraries/base/GHC/ForeignPtr.hs: Note [MallocPtr finalizers]
-ref libraries/base/GHC/ForeignPtr.hs: Note [MallocPtr finalizers]
-ref libraries/base/GHC/ForeignPtr.hs: Note [MallocPtr finalizers]
-ref libraries/base/GHC/IO/FD.hs: Note [nonblock]
-ref libraries/base/GHC/IO/Handle/Internals.hs: Note [async]
-ref libraries/base/GHC/IO/Handle/Internals.hs: Note [async]
-ref libraries/base/GHC/IO/Handle/Text.hs: Note [#5536]
-ref libraries/base/GHC/IO/Windows/Handle.hsc: Note [ReadFile/WriteFile]
-ref libraries/base/GHC/IO/Windows/Handle.hsc: Note [ReadFile/WriteFile]
-ref libraries/base/GHC/IO/Windows/Handle.hsc: Note [ReadFile/WriteFile]
-ref libraries/base/GHC/IO/Windows/Handle.hsc: Note [ReadFile/WriteFile]
-ref libraries/base/GHC/IO/Windows/Handle.hsc: Note [ReadFile/WriteFile]
-ref libraries/base/GHC/List.hs: Note [Left folds via right fold]
-ref libraries/base/GHC/List.hs: Note [Left folds via right fold]
-ref libraries/base/GHC/List.hs: Note [Left fold via right fold]
-ref libraries/base/GHC/List.hs: Note [Left folds via right fold]
-ref libraries/base/GHC/List.hs: Note [Left folds via right fold]
-ref libraries/base/GHC/List.hs: Note [Left folds via right fold]
-ref libraries/base/GHC/List.hs: Note [scanrFB and evaluation]
-ref libraries/base/GHC/List.hs: Note [scanrFB and evaluation]
-ref libraries/base/GHC/List.hs: Note [Fusion for foldr2]
-ref libraries/base/GHC/List.hs: Note [Fusion for foldr2]
-ref libraries/base/GHC/Read.hs: Note [Why readField]
-ref libraries/base/GHC/Read.hs: Note [Why readField]
-ref libraries/base/GHC/Read.hs: Note [Why readField]
-ref libraries/base/GHC/Read.hs: Note [Why readField]
-ref libraries/base/GHC/Real.hs: Note [Numeric Stability of Enumerating Floating Numbers]
-ref libraries/base/GHC/Real.hs: Note [Numeric Stability of Enumerating Floating Numbers]
-ref libraries/base/GHC/Real.hs: Note [Numeric Stability of Enumerating Floating Numbers]
-ref libraries/base/GHC/ST.hs: Note [Definition of runRW#]
-ref libraries/base/GHC/TypeLits.hs: Note [NOINLINE someNatVal]
-ref libraries/base/GHC/TypeNats.hs: Note [NOINLINE someNatVal]
-ref libraries/base/GHC/TypeNats.hs: Note [NOINLINE someNatVal]
-ref libraries/base/Unsafe/Coerce.hs: Note [Implementing unsafeCorece]
-ref libraries/base/cbits/inputReady.c: Note [Guaranteed syscall time spent]
-ref libraries/base/cbits/inputReady.c: Note [Guaranteed syscall time spent]
-ref libraries/ghc-prim/GHC/Types.hs: Note [Linear Types]
-ref libraries/ghci/GHCi/Message.hs: Note [Remote GHCi]
-ref libraries/ghci/GHCi/Message.hs: Note [Remote Template Haskell]
-ref libraries/ghci/GHCi/Message.hs: Note [Remote Template Haskell]
-ref libraries/ghci/GHCi/RemoteTypes.hs: Note [External GHCi pointers]
-ref libraries/ghci/GHCi/RemoteTypes.hs: Note [Remote GHCi]
-ref libraries/ghci/GHCi/Run.hs: Note [Remote GHCi]
-ref libraries/ghci/GHCi/TH.hs: Note [Remote Template Haskell]
-ref libraries/ghci/GHCi/TH.hs: Note [Remote GHCi]
-ref libraries/ghci/GHCi/TH.hs: Note [External GHCi pointers]
-ref libraries/ghci/GHCi/TH.hs: Note [TH recover with -fexternal-interpreter]
-ref libraries/ghci/GHCi/TH.hs: Note [TH recover with -fexternal-interpreter]
-ref libraries/libiserv/src/IServ.hs: Note [Remote Template Haskell]
-ref m4/fp_settings.m4: Note [tooldir: How GHC finds mingw on Windows]
-ref mk/config.mk.in: Note [Stage number in build variables]
-ref mk/config.mk.in: Note [Stage number in build variables]
-ref mk/config.mk.in: Note [Stage number in build variables]
-ref mk/config.mk.in: Note [Stage number in build variables]
-ref mk/config.mk.in: Note [tooldir: How GHC finds mingw on Windows]
-ref mk/config.mk.in: Note [CrossCompiling vs Stage1Only]
-ref mk/config.mk.in: Note [CrossCompiling vs Stage1Only]
-ref mk/config.mk.in: Note [Stage1Only vs stage=1]
-ref mk/config.mk.in: Note [CrossCompiling vs Stage1Only]
-ref mk/config.mk.in: Note [Stage1Only vs stage=1]
-ref mk/config.mk.in: Note [Stage1Only vs stage=1]
-ref mk/config.mk.in: Note [Stage1Only vs stage=1]
-ref mk/config.mk.in: Note [No stage2 packages when CrossCompiling or Stage1Only]
-ref mk/config.mk.in: Note [Disable -O2 in unregisterised mode]
-ref mk/config.mk.in: Note [Disable -O2 in unregisterised mode]
-ref mk/tree.mk: Note [Spaces in TEST_HC]
-ref mk/warnings.mk: Note [Order of warning flags]
-ref mk/warnings.mk: Note [Stage number in build variables]
-ref mk/warnings.mk: Note [Order of warning flags]
-ref rts/Apply.cmm: Note [Evaluating functions with profiling]
-ref rts/Apply.cmm: Note [suspend duplicate work]
-ref rts/Capability.c: Note [GC livelock]
-ref rts/Capability.h: Note [allocation accounting]
-ref rts/Compact.cmm: Note [compactAddWorker result]
-ref rts/Compact.cmm: Note [compactAddWorker result]
-ref rts/Interpreter.c: Note [Not true: ASSERT(Sp > SpLim)]
-ref rts/Interpreter.c: Note [avoiding threadPaused]
-ref rts/Interpreter.c: Note [upd-black-hole]
-ref rts/Interpreter.c: Note [Evaluating functions with profiling]
-ref rts/Interpreter.c: Note [Evaluating functions with profiling]
-ref rts/Linker.c: Note [runtime-linker-support]
-ref rts/Linker.c: Note [runtime-linker-phases]
-ref rts/Linker.c: Note [weak-symbols-support]
-ref rts/Linker.c: Note [RTLD_LOCAL]
-ref rts/Linker.c: Note [RTLD_LOCAL]
-ref rts/Linker.c: Note [runtime-linker-phases]
-ref rts/Linker.c: Note [loadOc orderings]
-ref rts/LinkerInternals.h: Note [No typedefs for customizable types]
-ref rts/LinkerInternals.h: Note [No typedefs for customizable types]
-ref rts/LinkerInternals.h: Note [TLSGD relocation]
-ref rts/LinkerInternals.h: Note [No typedefs for customizable types]
-ref rts/Messages.c: Note [BLACKHOLE pointing to IND]
-ref rts/PrimOps.cmm: Note [Nonmoving write barrier in Perform{Put,Take}]
-ref rts/PrimOps.cmm: Note [Nonmoving write barrier in Perform{Put,Take}]
-ref rts/RaiseAsync.c: Note [Throw to self when masked]
-ref rts/RtsFlags.c: Note [OPTION_SAFE vs OPTION_UNSAFE]
-ref rts/RtsFlags.c: Note [OPTION_SAFE vs OPTION_UNSAFE]
-ref rts/Schedule.c: Note [shutdown]
-ref rts/Schedule.c: Note [GC livelock]
-ref rts/Schedule.c: Note [GC livelock]
-ref rts/Schedule.c: Note [avoiding threadPaused]
-ref rts/Schedule.c: Note [Deadlock detection under nonmoving collector]
-ref rts/Schedule.h: Note [shutdown]
-ref rts/Sparks.c: Note [STATIC_LINK fields]
-ref rts/StablePtr.c: Note [Enlarging the stable pointer table]
-ref rts/StablePtr.c: Note [Enlarging the stable pointer table]
-ref rts/Stats.c: Note [n_gc_threads]
-ref rts/Stats.c: Note [RTS Stats Reporting]
-ref rts/Stats.c: Note [RTS Stats Reporting]
-ref rts/Stats.c: Note [Work Balance]
-ref rts/Stats.c: Note [Internal Counter Stats]
-ref rts/Stats.c: Note [RTS Stats Reporting]
-ref rts/Stats.c: Note [RTS Stats Reporting]
-ref rts/Stats.c: Note [Work Balance]
-ref rts/Stats.c: Note [Work Balance]
-ref rts/Stats.c: Note [Internal Counters Stats]
-ref rts/StgCRun.c: Note [Windows Stack allocations]
-ref rts/StgCRun.c: Note [Windows Stack allocations]
-ref rts/StgCRun.c: Note [Windows Stack allocations]
-ref rts/StgMiscClosures.cmm: Note [GHCi unboxed tuples stack spills]
-ref rts/StgMiscClosures.cmm: Note [GHCi tuple layout]
-ref rts/StgMiscClosures.cmm: Note [BLACKHOLE pointing to IND]
-ref rts/StgMiscClosures.cmm: Note [suspend duplicate work]
-ref rts/StgMiscClosures.cmm: Note [CHARLIKE and INTLIKE closures.]
-ref rts/StgStartup.cmm: Note [avoiding threadPaused]
-ref rts/StgStdThunks.cmm: Note [untag for prof]
-ref rts/StgStdThunks.cmm: Note [untag for prof]
-ref rts/StgStdThunks.cmm: Note [untag for prof]
-ref rts/ThreadPaused.c: Note [upd-black-hole]
-ref rts/ThreadPaused.c: Note [suspend duplicate work]
-ref rts/Threads.c: Note [Throw to self when masked]
-ref rts/Timer.c: Note [GC During Idle Time]
-ref rts/Updates.cmm: Note [HpAlloc]
-ref rts/Updates.cmm: Note [HpAlloc]
-ref rts/Updates.cmm: Note [HpAlloc]
-ref rts/include/Cmm.h: Note [Evaluating functions with profiling]
-ref rts/include/Cmm.h: Note [Syntax of .cmm files]
-ref rts/include/Stg.h: Note [Windows Stack allocations]
-ref rts/include/ghc.mk: Note [tooldir: How GHC finds mingw on Windows]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [MADV_FREE and MADV_DONTNEED]
-ref rts/include/rts/Flags.h: Note [Internal Counter Stats]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Flags.h: Note [Synchronization of flags and base APIs]
-ref rts/include/rts/Linker.h: Note [runtime-linker-phases]
-ref rts/include/rts/OSThreads.h: Note [SRW locks]
-ref rts/include/rts/OSThreads.h: Note [SRW locks]
-ref rts/include/rts/prof/CCS.h: Note [struct alignment]
-ref rts/include/rts/prof/CCS.h: Note [struct alignment]
-ref rts/include/rts/prof/CCS.h: Note [struct alignment]
-ref rts/include/rts/prof/CCS.h: Note [struct alignment]
-ref rts/include/rts/prof/CCS.h: Note [struct alignment]
-ref rts/include/rts/storage/Block.h: Note [integer overflow]
-ref rts/include/rts/storage/Block.h: Note [integer overflow]
-ref rts/include/rts/storage/Block.h: Note [integer overflow]
-ref rts/include/rts/storage/Closures.h: Note [CAF lists]
-ref rts/include/rts/storage/Closures.h: Note [CAF lists]
-ref rts/include/rts/storage/GC.h: Note [allocation accounting]
-ref rts/include/stg/MachRegs.h: Note [Overlapping global registers]
-ref rts/linker/Elf.c: Note [Many ELF Sections]
-ref rts/linker/Elf.c: Note [Many ELF Sections]
-ref rts/linker/Elf.c: Note [Many ELF Sections]
-ref rts/linker/Elf.c: Note [PC bias]
-ref rts/linker/Elf.c: Note [TLSGD relocation]
-ref rts/linker/Elf.c: Note [Many ELF Sections]
-ref rts/linker/Elf.c: Note [.LCTOC1 in PPC PIC code]
-ref rts/linker/Elf.c: Note [Many ELF Sections]
-ref rts/linker/LoadArchive.c: Note [MSVC import files (ext .lib)]
-ref rts/linker/PEi386.c: Note [mingw-w64 name decoration scheme]
-ref rts/linker/PEi386.c: Note [ELF constant in PE file]
-ref rts/linker/PEi386.c: Note [mingw-w64 name decoration scheme]
-ref rts/linker/PEi386.h: Note [mingw-w64 name decoration scheme]
-ref rts/linker/PEi386.h: Note [mingw-w64 name decoration scheme]
-ref rts/linker/PEi386.h: Note [mingw-w64 name decoration scheme]
-ref rts/linker/SymbolExtras.c: Note [TLSGD relocation]
-ref rts/linker/elf_reloc_aarch64.c: Note [PC bias aarch64]
-ref rts/linker/elf_tlsgd.c: Note [TLSGD relocation]
-ref rts/posix/OSMem.c: Note [MADV_FREE and MADV_DONTNEED]
-ref rts/posix/OSMem.c: Note [MADV_FREE and MADV_DONTNEED]
-ref rts/sm/Evac.c: Note [Deadlock detection under nonmoving collector]
-ref rts/sm/Evac.c: Note [Deadlock detection under nonmoving collector]
-ref rts/sm/Evac.c: Note [STATIC_LINK fields]
-ref rts/sm/Evac.c: Note [BLACKHOLE pointing to IND]
-ref rts/sm/Evac.c: Note [upd-black-hole]
-ref rts/sm/GC.c: Note [STATIC_LINK fields]
-ref rts/sm/GC.c: Note [Synchronising work stealing]
-ref rts/sm/GC.c: Note [n_gc_threads]
-ref rts/sm/GC.c: Note [Deadlock detection under nonmoving collector]
-ref rts/sm/GC.c: Note [Synchronising work stealing]
-ref rts/sm/GC.c: Note [n_gc_threads]
-ref rts/sm/GC.c: Note [Work Balance]
-ref rts/sm/GC.c: Note [Scaling retained memory]
-ref rts/sm/GC.c: Note [Synchronising work stealing]
-ref rts/sm/GC.c: Note [Synchronising work stealing]
-ref rts/sm/GC.c: Note [Synchronising work stealing]
-ref rts/sm/GC.c: Note [STATIC_LINK fields]
-ref rts/sm/GC.c: Note [Synchronising work stealing]
-ref rts/sm/GC.c: Note [Scaling retained memory]
-ref rts/sm/GC.h: Note [Deadlock detection under nonmoving collector]
-ref rts/sm/GCUtils.c: Note [big objects]
-ref rts/sm/GCUtils.c: Note [big objects]
-ref rts/sm/GCUtils.c: Note [big objects]
-ref rts/sm/GCUtils.c: Note [big objects]
-ref rts/sm/MarkWeak.c: Note [MallocPtr finalizers]
-ref rts/sm/NonMovingMark.c: Note [Deadlock detection under nonmoving collector]
-ref rts/sm/NonMovingMark.c: Note [Update rememembered set]
-ref rts/sm/NonMovingMark.c: Note [upd-black-hole]
-ref rts/sm/Scav.c: Note [Deadlock detection under nonmoving collector]
-ref rts/sm/Scav.c: Note [upd-black-hole]
-ref rts/sm/Scav.c: Note [avoiding threadPaused]
-ref rts/sm/Storage.c: Note [STATIC_LINK fields]
-ref rts/sm/Storage.c: Note [STATIC_LINK fields]
-ref rts/sm/Storage.c: Note [dyn_caf_list]
-ref rts/sm/Storage.c: Note [allocation accounting]
-ref rts/sm/Storage.h: Note [STATIC_LINK fields]
-ref rts/sm/Storage.h: Note [CAF lists]
-ref rts/sm/Storage.h: Note [CAF lists]
-ref rts/sm/Storage.h: Note [dyn_caf_list]
-ref rts/win32/OSMem.c: Note [base memory]
-ref rules/build-package-way.mk: Note [inconsistent distdirs]
-ref rules/build-package.mk: Note [inconsistent distdirs]
-ref rules/build-package.mk: Note [inconsistent distdirs]
-ref rules/build-prog.mk: Note [inconsistent distdirs]
-ref rules/build-prog.mk: Note [lib-depends]
-ref rules/build-prog.mk: Note [inconsistent distdirs]
-ref rules/distdir-way-opts.mk: Note [Stage number in build variables]
-ref rules/haddock.mk: Note [inconsistent distdirs]
-ref rules/hs-suffix-way-rules.mk: Note [Implicit rule search algorithm]
-ref testsuite/config/ghc: Note [WayFlags]
-ref testsuite/driver/runtests.py: Note [Mutating config.only]
-ref testsuite/driver/runtests.py: Note [Running tests in /tmp]
-ref testsuite/driver/testglobals.py: Note [validate and testsuite speed]
-ref testsuite/driver/testglobals.py: Note [Haddock runtime stats files]
-ref testsuite/driver/testglobals.py: Note [Running tests in /tmp]
-ref testsuite/driver/testlib.py: Note [Why is there no stage1 setup function?]
-ref testsuite/driver/testlib.py: Note [Why is there no stage1 setup function?]
-ref testsuite/driver/testlib.py: Note [Mutating config.only]
-ref testsuite/driver/testlib.py: Note [validate and testsuite speed]
-ref testsuite/driver/testlib.py: Note [Universal newlines]
-ref testsuite/driver/testlib.py: Note [Universal newlines]
-ref testsuite/driver/testlib.py: Note [Universal newlines]
-ref testsuite/driver/testlib.py: Note [Universal newlines]
-ref testsuite/driver/testlib.py: Note [Output comparison]
-ref testsuite/driver/testlib.py: Note [Null device handling]
-ref testsuite/driver/testlib.py: Note [Output comparison]
-ref testsuite/driver/testlib.py: Note [Null device handling]
-ref testsuite/driver/testlib.py: Note [Output comparison]
-ref testsuite/driver/testlib.py: Note [Output comparison]
-ref testsuite/driver/testlib.py: Note [Null device handling]
-ref testsuite/mk/boilerplate.mk: Note [Communicating options and variables to a submake]
-ref testsuite/mk/boilerplate.mk: Note [Spaces in TEST_HC]
-ref testsuite/mk/boilerplate.mk: Note [Spaces in TEST_HC]
-ref testsuite/mk/boilerplate.mk: Note [Spaces in TEST_HC]
-ref testsuite/mk/boilerplate.mk: Note [The TEST_HC variable]
-ref testsuite/mk/boilerplate.mk: Note [WayFlags]
-ref testsuite/mk/test.mk: Note [Running tests in /tmp]
-ref testsuite/mk/test.mk: Note [validate and testsuite speed]
-ref testsuite/mk/test.mk: Note [Communicating options and variables to a submake]
-ref testsuite/mk/test.mk: Note [validate and testsuite speed]
-ref testsuite/mk/test.mk: Note [Communicating options and variables to a submake]
-ref testsuite/mk/test.mk: Note [The TEST_HC variable]
-ref testsuite/tests/ghci/scripts/T19667Ghci.hs: Note [NOINLINE someNatVal]
-ref testsuite/tests/indexed-types/should_compile/T18875.hs: Note [Type variable cycles in Givens]
-ref testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.hs: Note [Extra TcS Untouchables]
-ref testsuite/tests/perf/haddock/all.T: Note [Haddock runtime stats files]
-ref testsuite/tests/perf/join_points/join005.hs: Note [Don't CPR join points]
-ref testsuite/tests/perf/should_run/all.T: Note [Solving from instances when interacting Dicts]
-ref testsuite/tests/polykinds/CuskFam.hs: Note [Unifying implicit CUSK variables]
-ref testsuite/tests/rts/linker/T11223/all.T: Note [weak-symbols-support]
-ref testsuite/tests/simplCore/should_compile/T5776.hs: Note [Simplifying RULE lhs constraints]
-ref testsuite/tests/simplCore/should_compile/simpl018.hs: Note [Float coercions (unlifted)]
-ref testsuite/tests/stranal/sigs/T19871.hs: Note [Boxity Analysis]
-ref testsuite/tests/typecheck/should_compile/CbvOverlap.hs: Note [Type variable cycles in Givens]
-ref testsuite/tests/typecheck/should_compile/Improvement.hs: Note [No reduction for Derived class constraints]
-ref testsuite/tests/typecheck/should_compile/LocalGivenEqs.hs: Note [When does an implication have given equalities?]
-ref testsuite/tests/typecheck/should_compile/LocalGivenEqs.hs: Note [Type variable cycles in Givens]
-ref testsuite/tests/typecheck/should_compile/LocalGivenEqs2.hs: Note [When does an implication have given equalities?]
-ref testsuite/tests/typecheck/should_compile/T9117.hs: Note [Order of Coercible Instances]
-ref testsuite/tests/typecheck/should_compile/tc200.hs: Note [Multiple instantiation]
-ref testsuite/tests/typecheck/should_compile/tc228.hs: Note [Inference and implication constraints]
-ref testsuite/tests/typecheck/should_compile/tc231.hs: Note [Important subtlety in oclose]
-ref testsuite/tests/typecheck/should_fail/UnliftedNewtypesMultiFieldGadt.hs: Note [Kind-checking the field type]
-ref testsuite/tests/typecheck/should_fail/tcfail093.hs: Note [Important subtlety in oclose]
-ref testsuite/tests/typecheck/should_run/T16646.hs: Note [NOINLINE someNatVal]
-ref testsuite/tests/typecheck/should_run/T19667.hs: Note [NOINLINE someNatVal]
-ref utils/genapply/Main.hs: Note [jump_SAVE_CCCS]
-ref utils/genapply/Main.hs: Note [jump_SAVE_CCCS]
-ref utils/genapply/Main.hs: Note [jump_SAVE_CCCS]
-ref utils/ghc-cabal/Main.hs: Note [Msys2 path translation bug]
-ref utils/ghc-cabal/Main.hs: Note [Msys2 path translation bug]
-ref utils/ghc-pkg/Main.hs: Note [Settings File]
-ref utils/ghc-pkg/ghc.mk: Note [Why build certain utils twice?]
-ref utils/ghc-pkg/ghc.mk: Note [Stage1Only vs stage=1]
-ref utils/ghc-pkg/ghc.mk: Note [Why build certain utils twice?]
-ref utils/ghc-pkg/ghc.mk: Note [Stage1Only vs stage=1]
-ref utils/iserv/src/Main.hs: Note [Remote GHCi]
-ref utils/llvm-targets/gen-data-layout.sh: Note [LLVM Configuration]
-ref utils/notes-util/Notes.hs: Note [" <> T.unpack x <> "]
-ref utils/notes-util/Notes.hs: Note [...]
-ref utils/notes-util/test: Note [This is a Note reference broken across lines]
-ref utils/notes-util/test: Note [Broken across a line in a C++ comment]
-ref utils/notes-util/test: Note [Broken across a line in a C comment]
-ref utils/notes-util/test: Note [Broken across a line in a Haskell comment]
-ref utils/notes-util/test: Note [Broken across a line in a Python comment]
-ref validate: Note [Default build system verbosity]
-ref validate: Note [Default build system verbosity]
-ref validate: Note [Default build system verbosity]
-ref validate: Note [Running tests in /tmp]
-ref validate: Note [Why is there no stage1 setup function?]
-
diff --git a/utils/notes-util/ghc.mk b/utils/notes-util/ghc.mk
new file mode 100644
index 0000000000..99f8628b70
--- /dev/null
+++ b/utils/notes-util/ghc.mk
@@ -0,0 +1,18 @@
+# -----------------------------------------------------------------------------
+#
+# (c) 2009 The University of Glasgow
+#
+# This file is part of the GHC build system.
+#
+# To understand how the build system works and how to modify it, see
+# https://gitlab.haskell.org/ghc/ghc/wikis/building/architecture
+# https://gitlab.haskell.org/ghc/ghc/wikis/building/modifying
+#
+# -----------------------------------------------------------------------------
+
+utils/notes-util_USES_CABAL = YES
+utils/notes-util_PACKAGE = notes-util
+utils/notes-util_dist-install_PROGNAME = notes-util
+utils/notes-util_dist-install_INSTALL = NO
+utils/notes-util_dist-install_INSTALL_INPLACE = YES
+$(eval $(call build-prog,utils/notes-util,dist-install,1))
diff --git a/utils/notes-util/notes-util.cabal b/utils/notes-util/notes-util.cabal
index 643fd163fd..bba734e03b 100644
--- a/utils/notes-util/notes-util.cabal
+++ b/utils/notes-util/notes-util.cabal
@@ -8,7 +8,7 @@ author: Ben Gamari
maintainer: ben@smart-cactus.org
copyright: (c) 2022 Ben Gamari
-executable ghc-notes
+executable notes-util
main-is: Main.hs
other-modules: Notes
build-depends: base >= 4 && < 5 ,