If one of the uses of the value is a single edge PHINode, handle it.
Original:
%val = something <suspend> %p = PHINode [%val]
After Spill + Part13:
%val = something %slot = gep val.spill.slot store %val, %slot <suspend> %p = load %slot
Plus tiny fixes/changes:
- use correct index for coro.free in CoroCleanup
- fixup id parameter in coro.free to allow authoring coroutine in plain C with __builtins
Can't the FE do this?