Split stack alias class of CallEffects into inputs, actrec and outputs
Summary:
CallEffects is conflating three separate alias classes together, so split
the `stack` alias class into:
- `inputs` (arguments, unpack, generics): the callee reads them
- `actrec`: the instruction writes it, but the write is currently modeled via SpillFrame, so we pretend to read it
- `outputs` (inout): the callee writes it
- `kills`: this already exists, but was also part of the `stack`
This diff also fixes handling of `outputs`, allowing store-elim to move
NullUninit writes for inout to the catch.
It also provides sufficient enough granularity to kill SpillFrame.
Reviewed By: markw65
Differential Revision:
D17709363
fbshipit-source-id:
1c83dbd2a02143c280474b3a863099006f982062