Make raiseIO# produce topRes
authorDavid Feuer <david.feuer@gmail.com>
Thu, 9 Mar 2017 15:34:42 +0000 (10:34 -0500)
committerBen Gamari <ben@smart-cactus.org>
Thu, 9 Mar 2017 15:34:48 +0000 (10:34 -0500)
commit7b087aeba45a7a70a5553ef4c116ee67660423e8
tree7b34cfd8991c8cb73265c2ae2f9c1b61d2d99076
parent7b80168bc11ba1fa3ef7ebfcdf3b4d67f467b0dc
Make raiseIO# produce topRes

Make `raiseIO#` produce `topRes` instead of `ExnRes`. `ExnRes` leads to
demand analysis being too aggressive, IMO, allowing imprecise exceptions
produced by `throw` to replace exceptions thrown by `throwIO` that
would like to think of as precise.

This fixes that, but is certanly much more conservative than we would
ideally like. Let's see how bad it is.

Fixes Trac #13380

Reviewers: austin, bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3301
compiler/prelude/primops.txt.pp