Simplify minusInteger in integer-gmp slightly
authorReid Barton <rwbarton@gmail.com>
Mon, 30 Jan 2017 16:59:28 +0000 (11:59 -0500)
committerBen Gamari <ben@smart-cactus.org>
Mon, 30 Jan 2017 19:02:34 +0000 (14:02 -0500)
commitf984bf2e1deedb4931c0c2d5b6b5128b8b154cb5
treedd2dfe2c3273c56df8c89f045df2f1556a3357d8
parent5f8e23444caf7a3d085cd8d97762dc3ed777c297
Simplify minusInteger in integer-gmp slightly

These two special cases were created in D2278 by mechanically
inlining negateInteger into plusInteger. They aren't needed
(the `minusInteger (S# x#) (S# y#)` case already handles all values
correctly), and they can never help by avoiding an allocation,
unlike the original special case in plusInteger, since we still
have to allocate the result.

Removing these special cases will save a couple comparisons and
conditional branches in the common case of subtracting two small
Integers.

Test Plan:
Existing test `plusMinusInteger` already tests
the values in question.

Reviewers: bgamari, goldfire, austin, hvr

Reviewed By: bgamari, hvr

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D3034
libraries/integer-gmp/src/GHC/Integer/Type.hs