<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/haskell.git, branch wip/backpack-errs</title>
<subtitle>gitlab.haskell.org: ghc/ghc.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/'/>
<entry>
<title>Rename `ms_hspp_file` to `ms_hspp_file_loc` and change its</title>
<updated>2021-10-21T12:28:34+00:00</updated>
<author>
<name>Zubin Duggal</name>
<email>zubin.duggal@gmail.com</email>
</author>
<published>2021-10-21T12:09:41+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=95b25a0fa66cb7eda4bc54ba3cce3d9fc73c8262'/>
<id>95b25a0fa66cb7eda4bc54ba3cce3d9fc73c8262</id>
<content type='text'>
type to a `RealSrcLoc` to accomodate backpack
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
type to a `RealSrcLoc` to accomodate backpack
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce 'PreprocessedFile' type to model backpack interface files.</title>
<updated>2021-10-19T12:24:45+00:00</updated>
<author>
<name>Zubin Duggal</name>
<email>zubin.duggal@gmail.com</email>
</author>
<published>2021-10-18T09:25:24+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=1c4078db07df370e5ba48268c980e3ff5145e111'/>
<id>1c4078db07df370e5ba48268c980e3ff5145e111</id>
<content type='text'>
We don't want to print out data from the interface file (#20489)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We don't want to print out data from the interface file (#20489)
</pre>
</div>
</content>
</entry>
<entry>
<title>Reject GADT pattern matches in arrow notation</title>
<updated>2021-10-09T08:46:05+00:00</updated>
<author>
<name>sheaf</name>
<email>sam.derbyshire@gmail.com</email>
</author>
<published>2021-10-06T16:22:28+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=31983ab4c65204ad0fd14aac4c00648f5fa6ad6b'/>
<id>31983ab4c65204ad0fd14aac4c00648f5fa6ad6b</id>
<content type='text'>
  Tickets #20469 and #20470 showed that the current
  implementation of arrows is not at all up to the task
  of supporting GADTs: GHC produces ill-scoped Core programs
  because it doesn't propagate the evidence introduced by a GADT
  pattern match.

  For the time being, we reject GADT pattern matches in arrow notation.
  Hopefully we are able to add proper support for GADTs in arrows
  in the future.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  Tickets #20469 and #20470 showed that the current
  implementation of arrows is not at all up to the task
  of supporting GADTs: GHC produces ill-scoped Core programs
  because it doesn't propagate the evidence introduced by a GADT
  pattern match.

  For the time being, we reject GADT pattern matches in arrow notation.
  Hopefully we are able to add proper support for GADTs in arrows
  in the future.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add defaulting plugins.</title>
<updated>2021-10-08T23:45:29+00:00</updated>
<author>
<name>Andrei Barbu</name>
<email>andrei@0xab.com</email>
</author>
<published>2021-08-25T07:20:51+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=a76409c758d8c7bd837dcc6c0b58f8cce656b4f1'/>
<id>a76409c758d8c7bd837dcc6c0b58f8cce656b4f1</id>
<content type='text'>
Like the built-in type defaulting rules these plugins can propose candidates
to resolve ambiguous type variables.

Machine learning and other large APIs like those for game engines introduce
new numeric types and other complex typed APIs. The built-in defaulting
mechanism isn't powerful enough to resolve ambiguous types in these cases forcing
users to specify minutia that they might not even know how to do. There is
an example defaulting plugin linked in the documentation. Applications include
defaulting the device a computation executes on, if a gradient should be
computed for a tensor, or the size of a tensor.

See https://github.com/ghc-proposals/ghc-proposals/pull/396 for details.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Like the built-in type defaulting rules these plugins can propose candidates
to resolve ambiguous type variables.

Machine learning and other large APIs like those for game engines introduce
new numeric types and other complex typed APIs. The built-in defaulting
mechanism isn't powerful enough to resolve ambiguous types in these cases forcing
users to specify minutia that they might not even know how to do. There is
an example defaulting plugin linked in the documentation. Applications include
defaulting the device a computation executes on, if a gradient should be
computed for a tensor, or the size of a tensor.

See https://github.com/ghc-proposals/ghc-proposals/pull/396 for details.
</pre>
</div>
</content>
</entry>
<entry>
<title>code gen: Disable dead code elimination when -finfo-table-map is enabled</title>
<updated>2021-10-08T22:11:43+00:00</updated>
<author>
<name>Matthew Pickering</name>
<email>matthewtpickering@gmail.com</email>
</author>
<published>2021-10-06T09:45:55+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=55a6377a5d55d6e6e93cf3d087f1e2d17fe7d3f3'/>
<id>55a6377a5d55d6e6e93cf3d087f1e2d17fe7d3f3</id>
<content type='text'>
It's important that when -finfo-table-map is enabled that we generate
IPE entries just for those info tables which are actually used. To this
end, the info tables which are used are collected just before code
generation starts and entries only created for those tables.

Not accounted for in this scheme was the dead code elimination in the
native code generator. When compiling GHC this optimisation removed an
info table which had an IPE entry which resulting in the following kind
of linker error:

```
/home/matt/ghc-with-debug/_build/stage1/lib/../lib/x86_64-linux-ghc-9.3.20210928/libHSCabal-3.5.0.0-ghc9.3.20210928.so: error: undefined reference to '.Lc5sS_info'
/home/matt/ghc-with-debug/_build/stage1/lib/../lib/x86_64-linux-ghc-9.3.20210928/libHSCabal-3.5.0.0-ghc9.3.20210928.so: error: undefined reference to '.Lc5sH_info'
/home/matt/ghc-with-debug/_build/stage1/lib/../lib/x86_64-linux-ghc-9.3.20210928/libHSCabal-3.5.0.0-ghc9.3.20210928.so: error: undefined reference to '.Lc5sm_info'
collect2: error: ld returned 1 exit status
`cc' failed in phase `Linker'. (Exit code: 1)
Development.Shake.cmd, system command failed
```

Unfortunately, by the time this optimisation happens the structure of
the CmmInfoTable has been lost, we only have the generated code for the
info table to play with so we can no longer just collect all the used
info tables and generate the IPE map.

This leaves us with two options:

1. Return a list of the names of the discarded info tables and then
   remove them from the map. This is awkward because we need to do code
   generation for the map as well.
2. Just disable this small code size optimisation when -finfo-table-map
   is enabled. The option produces very big object files anyway.

Option 2 is much easier to implement and means we don't have to thread
information around awkwardly. It's at the cost of slightly larger object
files (as dead code is not eliminated).

Disabling this optimisation allows an IPE build of GHC to complete
successfully.

Fixes #20428
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's important that when -finfo-table-map is enabled that we generate
IPE entries just for those info tables which are actually used. To this
end, the info tables which are used are collected just before code
generation starts and entries only created for those tables.

Not accounted for in this scheme was the dead code elimination in the
native code generator. When compiling GHC this optimisation removed an
info table which had an IPE entry which resulting in the following kind
of linker error:

```
/home/matt/ghc-with-debug/_build/stage1/lib/../lib/x86_64-linux-ghc-9.3.20210928/libHSCabal-3.5.0.0-ghc9.3.20210928.so: error: undefined reference to '.Lc5sS_info'
/home/matt/ghc-with-debug/_build/stage1/lib/../lib/x86_64-linux-ghc-9.3.20210928/libHSCabal-3.5.0.0-ghc9.3.20210928.so: error: undefined reference to '.Lc5sH_info'
/home/matt/ghc-with-debug/_build/stage1/lib/../lib/x86_64-linux-ghc-9.3.20210928/libHSCabal-3.5.0.0-ghc9.3.20210928.so: error: undefined reference to '.Lc5sm_info'
collect2: error: ld returned 1 exit status
`cc' failed in phase `Linker'. (Exit code: 1)
Development.Shake.cmd, system command failed
```

Unfortunately, by the time this optimisation happens the structure of
the CmmInfoTable has been lost, we only have the generated code for the
info table to play with so we can no longer just collect all the used
info tables and generate the IPE map.

This leaves us with two options:

1. Return a list of the names of the discarded info tables and then
   remove them from the map. This is awkward because we need to do code
   generation for the map as well.
2. Just disable this small code size optimisation when -finfo-table-map
   is enabled. The option produces very big object files anyway.

Option 2 is much easier to implement and means we don't have to thread
information around awkwardly. It's at the cost of slightly larger object
files (as dead code is not eliminated).

Disabling this optimisation allows an IPE build of GHC to complete
successfully.

Fixes #20428
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix -E -fno-code undesirable interactions #20439</title>
<updated>2021-10-08T22:11:08+00:00</updated>
<author>
<name>CarrieMY</name>
<email>carrie.xmy@gmail.com</email>
</author>
<published>2021-10-04T13:03:38+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=816d256114858d01c99503c10e3be86ecdb15173'/>
<id>816d256114858d01c99503c10e3be86ecdb15173</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Normalise output of T20199 test</title>
<updated>2021-10-08T22:10:31+00:00</updated>
<author>
<name>Matthew Pickering</name>
<email>matthewtpickering@gmail.com</email>
</author>
<published>2021-10-08T12:21:58+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=1f160cd9c82c8cd21fbc733dc18c86a2abe3459f'/>
<id>1f160cd9c82c8cd21fbc733dc18c86a2abe3459f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: Expect x86-darwin to pass</title>
<updated>2021-10-08T22:10:31+00:00</updated>
<author>
<name>Matthew Pickering</name>
<email>matthewtpickering@gmail.com</email>
</author>
<published>2021-10-04T11:33:20+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=e683887275135575a4dbdda9d76683b5d3d53fc8'/>
<id>e683887275135575a4dbdda9d76683b5d3d53fc8</id>
<content type='text'>
Closes #20013
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Closes #20013
</pre>
</div>
</content>
</entry>
<entry>
<title>ci: Remove BROKEN_TESTS for x86 darwin builds</title>
<updated>2021-10-08T22:10:31+00:00</updated>
<author>
<name>Matthew Pickering</name>
<email>matthewtpickering@gmail.com</email>
</author>
<published>2021-10-04T11:30:30+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=a37275a376f84e041d1cde96098f8999777971c6'/>
<id>a37275a376f84e041d1cde96098f8999777971c6</id>
<content type='text'>
The tests Capi_Ctype_001 Capi_Ctype_002 T12010 pass regularly on CI so
let's mark them unbroken and hopefully then we can fix #20013.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The tests Capi_Ctype_001 Capi_Ctype_002 T12010 pass regularly on CI so
let's mark them unbroken and hopefully then we can fix #20013.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix nonmoving gen label in gc stats report</title>
<updated>2021-10-08T22:09:56+00:00</updated>
<author>
<name>Teo Camarasu</name>
<email>teofilcamarasu@gmail.com</email>
</author>
<published>2021-10-02T18:01:16+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/haskell.git/commit/?id=374a718e75ac5172674c1a789e1de5bbbddc9711'/>
<id>374a718e75ac5172674c1a789e1de5bbbddc9711</id>
<content type='text'>
The current code assumes the non-moving generation is always
generation 1, but this isn't the case if the amount of generations
is greater than 2

Fixes #20461
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current code assumes the non-moving generation is always
generation 1, but this isn't the case if the amount of generations
is greater than 2

Fixes #20461
</pre>
</div>
</content>
</entry>
</feed>
