[Git][ghc/ghc][wip/ghc-9.4.5-backports] 9 commits: base: Remove HAVE_* CPP guards

Zubin (@wz1000) gitlab at gitlab.haskell.org
Wed Apr 12 07:02:23 UTC 2023



Zubin pushed to branch wip/ghc-9.4.5-backports at Glasgow Haskell Compiler / GHC


Commits:
a86389fa by Zubin Duggal at 2023-04-12T11:03:47+05:30
base: Remove HAVE_* CPP guards

- - - - -
19ed0ca7 by Tamar Christina at 2023-04-12T11:03:47+05:30
linker: Fix BFD import libraries

This commit fixes the BFD style import library support in the runtime
linker.  This was accidentally broken during the refactoring to clang
and went unnoticed because clang itself is unable to generate the BFD
style import libraries.

With this change we can not link against both GCC or Clang produced
libraries again and intermix code produced by both compilers.

(cherry picked from commit 48e391952c17ff7eab10b0b1456e3f2a2af28a9b)

- - - - -
686c30f6 by Ben Gamari at 2023-04-12T11:03:48+05:30
Bump Windows toolchain

Updates to LLVM 14, hopefully fixing #21964.

- - - - -
c243cbdd by Zubin Duggal at 2023-04-12T11:03:48+05:30
lint-notes: accept output

- - - - -
013436a2 by Ben Gamari at 2023-04-12T11:03:48+05:30
hadrian: Extend xattr Darwin hack to cover /lib

As noted in #21506, it is now necessary to remove extended attributes
from `/lib` as well as `/bin` to avoid SIP issues on Darwin.

Fixes #21506.

(cherry picked from commit 78d04cfadfd728bb088b08b1e88905b43cc0360c)

- - - - -
79998418 by Zubin Duggal at 2023-04-12T11:03:48+05:30
Bump submodules: text, parsec, bytestring, containers

- - - - -
ce5b0a64 by Zubin Duggal at 2023-04-12T11:03:48+05:30
Bump base to 4.17.1.0 and add release notes

- - - - -
ae2aecca by Zubin Duggal at 2023-04-12T12:31:45+05:30
Prepare release 9.4.5

- - - - -
cc4e2482 by Zubin Duggal at 2023-04-12T12:31:45+05:30
Allow LLVM 14

- - - - -


23 changed files:

- .gitlab-ci.yml
- configure.ac
- docs/users_guide/release-notes.rst
- hadrian/bindist/Makefile
- libraries/base/System/Posix/Internals.hs
- libraries/base/base.cabal
- libraries/base/changelog.md
- libraries/bytestring
- libraries/containers
- libraries/parsec
- libraries/text
- mk/get-win32-tarballs.py
- rts/Linker.c
- rts/LinkerInternals.h
- rts/linker/PEi386.c
- testsuite/tests/ghci/linking/dyn/Makefile
- testsuite/tests/ghci/linking/dyn/all.T
- + testsuite/tests/ghci/linking/dyn/bin_impl_gcc/ASimpL.dll
- + testsuite/tests/ghci/linking/dyn/bin_impl_gcc/libASx.dll.a
- testsuite/tests/ghci/scripts/T9881.stdout
- testsuite/tests/ghci/scripts/ghci025.stdout
- testsuite/tests/linters/notes.stdout
- testsuite/tests/rts/all.T


Changes:

=====================================
.gitlab-ci.yml
=====================================
@@ -6,7 +6,7 @@ variables:
 
   # Sequential version number of all cached things.
   # Bump to invalidate GitLab CI cache.
-  CACHE_REV: 8
+  CACHE_REV: 10
 
   # Disable shallow clones; they break our linting rules
   GIT_DEPTH: 0


=====================================
configure.ac
=====================================
@@ -13,7 +13,7 @@ dnl
 # see what flags are available. (Better yet, read the documentation!)
 #
 
-AC_INIT([The Glorious Glasgow Haskell Compilation System], [9.4.4], [glasgow-haskell-bugs at haskell.org], [ghc-AC_PACKAGE_VERSION])
+AC_INIT([The Glorious Glasgow Haskell Compilation System], [9.4.5], [glasgow-haskell-bugs at haskell.org], [ghc-AC_PACKAGE_VERSION])
     # Version on master must be X.Y (not X.Y.Z) for ProjectVersionMunged variable
     # to be useful (cf #19058). However, the version must have three components
     # (X.Y.Z) on stable branches (e.g. ghc-9.2) to ensure that pre-releases are
@@ -22,7 +22,7 @@ AC_INIT([The Glorious Glasgow Haskell Compilation System], [9.4.4], [glasgow-has
 AC_CONFIG_MACRO_DIRS([m4])
 
 # Set this to YES for a released version, otherwise NO
-: ${RELEASE=NO}
+: ${RELEASE=YES}
 
 # The primary version (e.g. 7.5, 7.4.1) is set in the AC_INIT line
 # above.  If this is not a released version, then we will append the
@@ -582,7 +582,7 @@ AC_SUBST(InstallNameToolCmd)
 # versions of LLVM simultaneously, but that stopped working around
 # 3.5/3.6 release of LLVM.
 LlvmMinVersion=10  # inclusive
-LlvmMaxVersion=14 # not inclusive
+LlvmMaxVersion=15 # not inclusive
 AC_SUBST([LlvmMinVersion])
 AC_SUBST([LlvmMaxVersion])
 sUPPORTED_LLVM_VERSION_MIN=$(echo \($LlvmMinVersion\) | sed 's/\./,/')


=====================================
docs/users_guide/release-notes.rst
=====================================
@@ -4,6 +4,7 @@ Release notes
 .. toctree::
    :maxdepth: 1
 
+   9.4.5-notes
    9.4.4-notes
    9.4.3-notes
    9.4.2-notes


=====================================
hadrian/bindist/Makefile
=====================================
@@ -147,7 +147,9 @@ install_bin_libdir:
 		fi; \
 	done
 	# Work around #17418 on Darwin
-	if [ -e "${XATTR}" ]; then "${XATTR}" -c -r "$(DESTDIR)$(ActualBinsDir)"; fi
+	if [ -e "${XATTR}" ]; then \
+		"${XATTR}" -c -r "$(DESTDIR)$(ActualBinsDir)"; \
+	fi
 
 install_bin_direct:
 	@echo "Copying binaries to $(DESTDIR)$(WrapperBinsDir)"
@@ -181,6 +183,10 @@ install_lib: lib/settings
 	for i in $(DOCS); do \
 		cp -R $$i "$(DESTDIR)$(docdir)/"; \
 	done
+	# Work around #17418 on Darwin
+	if [ -e "${XATTR}" ]; then \
+		"${XATTR}" -c -r "$(DESTDIR)$(ActualLibsDir)"; \
+	fi
 
 install_docs:
 	@echo "Copying docs to $(DESTDIR)$(docdir)"


=====================================
libraries/base/System/Posix/Internals.hs
=====================================
@@ -36,7 +36,9 @@ import Foreign.C
 -- import Data.Bits
 import Data.Maybe
 
+#if !defined(HTYPE_TCFLAG_T)
 import System.IO.Error
+#endif
 
 import GHC.Base
 import GHC.Num
@@ -457,13 +459,8 @@ foreign import capi unsafe "HsBase.h _lseeki64"
 foreign import capi unsafe "HsBase.h _access"
    c_access :: CString -> CInt -> IO CInt
 
-#if !defined(HAVE_CHMOD)
-c_chmod :: CString -> CMode -> IO CInt
-c_chmod _ _ = ioError (ioeSetLocation unsupportedOperation "_chmod")
-#else
 foreign import ccall unsafe "HsBase.h _chmod"
    c_chmod :: CString -> CMode -> IO CInt
-#endif
 
 foreign import capi unsafe "HsBase.h _close"
    c_close :: CInt -> IO CInt
@@ -471,19 +468,11 @@ foreign import capi unsafe "HsBase.h _close"
 foreign import capi unsafe "HsBase.h _creat"
    c_creat :: CString -> CMode -> IO CInt
 
-#if !defined(HAVE_DUP)
-c_dup :: CInt -> IO CInt
-c_dup _ = ioError (ioeSetLocation unsupportedOperation "_dup")
-
-c_dup2 :: CInt -> CInt -> IO CInt
-c_dup2 _ _ = ioError (ioeSetLocation unsupportedOperation "_dup2")
-#else
 foreign import ccall unsafe "HsBase.h _dup"
    c_dup :: CInt -> IO CInt
 
 foreign import ccall unsafe "HsBase.h _dup2"
    c_dup2 :: CInt -> CInt -> IO CInt
-#endif
 
 foreign import capi unsafe "HsBase.h _isatty"
    c_isatty :: CInt -> IO CInt
@@ -521,13 +510,8 @@ foreign import capi unsafe "HsBase.h write"
 foreign import capi safe "HsBase.h write"
    c_safe_write :: CInt -> Ptr Word8 -> CSize -> IO CSsize
 
-#if !defined(HAVE_PIPE)
-c_pipe :: Ptr CInt -> IO CInt
-c_pipe _ = ioError (ioeSetLocation unsupportedOperation "pipe")
-#else
 foreign import ccall unsafe "HsBase.h pipe"
    c_pipe :: Ptr CInt -> IO CInt
-#endif
 
 foreign import capi unsafe "unistd.h lseek"
    c_lseek :: CInt -> COff -> CInt -> IO COff
@@ -535,13 +519,8 @@ foreign import capi unsafe "unistd.h lseek"
 foreign import ccall unsafe "HsBase.h access"
    c_access :: CString -> CInt -> IO CInt
 
-#if !defined(HAVE_CHMOD)
-c_chmod :: CString -> CMode -> IO CInt
-c_chmod _ _ = ioError (ioeSetLocation unsupportedOperation "chmod")
-#else
 foreign import ccall unsafe "HsBase.h chmod"
    c_chmod :: CString -> CMode -> IO CInt
-#endif
 
 foreign import ccall unsafe "HsBase.h close"
    c_close :: CInt -> IO CInt
@@ -549,19 +528,11 @@ foreign import ccall unsafe "HsBase.h close"
 foreign import ccall unsafe "HsBase.h creat"
    c_creat :: CString -> CMode -> IO CInt
 
-#if !defined(HAVE_DUP)
-c_dup :: CInt -> IO CInt
-c_dup _ = ioError (ioeSetLocation unsupportedOperation "dup")
-
-c_dup2 :: CInt -> CInt -> IO CInt
-c_dup2 _ _ = ioError (ioeSetLocation unsupportedOperation "dup2")
-#else
 foreign import ccall unsafe "HsBase.h dup"
    c_dup :: CInt -> IO CInt
 
 foreign import ccall unsafe "HsBase.h dup2"
    c_dup2 :: CInt -> CInt -> IO CInt
-#endif
 
 foreign import ccall unsafe "HsBase.h isatty"
    c_isatty :: CInt -> IO CInt
@@ -572,14 +543,9 @@ foreign import ccall unsafe "HsBase.h unlink"
 foreign import capi unsafe "HsBase.h utime"
    c_utime :: CString -> Ptr CUtimbuf -> IO CInt
 
-#if !defined(HAVE_GETPID)
-c_getpid :: IO CPid
-c_getpid = pure 1
-#else
 foreign import ccall unsafe "HsBase.h getpid"
    c_getpid :: IO CPid
 #endif
-#endif
 
 foreign import ccall unsafe "HsBase.h __hscore_stat"
    c_stat :: CFilePath -> Ptr CStat -> IO CInt
@@ -707,6 +673,7 @@ foreign import capi  unsafe "stdio.h value SEEK_END" sEEK_END :: CInt
 
 {-
 Note [Windows types]
+~~~~~~~~~~~~~~~~~~~~
 
 Windows' _read and _write have types that differ from POSIX. They take an
 unsigned int for length and return a signed int where POSIX uses size_t and


=====================================
libraries/base/base.cabal
=====================================
@@ -1,6 +1,6 @@
 cabal-version:  3.0
 name:           base
-version:        4.17.0.0
+version:        4.17.1.0
 -- NOTE: Don't forget to update ./changelog.md
 
 license:        BSD-3-Clause


=====================================
libraries/base/changelog.md
=====================================
@@ -1,5 +1,11 @@
 # Changelog for [`base` package](http://hackage.haskell.org/package/base)
 
+## 4.17.1.0 *April 2023*
+
+   * Remove `mingwex` dependency on Windows (#22166).
+
+   * Fix inconsistency with decoding terminal input on Windows (#21488).
+
 ## 4.17.0.0 *August 2022*
 
   * Add explicitly bidirectional `pattern TypeRep` to `Type.Reflection`.


=====================================
libraries/bytestring
=====================================
@@ -1 +1 @@
-Subproject commit 1543e054a314865d89a259065921d5acba03d966
+Subproject commit 9cab76dc861f651c3940e873ce921d9e09733cc8


=====================================
libraries/containers
=====================================
@@ -1 +1 @@
-Subproject commit 50175b72dc781f82a419bddafba1bdd758fbee4b
+Subproject commit 9f4a93604c66a5e605ce46fc30003b71802b3cfd


=====================================
libraries/parsec
=====================================
@@ -1 +1 @@
-Subproject commit a74c68e948c99621100447014f48ccac7ee0448e
+Subproject commit 1f542120d9adc5e22f8791a6d595210e93c6c389


=====================================
libraries/text
=====================================
@@ -1 +1 @@
-Subproject commit fdb06ff327519f3c0fc6cc9997b7cb7fe8ab8178
+Subproject commit e815d4d9bc362f4a3a36a850931fd3504eda967e


=====================================
mk/get-win32-tarballs.py
=====================================
@@ -8,7 +8,7 @@ import argparse
 import sys
 from sys import stderr
 
-TARBALL_VERSION = '0.7'
+TARBALL_VERSION = '0.8'
 BASE_URL = "https://downloads.haskell.org/ghc/mingw/{}".format(TARBALL_VERSION)
 DEST = Path('ghc-tarballs/mingw-w64')
 ARCHS = ['x86_64', 'sources']


=====================================
rts/Linker.c
=====================================
@@ -135,8 +135,7 @@ extern void iconv();
    This is to enable lazy loading of symbols. Eager loading is problematic
    as it means that all symbols must be available, even those which we will
    never use. This is especially painful on Windows, where the number of
-   libraries required to link things like mingwex (TODO: We no longer depend
-   on mingwex, so think of a different example here) grows to be quite high.
+   libraries required to link things like QT or WxWidgets grows to be quite high.
 
    We proceed through these stages as follows,
 
@@ -194,8 +193,7 @@ extern void iconv();
 
    1) Dependency chains, if A.o required a .o in libB but A.o isn't required to link
       then we don't need to load libB. This means the dependency chain for libraries
-      such as mingw32 and mingwex (TODO: We no longer depend on mingwex, so think of
-      a different example here) can be broken down.
+      such as ucrt can be broken down.
 
    2) The number of duplicate symbols, since now only symbols that are
       true duplicates will display the error.
@@ -228,7 +226,7 @@ static void ghciRemoveSymbolTable(StrHashTable *table, const SymbolName* key,
 static const char *
 symbolTypeString (SymType type)
 {
-    switch (type) {
+    switch (type & ~SYM_TYPE_DUP_DISCARD) {
         case SYM_TYPE_CODE: return "code";
         case SYM_TYPE_DATA: return "data";
         case SYM_TYPE_INDIRECT_DATA: return "indirect-data";
@@ -277,14 +275,18 @@ int ghciInsertSymbolTable(
       insertStrHashTable(table, key, pinfo);
       return 1;
    }
-   else if (pinfo->type != type)
+   else if (pinfo->type ^ type)
    {
-       debugBelch("Symbol type mismatch.\n");
-       debugBelch("Symbol %s was defined by %" PATH_FMT " to be a %s symbol.\n",
-                  key, obj_name, symbolTypeString(type));
-       debugBelch("      yet was defined by %" PATH_FMT " to be a %s symbol.\n",
-                  pinfo->owner ? pinfo->owner->fileName : WSTR("<builtin>"),
-                  symbolTypeString(pinfo->type));
+       /* We were asked to discard the symbol on duplicates, do so quietly.  */
+       if (!(type & SYM_TYPE_DUP_DISCARD))
+       {
+         debugBelch("Symbol type mismatch.\n");
+         debugBelch("Symbol %s was defined by %" PATH_FMT " to be a %s symbol.\n",
+                    key, obj_name, symbolTypeString(type));
+         debugBelch("      yet was defined by %" PATH_FMT " to be a %s symbol.\n",
+                    pinfo->owner ? pinfo->owner->fileName : WSTR("<builtin>"),
+                    symbolTypeString(pinfo->type));
+       }
        return 1;
    }
    else if (pinfo->strength == STRENGTH_STRONG)


=====================================
rts/LinkerInternals.h
=====================================
@@ -52,11 +52,16 @@ typedef struct _Section    Section;
  */
 
 /* What kind of thing a symbol identifies. We need to know this to determine how
- * to process overflowing relocations. See Note [Processing overflowed relocations]. */
+ * to process overflowing relocations. See Note [Processing overflowed relocations].
+ * This is bitfield however only the option SYM_TYPE_DUP_DISCARD can be combined
+ * with the other values. */
 typedef enum _SymType {
-    SYM_TYPE_CODE, /* the symbol is a function and can be relocated via a jump island */
-    SYM_TYPE_DATA, /* the symbol is data */
-    SYM_TYPE_INDIRECT_DATA, /* see Note [_iob_func symbol] */
+    SYM_TYPE_CODE = 1 << 0, /* the symbol is a function and can be relocated via a jump island */
+    SYM_TYPE_DATA = 1 << 1, /* the symbol is data */
+    SYM_TYPE_INDIRECT_DATA = 1 << 2, /* see Note [_iob_func symbol] */
+    SYM_TYPE_DUP_DISCARD = 1 << 3, /* the symbol is a symbol in a BFD import library
+                                      however if a duplicate is found with a mismatching
+                                      SymType then discard this one.  */
 } SymType;
 
 


=====================================
rts/linker/PEi386.c
=====================================
@@ -261,6 +261,54 @@
             .asciiz "libfoo_data"
 
 
+   Note [GHC Linking model and import libraries]
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+   The above describes how import libraries work for static linking.
+   Fundamentally this does not apply to dynamic linking as we do in GHC.
+   The issue is two-folds:
+
+   1. In the linking model above it is expected that the .idata sections be
+      materialized into PLTs during linking.  However in GHC we never create
+      PLTs,  but have out own mechanism for this which is the jump island
+      machinery.   This is required for efficiency.  For one materializing the
+      .idata sections would result in wasting pages.   We'd use one page for
+      every ~100 bytes.  This is extremely wasteful and also fragments the
+      memory.  Secondly the dynamic linker is lazy.  We only perform the final
+      loading if the symbol is used, however with an import library we can
+      discard the actual OC immediately after reading it.   This prevents us from
+      keeping ~1k in memory per symbol for no reason.
+
+   2. GHC itself does not observe symbol visibility correctly during NGC.   This
+      in itself isn't an academic exercise.  The issue stems from GHC using one
+      mechanism for providing two incompatible linking modes:
+      a)  The first mode is generating Haskell shared libraries which are
+           intended to be used by other Haskell code.   This requires us to
+           export the info, data and closures.   For this GHC just re-exports
+           all symbols.  But it doesn't correcly mark data/code.  Symbol
+           visibility is overwritten by telling the linker to export all
+           symbols.
+      b)  The second code is producing code that's supposed to be call-able
+          through a C insterface.   This in reality does not require the
+          export of closures and info tables.  But also does not require the
+          inclusion of the RTS inside the DLL.  Hover this is done today
+          because we don't properly have the RTS as a dynamic library.
+          i.e.  GHC does not only export symbols denoted by foreign export.
+          Also GHC should depend on an RTS library, but at the moment it
+          cannot because of TNTC is incompatible with dynamic linking.
+
+   These two issues mean that for GHC we need to take a different approach
+   to handling import libraries.  For normal C libraries we have proper
+   differentiation between CODE and DATA.   For GHC produced import libraries
+   we do not.   As such the SYM_TYPE_DUP_DISCARD tells the linker that if a
+   duplicate symbol is found, and we were going to discard it anyway, just do
+   so quitely.  This works because the RTS symbols themselves are provided by
+   the currently loaded RTS as built-in symbols.
+
+   Secondly we cannot rely on a text symbol being available.   As such we
+   should only depend on the symbols as defined in the .idata sections,
+   otherwise we would not be able to correctly link against GHC produced
+   import libraries.
+
    Note [Memory allocation]
    ~~~~~~~~~~~~~~~~~~~~~~~~
    The loading of an object begins in `preloadObjectFile`, which allocates a buffer,
@@ -1700,7 +1748,10 @@ ocGetNames_PEi386 ( ObjectCode* oc )
       if (   secNumber != IMAGE_SYM_UNDEFINED
           && secNumber > 0
           && section
-          && section->kind != SECTIONKIND_BFD_IMPORT_LIBRARY) {
+          /* Skip all BFD import sections.  */
+          && section->kind != SECTIONKIND_IMPORT
+          && section->kind != SECTIONKIND_BFD_IMPORT_LIBRARY
+          && section->kind != SECTIONKIND_BFD_IMPORT_LIBRARY_HEAD) {
          /* This symbol is global and defined, viz, exported */
          /* for IMAGE_SYMCLASS_EXTERNAL
                 && !IMAGE_SYM_UNDEFINED,
@@ -1733,12 +1784,49 @@ ocGetNames_PEi386 ( ObjectCode* oc )
           IF_DEBUG(linker_verbose, debugBelch("bss symbol @ %p %u\n", addr, symValue));
       }
       else if (section && section->kind == SECTIONKIND_BFD_IMPORT_LIBRARY) {
-          setImportSymbol(oc, sname);
+          /* Disassembly of section .idata$5:
+
+             0000000000000000 <__imp_Insert>:
+             ...
+                        0: IMAGE_REL_AMD64_ADDR32NB     .idata$6
+
+             The first two bytes contain the ordinal of the function
+             in the format of lowpart highpart. The two bytes combined
+             for the total range of 16 bits which is the function export limit
+             of DLLs.  See note [GHC Linking model and import libraries].  */
+          sname = (SymbolName*)section->start+2;
+          COFF_symbol* sym = &oc->info->symbols[info->numberOfSymbols-1];
+          addr = get_sym_name( getSymShortName (info, sym), oc);
+
+          IF_DEBUG(linker,
+                   debugBelch("addImportSymbol `%s' => `%s'\n",
+                              sname, (char*)addr));
+          /* We're going to free the any data associated with the import
+             library without copying the sections.  So we have to duplicate
+             the symbol name and values before the pointers become invalid.  */
+          sname = strdup (sname);
+          addr  = strdup (addr);
+          type = has_code_section ? SYM_TYPE_CODE : SYM_TYPE_DATA;
+          type |= SYM_TYPE_DUP_DISCARD;
+          if (!ghciInsertSymbolTable(oc->fileName, symhash, sname,
+                                     addr, false, type, oc)) {
+             releaseOcInfo (oc);
+             stgFree (oc->image);
+             oc->image = NULL;
+             return false;
+          }
+          setImportSymbol (oc, sname);
+
+          /* Don't process this oc any further. Just exit.  */
+          oc->n_symbols = 0;
+          oc->symbols   = NULL;
+          stgFree (oc->image);
+          oc->image = NULL;
+          releaseOcInfo (oc);
           // There is nothing that we need to resolve in this object since we
           // will never call the import stubs in its text section
           oc->status = OBJECT_DONT_RESOLVE;
-
-          IF_DEBUG(linker_verbose, debugBelch("import symbol %s\n", sname));
+          return true;
       }
       else if (secNumber > 0
                && section


=====================================
testsuite/tests/ghci/linking/dyn/Makefile
=====================================
@@ -88,10 +88,6 @@ compile_libAB_dyn:
 
 .PHONY: compile_libAS_impl_gcc
 compile_libAS_impl_gcc:
-	rm -rf bin_impl_gcc
-	mkdir bin_impl_gcc
-	'$(TEST_HC)' $(MY_TEST_HC_OPTS) -odir "bin_impl_gcc" -shared A.c -o "bin_impl_gcc/$(call DLL,ASimpL)"
-	mv bin_impl_gcc/libASimpL.dll.a bin_impl_gcc/libASx.dll.a
 	echo "main" | '$(TEST_HC)' $(TEST_HC_OPTS_INTERACTIVE) T11072.hs -lASx -L./bin_impl_gcc
 
 .PHONY: compile_libAS_impl_msvc


=====================================
testsuite/tests/ghci/linking/dyn/all.T
=====================================
@@ -33,9 +33,9 @@ test('T10458',
       extra_hc_opts('-L"$PWD/T10458dir" -lAS')],
      ghci_script, ['T10458.script'])
 
-test('T11072gcc', [extra_files(['A.c', 'T11072.hs']),
-                   expect_broken(18718),
-                   unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
+test('T11072gcc', [extra_files(['A.c', 'T11072.hs', 'bin_impl_gcc/']),
+                   unless(doing_ghci, skip), unless(opsys('mingw32'), skip),
+                   unless(arch('x86_64'), skip)],
      makefile_test, ['compile_libAS_impl_gcc'])
 
 test('T11072msvc', [extra_files(['A.c', 'T11072.hs', 'libAS.def', 'i686/', 'x86_64/']),


=====================================
testsuite/tests/ghci/linking/dyn/bin_impl_gcc/ASimpL.dll
=====================================
Binary files /dev/null and b/testsuite/tests/ghci/linking/dyn/bin_impl_gcc/ASimpL.dll differ


=====================================
testsuite/tests/ghci/linking/dyn/bin_impl_gcc/libASx.dll.a
=====================================
Binary files /dev/null and b/testsuite/tests/ghci/linking/dyn/bin_impl_gcc/libASx.dll.a differ


=====================================
testsuite/tests/ghci/scripts/T9881.stdout
=====================================
@@ -19,19 +19,19 @@ instance Ord Data.ByteString.Lazy.ByteString
 
 type Data.ByteString.ByteString :: *
 data Data.ByteString.ByteString
-  = Data.ByteString.Internal.BS {-# UNPACK #-}(GHC.ForeignPtr.ForeignPtr
-                                                 GHC.Word.Word8)
-                                {-# UNPACK #-}Int
-  	-- Defined in ‘Data.ByteString.Internal’
+  = bytestring-0.11.4.0:Data.ByteString.Internal.Type.BS {-# UNPACK #-}(GHC.ForeignPtr.ForeignPtr
+                                                                          GHC.Word.Word8)
+                                                         {-# UNPACK #-}Int
+  	-- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’
 instance Monoid Data.ByteString.ByteString
-  -- Defined in ‘Data.ByteString.Internal’
+  -- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’
 instance Read Data.ByteString.ByteString
-  -- Defined in ‘Data.ByteString.Internal’
+  -- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’
 instance Semigroup Data.ByteString.ByteString
-  -- Defined in ‘Data.ByteString.Internal’
+  -- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’
 instance Show Data.ByteString.ByteString
-  -- Defined in ‘Data.ByteString.Internal’
+  -- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’
 instance Eq Data.ByteString.ByteString
-  -- Defined in ‘Data.ByteString.Internal’
+  -- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’
 instance Ord Data.ByteString.ByteString
-  -- Defined in ‘Data.ByteString.Internal’
+  -- Defined in ‘bytestring-0.11.4.0:Data.ByteString.Internal.Type’


=====================================
testsuite/tests/ghci/scripts/ghci025.stdout
=====================================
@@ -53,7 +53,9 @@ Prelude.length :: Data.Foldable.Foldable t => t a -> GHC.Types.Int
 -- imported via T
 type T.Integer :: *
 data T.Integer = ...
-T.length :: Data.ByteString.Internal.ByteString -> GHC.Types.Int
+T.length ::
+  bytestring-0.11.4.0:Data.ByteString.Internal.Type.ByteString
+  -> GHC.Types.Int
 :browse! T
 -- defined locally
 T.length :: T.Integer


=====================================
testsuite/tests/linters/notes.stdout
=====================================
@@ -1,138 +1,153 @@
+ref    compiler/GHC/Builtin/PrimOps.hs:329:7:     Note [Core let/app invariant]
+ref    compiler/GHC/Core.hs:178:10:     Note [Core let/app invariant]
+ref    compiler/GHC/Core.hs:189:10:     Note [Core let/app invariant]
+ref    compiler/GHC/Core.hs:520:3:     Note [exprOkForSpeculation and type classes]
 ref    compiler/GHC/Core/Coercion/Axiom.hs:458:2:     Note [RoughMap and rm_empty]
-ref    compiler/GHC/Core/Opt/Arity.hs<line>:<no>:     Note [Combining case branches]
-ref    compiler/GHC/Core/Opt/Arity.hs<line>:<no>:     Note [ArityType for let-bindings]
+ref    compiler/GHC/Core/Lint.hs:635:15:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Make.hs:120:47:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Make.hs:146:9:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Make.hs:161:9:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Make.hs:175:9:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Make.hs:190:9:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Opt/Arity.hs:610:5:     Note [Combining case branches]
+ref    compiler/GHC/Core/Opt/Arity.hs:1298:0:     Note [ArityType for let-bindings]
+ref    compiler/GHC/Core/Opt/ConstantFold.hs:1413:15:     Note [Core let/app invariant]
 ref    compiler/GHC/Core/Opt/OccurAnal.hs:851:15:     Note [Loop breaking]
 ref    compiler/GHC/Core/Opt/SetLevels.hs:1598:30:     Note [Top level scope]
-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:1225:37:     Note [Gentle mode]
-ref    compiler/GHC/Core/Opt/Specialise.hs:1593:28:     Note [Arity decrease]
+ref    compiler/GHC/Core/Opt/Simplify.hs:1708:17:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Opt/Simplify.hs:2672:13:     Note [Case binder next]
+ref    compiler/GHC/Core/Opt/Simplify.hs:3294:0:     Note [Suppressing binder-swaps on linear case]
+ref    compiler/GHC/Core/Opt/Simplify.hs:3844:8:     Note [Lambda-bound unfoldings]
+ref    compiler/GHC/Core/Opt/Simplify.hs:4200:33:     Note [Do not eta-expand trivial expressions]
+ref    compiler/GHC/Core/Opt/Simplify/Utils.hs:1240:37:     Note [Gentle mode]
+ref    compiler/GHC/Core/Opt/Simplify/Utils.hs:1294:7:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Opt/Simplify/Utils.hs:1420:7:     Note [Core let/app invariant]
+ref    compiler/GHC/Core/Opt/Specialise.hs:1588:28:     Note [Arity decrease]
 ref    compiler/GHC/Core/RoughMap.hs:183:35:     Note [RoughMatch and beta reduction]
 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/FVs.hs:286: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/Rep.hs:1748:31:     Note [What prevents a constraint from floating]
 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/TyCon.hs:966:35:     Note [Promoted GADT data construtors]
+ref    compiler/GHC/Core/TyCon.hs:2472:62:     Note [Sharing nullary TyCons]
+ref    compiler/GHC/Core/Unfold.hs:1174:23:     Note [INLINE for small functions (3)]
+ref    compiler/GHC/Core/Unfold.hs:1245:50:     Note [Unfold info lazy contexts]
 ref    compiler/GHC/Core/Unfold/Make.hs:157:34:     Note [DFunUnfoldings]
-ref    compiler/GHC/Core/Unify.hs:1390:9:     Note [INLINE pragmas and (>>)]
-ref    compiler/GHC/Core/Utils.hs:947:40:     Note [ _       -> [con1]
-ref    compiler/GHC/CoreToStg.hs:462:15:     Note [Nullary unboxed tuple]
-ref    compiler/GHC/Driver/Main.hs:1566:34:     Note [simpleTidyPgm - mkBootModDetailsTc]
-ref    compiler/GHC/Driver/Session.hs:1947:36:     Note [GHC.Driver.Main . Safe Haskell Inference]
-ref    compiler/GHC/Driver/Session.hs:3916:49:     Note [Eta-reduction in -O0]
+ref    compiler/GHC/Core/Unify.hs:1492:9:     Note [INLINE pragmas and (>>)]
+ref    compiler/GHC/Core/Utils.hs:952:40:     Note [ _       -> [con1]
+ref    compiler/GHC/CoreToStg.hs:463:15:     Note [Nullary unboxed tuple]
+ref    compiler/GHC/Driver/Main.hs:1594:34:     Note [simpleTidyPgm - mkBootModDetailsTc]
+ref    compiler/GHC/Driver/Session.hs:1997:36:     Note [GHC.Driver.Main . Safe Haskell Inference]
+ref    compiler/GHC/Driver/Session.hs:3991: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/Pmc/Solver.hs:853:20:     Note [COMPLETE sets on data families]
+ref    compiler/GHC/HsToCore/Binds.hs:850:46:     Note [Free dictionaries]
+ref    compiler/GHC/HsToCore/Binds.hs:884:36:     Note [Free tyvars in rule LHS]
+ref    compiler/GHC/HsToCore/Binds.hs:885:35:     Note [Free dictionaries in rule LHS]
+ref    compiler/GHC/HsToCore/Binds.hs:943:24:     Note [Free dictionaries]
+ref    compiler/GHC/HsToCore/Binds.hs:1000:34:     Note [Dead spec binders]
+ref    compiler/GHC/HsToCore/Docs.hs:272:70:     Note [1]
+ref    compiler/GHC/HsToCore/Docs.hs:276:0:     Note [1]
+ref    compiler/GHC/HsToCore/Pmc/Solver.hs:855: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:939:62:     Note [Don't CPR join points]
+ref    compiler/GHC/HsToCore/Utils.hs:942:62:     Note [Don't CPR join points]
 ref    compiler/GHC/Iface/Syntax.hs:708:0:     Note [Minimal complete definition]
 ref    compiler/GHC/Iface/Syntax.hs:768:44:     Note [Minimal complete definition]
-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/Parser/Lexer.x:188:7:     Note [Lexing NumericUnderscores extension]
+ref    compiler/GHC/Parser/Lexer.x:505:3:     Note [Lexing NumericUnderscores extension]
+ref    compiler/GHC/Rename/Expr.hs:2043:9:     Note [ApplicativeDo and strict patterns]
+ref    compiler/GHC/Rename/Expr.hs:2082:12:     Note [ApplicativeDo and refutable patterns]
+ref    compiler/GHC/Rename/Expr.hs:2166:18:     Note [ApplicativeDo and strict patterns]
+ref    compiler/GHC/Rename/Expr.hs:2184:0:     Note [ApplicativeDo and strict patterns]
+ref    compiler/GHC/Rename/Expr.hs:2239:0:     Note [ApplicativeDo and refutable patterns]
 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/Runtime/Eval.hs:996:2:     Note [Querying instances for a type]
+ref    compiler/GHC/Rename/Splice.hs:478:27:     Note [Splices]
+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:108:18:     Note [codegen-split-init]
-ref    compiler/GHC/StgToCmm.hs:111:18:     Note [pipeline-split-init]
-ref    compiler/GHC/StgToCmm/Expr.hs:585:4:     Note [case on bool]
-ref    compiler/GHC/StgToCmm/Expr.hs:848:3:     Note [alg-alt heap check]
-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/Ppr.hs:1760:11:     Note [Highlighting ambiguous type variables]
-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:670:24:     Note [Disambiguating record fields]
-ref    compiler/GHC/Tc/Gen/Expr.hs:687:15:     Note [Mixed Record Selectors]
+ref    compiler/GHC/Stg/Lint.hs:9:56:     Note [Core let/app invariant]
+ref    compiler/GHC/StgToCmm.hs:106:18:     Note [codegen-split-init]
+ref    compiler/GHC/StgToCmm.hs:109:18:     Note [pipeline-split-init]
+ref    compiler/GHC/StgToCmm/Expr.hs:579:4:     Note [case on bool]
+ref    compiler/GHC/StgToCmm/Expr.hs:847:3:     Note [alg-alt heap check]
+ref    compiler/GHC/Tc/Errors.hs:178:13:     Note [Fail fast on kind errors]
+ref    compiler/GHC/Tc/Errors.hs:2239:0:     Note [Highlighting ambiguous type variables]
+ref    compiler/GHC/Tc/Errors/Ppr.hs:2074:11:     Note [Highlighting ambiguous type variables]
+ref    compiler/GHC/Tc/Gen/Arrow.hs:438:29:     Note [RecStmt]
+ref    compiler/GHC/Tc/Gen/Bind.hs:1368:19:     Note [Existentials in pattern bindings]
+ref    compiler/GHC/Tc/Gen/Export.hs:188:15:     Note [Modules without a module header]
+ref    compiler/GHC/Tc/Gen/Export.hs:423:0:     Note [Modules without a module header]
+ref    compiler/GHC/Tc/Gen/Export.hs:581:7:     Note [Typing Pattern Synonym Exports]
+ref    compiler/GHC/Tc/Gen/Export.hs:620:16:     Note [Types of TyCon]
+ref    compiler/GHC/Tc/Gen/Expr.hs:662:24:     Note [Disambiguating record fields]
+ref    compiler/GHC/Tc/Gen/Expr.hs:679:15:     Note [Mixed Record Selectors]
 ref    compiler/GHC/Tc/Gen/Expr.hs:1195:7:     Note [Disambiguating record fields]
 ref    compiler/GHC/Tc/Gen/Expr.hs:1298: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:2623:7:     Note [Matching a kind sigature with a declaration]
-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:169:20:     Note [Typing patterns in pattern bindings]
-ref    compiler/GHC/Tc/Gen/Pat.hs:476:7:     Note [Pattern coercions]
-ref    compiler/GHC/Tc/Gen/Pat.hs:1077:7:     Note [Matching polytyped patterns]
-ref    compiler/GHC/Tc/Gen/Pat.hs:1376:16:     Note [Pattern coercions]
+ref    compiler/GHC/Tc/Gen/HsType.hs:551:56:     Note [Skolem escape prevention]
+ref    compiler/GHC/Tc/Gen/HsType.hs:2632:7:     Note [Matching a kind sigature with a declaration]
+ref    compiler/GHC/Tc/Gen/Match.hs:541:20:     Note [GroupStmt binder map]
+ref    compiler/GHC/Tc/Gen/Match.hs:734:20:     Note [GroupStmt binder map]
+ref    compiler/GHC/Tc/Gen/Match.hs:999:0:     Note [typechecking ApplicativeStmt]
+ref    compiler/GHC/Tc/Gen/Pat.hs:171:20:     Note [Typing patterns in pattern bindings]
+ref    compiler/GHC/Tc/Gen/Pat.hs:480:7:     Note [Pattern coercions]
+ref    compiler/GHC/Tc/Gen/Pat.hs:1107:7:     Note [Matching polytyped patterns]
+ref    compiler/GHC/Tc/Gen/Pat.hs:1407:16:     Note [Pattern coercions]
 ref    compiler/GHC/Tc/Gen/Sig.hs:78:10:     Note [Overview of type signatures]
 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:1904:19:     Note [Root-main id]
-ref    compiler/GHC/Tc/Module.hs:1974:6:     Note [Root-main id]
-ref    compiler/GHC/Tc/Solver/Canonical.hs:1229:33:     Note [Canonical LHS]
-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/Rewrite.hs:1032:7:     Note [Stability of rewriting]
+ref    compiler/GHC/Tc/Module.hs:705:15:     Note [Extra dependencies from .hs-boot files]
+ref    compiler/GHC/Tc/Module.hs:1916:19:     Note [Root-main id]
+ref    compiler/GHC/Tc/Module.hs:1986:6:     Note [Root-main id]
+ref    compiler/GHC/Tc/Solver/Canonical.hs:1087:33:     Note [Canonical LHS]
+ref    compiler/GHC/Tc/Solver/Interact.hs:1619:9:     Note [No touchables as FunEq RHS]
+ref    compiler/GHC/Tc/Solver/Interact.hs:2305:12:     Note [The equality class story]
+ref    compiler/GHC/Tc/Solver/Rewrite.hs:988: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.hs:4362: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:1154:28:     Note [Don't promote data constructors with non-equality contexts]
-ref    compiler/GHC/Tc/Types.hs:1230:36:     Note [Bindings with closed types]
-ref    compiler/GHC/Tc/Types.hs:1466:47:     Note [Care with plugin imports]
-ref    compiler/GHC/Tc/Types/Constraint.hs:238:34:     Note [NonCanonical Semantics]
+ref    compiler/GHC/Tc/Types.hs:653:17:     Note [Generating fresh names for FFI wrappers]
+ref    compiler/GHC/Tc/Types.hs:702:33:     Note [Extra dependencies from .hs-boot files]
+ref    compiler/GHC/Tc/Types.hs:1160:28:     Note [Don't promote data constructors with non-equality contexts]
+ref    compiler/GHC/Tc/Types.hs:1236:36:     Note [Bindings with closed types]
+ref    compiler/GHC/Tc/Types.hs:1472:47:     Note [Care with plugin imports]
+ref    compiler/GHC/Tc/Types/Constraint.hs:254:34:     Note [NonCanonical Semantics]
 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/TcType.hs:529:7:     Note [TyVars and TcTyVars]
-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:619:17:     Note [Safe Haskell isSafeOverlap]
-ref    compiler/GHC/Types/Basic.hs:1359: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/Tc/Utils/TcMType.hs:750:7:     Note [Kind checking for GADTs]
+ref    compiler/GHC/Tc/Utils/TcType.hs:591:7:     Note [TyVars and TcTyVars]
+ref    compiler/GHC/ThToHs.hs:1788:11:     Note [Adding parens for splices]
+ref    compiler/GHC/ThToHs.hs:1799:3:     Note [Adding parens for splices]
+ref    compiler/GHC/Types/Basic.hs:624:17:     Note [Safe Haskell isSafeOverlap]
+ref    compiler/GHC/Types/Basic.hs:1370:7:     Note [Activation competition]
+ref    compiler/GHC/Types/Demand.hs:310:25:     Note [Preserving Boxity of results is rarely a win]
+ref    compiler/GHC/Types/Demand.hs:1142:4:     Note [Use one-shot information]
 ref    compiler/GHC/Types/Error.hs:358:3:     Note [Suppressing Messages]
 ref    compiler/GHC/Types/Error.hs:393:28:     Note [Suppressing Messages]
 ref    compiler/GHC/Types/Name/Occurrence.hs:301:4:     Note [Unique OccNames from Template Haskell]
 ref    compiler/GHC/Types/Unique.hs:78:25:     Note [Uniques-prelude - Uniques for wired-in Prelude things]
-ref    compiler/GHC/Unit/Module/Deps.hs:79:13:     Note [Structure of dep_boot_mods]
+ref    compiler/GHC/Unit/Module/Deps.hs:82:13:     Note [Structure of dep_boot_mods]
 ref    compiler/GHC/Utils/Monad.hs:391:34:     Note [multiShotIO]
-ref    compiler/Language/Haskell/Syntax/Binds.hs:226:31:     Note [fun_id in Match]
-ref    compiler/Language/Haskell/Syntax/Expr.hs:1561:32:     Note [Quasi-quote overview]
+ref    compiler/Language/Haskell/Syntax/Binds.hs:204:31:     Note [fun_id in Match]
+ref    compiler/Language/Haskell/Syntax/Expr.hs:1571:32:     Note [Quasi-quote overview]
 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    configure.ac:213: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:3646: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/ST.hs:139:7:     Note [Definition of runRW#]
+ref    ghc/GHCi/UI.hs:3648:25:     Note [ModBreaks.decls]
+ref    ghc/ghc.mk:57:6:     Note [Linking ghc-bin against threaded stage0 RTS]
+ref    hadrian/src/Expression.hs:134:30:     Note [Linking ghc-bin against threaded stage0 RTS]
+ref    libraries/base/GHC/ST.hs:134:7:     Note [Definition of runRW#]
 ref    linters/lint-notes/Notes.hs:32:29:     Note [" <> T.unpack x <> "]
 ref    linters/lint-notes/Notes.hs:69:22:     Note [...]
-ref    testsuite/config/ghc:212:10:     Note [WayFlags]
+ref    testsuite/config/ghc:243: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:263:2:     Note [WayFlags]
+ref    testsuite/mk/boilerplate.mk:267:2:     Note [WayFlags]
 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]


=====================================
testsuite/tests/rts/all.T
=====================================
@@ -368,7 +368,7 @@ test('T10296b', [only_ways(['threaded2'])], compile_and_run, [''])
 test('numa001', [ extra_run_opts('8'), unless(unregisterised(), extra_ways(['debug_numa'])) ]
                 , compile_and_run, [''])
 
-test('T12497', [ unless(opsys('mingw32'), skip)
+test('T12497', [ unless(opsys('mingw32'), skip), expect_broken(22694)
                ],
                makefile_test, ['T12497'])
 



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/02e1f7a104f7aae90da19bcc3e74f15cdd582d86...cc4e2482ca3e32308cbe5beb43c898a5bbe5e540

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/02e1f7a104f7aae90da19bcc3e74f15cdd582d86...cc4e2482ca3e32308cbe5beb43c898a5bbe5e540
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230412/a8877514/attachment-0001.html>


More information about the ghc-commits mailing list