Tag the FUN before making a PAP (#13767)
authorSimon Marlow <marlowsd@gmail.com>
Mon, 3 Jul 2017 20:54:00 +0000 (16:54 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 3 Jul 2017 22:58:11 +0000 (18:58 -0400)
commitf9c6d53fe997f1c560cda6f346f4b201711df37c
tree91e41eb282e50de75da718bb6940597d7974eeb0
parent1a9c3c44ef82803766a8db91a619393c43195ad3
Tag the FUN before making a PAP (#13767)

Pointers to FUNs are not guaranteed to be tagged in general, because
the compiler doesn't always know the arity of a FUN when it needs to
reference it, e.g. with -O0 when the function is in another module.

However, there's one case where we can put the correct tag on a FUN:
when it is referenced by a PAP, because when building the PAP we know
the arity and we can tag the pointer correctly.  The AutoApply code
does this, and the sanity checker checks it, but the interpreter did
not respect this invariant.  This patch fixes it.

Test Plan:
```
(cd ghc && make 2 GhcDebugged=YES)
./inplace/bin/ghc-stage2 --interpreter +RTS -DS
```

Reviewers: niteria, bgamari, austin, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13767

Differential Revision: https://phabricator.haskell.org/D3680
rts/Interpreter.c